1: 4
2: 4½
3: 4½
4: 4½
5: 4½
6: 4½
7: 5
8: 5
9: 5
10: 5
11: 5
12: 5
13: 5
14: 5
15: 5
16: 5
17: 5
18: 5
19: 5
20: 5
21: 5
22: 5
23: 5
24: 5
25: 5
26: 5
27: 5
28: 5
29: 5
30: 5
31: 5½
32: 5½
33: 5½
34: 5½
35: 5½
36: 6
1: red
2: orange
3: yellow
4: green
5: blue
6: violet
7: pink
8: brown
9: black
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: metallic
1: extremely small
2: unusually small
3: unusually small
4: unusually small
5: unusually small
6: unusually small
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: unusually large
32: unusually large
33: unusually large
34: unusually large
35: unusually large
36: extremely large
1: thick and short
2: thin and short
3: thick and long
4: thin and long
1: smooth
2: ridged like an earthworm
3: segmented like an insect
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: double
1: circle
2: circle
3: circle
4: circle
5: crescent
6: hourglass
7: irregularly
8: keyhole
9: oval
10: oval
11: slit
12: slit
13: slit
14: slit
15: square
16: string-of-pearls
17: triangle
18: triangle
19: wave
1: narrow
2: 
3: 
4: 
5: 
6: wide
1: brown
2: brown-yellow
3: gray
4: green
5: pinkish
6: pinkish
7: pinkish
8: purple-blue
9: purple-blue
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: mottled
11: mottled
12: shaded
1: pebbled
2: pebbled
3: pitted
4: plated
5: plated
6: scaled
7: smooth
8: smooth
9: warty
10: wrinkled
1: thick, pointed
2: thick, pointed
3: thick, pointed
4: thick, pointed
5: humanlike
6: humanlike
7: humanlike, fanged
8: thin, needle-like
9: thin, needle-like
10: vampire-bat-like
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: double-rowed
Built from branch 'tiddlywiki-com' at commit 2b41661721ace534b5f51ded3a5812c9d028ecd8 of https://github.com/Jermolene/TiddlyWiki5 at 2021-01-29 15:44:11 UTC
hide
fixed

[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/ObjectTag}!tag{$:/config/Manager/ExcludeObjectTag}subfilter{$:/config/Manager/Rarity!!tags}field:category[object]count[]]
[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/SpellTag}subfilter{$:/config/Manager/SpellTier!!tags}field:category[spell]count[]]

rarity
forward
tool


tier


magic item
hide
yes
Add category
Dice roller. Only use on text like "#d#±#"
Add tier
Tooltip link
ctrl-shift-C
ctrl-shift-X
ctrl-shift-D
[prefix[[]] [prefix[-]]
fixed
yes
tc-btn-invisible
show
disable
1
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/add-comment": {
            "title": "$:/core/images/add-comment",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
        },
        "$:/core/images/gitter": {
            "title": "$:/core/images/gitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
        },
        "$:/core/images/left-arrow": {
            "title": "$:/core/images/left-arrow",
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
        },
        "$:/core/images/linkify": {
            "title": "$:/core/images/linkify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
        },
        "$:/core/images/rotate-left": {
            "title": "$:/core/images/rotate-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
        },
        "$:/core/images/transcludify": {
            "title": "$:/core/images/transcludify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/up-arrow": {
            "title": "$:/core/images/up-arrow",
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "copy to clipboard"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "Copy this text to the clipboard"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/SidebarSearch/Hint": {
            "title": "$:/language/Buttons/SidebarSearch/Hint",
            "text": "Select the sidebar search field"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "wikilink"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "Wrap selection in square brackets"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "rotate left"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "Rotate image left by 90 degrees"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/ToggleSidebar/Hint": {
            "title": "$:/language/Buttons/ToggleSidebar/Hint",
            "text": "Toggle the sidebar visibility"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "transclusion"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "Wrap selection in curly brackets"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration"
        },
        "$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
            "text": "Default focus field for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "Title of new tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
            "text": "Tags for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/RemoveTags": {
            "title": "$:/language/ControlPanel/Basics/RemoveTags",
            "text": "Update to current format"
        },
        "$:/language/ControlPanel/Basics/RemoveTags/Hint": {
            "title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
            "text": "Update the tags configuration to the latest format"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LayoutSwitcher/Caption": {
            "title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
            "text": "Layout"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
            "title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
            "text": "delete this entry from the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
            "title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
            "text": "Show color names that are not part of the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/AlsoRequires": {
            "title": "$:/language/ControlPanel/Plugins/AlsoRequires",
            "text": "Also requires:"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Downgrade/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
            "text": "downgrade"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
            "title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
            "text": "(requires reload)"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Plugins/Update/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Update/Caption",
            "text": "update"
        },
        "$:/language/ControlPanel/Plugins/Updates/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Caption",
            "text": "Updates"
        },
        "$:/language/ControlPanel/Plugins/Updates/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Hint",
            "text": "Available updates to installed plugins"
        },
        "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
            "text": "Update <<update-count>> plugins"
        },
        "$:/language/ControlPanel/Plugins/SubPluginPrompt": {
            "title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
            "text": "With <<count>> sub-plugins available"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/GitService/Branch": {
            "title": "$:/language/ControlPanel/Saving/GitService/Branch",
            "text": "Target branch for saving"
        },
        "$:/language/ControlPanel/Saving/GitService/CommitMessage": {
            "title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
            "text": "Saved by TiddlyWiki"
        },
        "$:/language/ControlPanel/Saving/GitService/Description": {
            "title": "$:/language/ControlPanel/Saving/GitService/Description",
            "text": "These settings are only used when saving to <<service-name>>"
        },
        "$:/language/ControlPanel/Saving/GitService/Filename": {
            "title": "$:/language/ControlPanel/Saving/GitService/Filename",
            "text": "Filename of target file (e.g. `index.html`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Path": {
            "title": "$:/language/ControlPanel/Saving/GitService/Path",
            "text": "Path to target file (e.g. `/wiki/`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Repo": {
            "title": "$:/language/ControlPanel/Saving/GitService/Repo",
            "text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
        },
        "$:/language/ControlPanel/Saving/GitService/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
            "text": "Server API URL"
        },
        "$:/language/ControlPanel/Saving/GitService/UserName": {
            "title": "$:/language/ControlPanel/Saving/GitService/UserName",
            "text": "Username"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
            "text": "~GitHub Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
            "text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
            "text": "~GitLab Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
            "text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
            "text": "Gitea Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
            "text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
            "text": "~TiddlySpot Control Panel"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
            "text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "Permalink/permaview Mode"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "Choose how permalink/permaview is handled:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "Copy permalink/permaview URL to clipboard"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "Update address bar with permalink/permaview URL"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "Default More Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "Specify which More sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "Stylesheets"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "Expand All"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "Restore"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "Defines how requests are authenticated by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "Defines how individual URL patterns are handled by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/menubar-background": {
            "title": "$:/language/Docs/PaletteColours/menubar-background",
            "text": "Menu bar background"
        },
        "$:/language/Docs/PaletteColours/menubar-foreground": {
            "title": "$:/language/Docs/PaletteColours/menubar-foreground",
            "text": "Menu bar foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` element background"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` element text"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "field list"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "Show field list"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
            "text": "Add the new field to the tiddler"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
            "text": "add tag"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/ClearInput/Caption": {
            "title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
            "text": "clear input"
        },
        "$:/language/EditTemplate/Tags/ClearInput/Hint": {
            "title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
            "text": "Clear tag input"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following references to this tiddler will not be automatically updated:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hide-body": {
            "title": "$:/language/Docs/Fields/hide-body",
            "text": "The view template will hide bodies of tiddlers if set to: ''yes''"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/throttle.refresh": {
            "title": "$:/language/Docs/Fields/throttle.refresh",
            "text": "If present, throttles refreshes of this tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/toc-link": {
            "title": "$:/language/Docs/Fields/toc-link",
            "text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Docs/Fields/_is_skinny": {
            "title": "$:/language/Docs/Fields/_is_skinny",
            "text": "If present, indicates that the tiddler text field must be loaded from the server"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SessionTiddlers": {
            "title": "$:/language/Filters/SessionTiddlers",
            "text": "Tiddlers modified since the wiki was loaded"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/deletetiddlers": {
            "title": "$:/language/Help/deletetiddlers",
            "description": "Deletes a group of tiddlers",
            "text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "Import tiddlers from a file",
            "text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "Renders individual tiddlers to files",
            "text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "Saves individual raw tiddlers to files",
            "text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/savewikifolder": {
            "title": "$:/language/Help/savewikifolder",
            "description": "Saves a wiki to a new wiki folder",
            "text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
            "text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "Preview:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "Text"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "Text (Raw)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "Fields"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "Diff"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "Diff (Fields)"
        },
        "$:/language/Import/Listing/Rename/Tooltip": {
            "title": "$:/language/Import/Listing/Rename/Tooltip",
            "text": "Rename tiddler before importing"
        },
        "$:/language/Import/Listing/Rename/Prompt": {
            "title": "$:/language/Import/Listing/Rename/Prompt",
            "text": "Rename to:"
        },
        "$:/language/Import/Listing/Rename/ConfirmRename": {
            "title": "$:/language/Import/Listing/Rename/ConfirmRename",
            "text": "Rename tiddler"
        },
        "$:/language/Import/Listing/Rename/CancelRename": {
            "title": "$:/language/Import/Listing/Rename/CancelRename",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Rename/OverwriteWarning": {
            "title": "$:/language/Import/Listing/Rename/OverwriteWarning",
            "text": "A tiddler with this title already exists."
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin."
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>."
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler."
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler."
        },
        "$:/language/Import/Upgrader/System/Warning": {
            "title": "$:/language/Import/Upgrader/System/Warning",
            "text": "Core module tiddler."
        },
        "$:/language/Import/Upgrader/System/Alert": {
            "title": "$:/language/Import/Upgrader/System/Alert",
            "text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>."
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmAction": {
            "title": "$:/language/ConfirmAction",
            "text": "Do you wish to proceed?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> differences"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/FilterRunPrefix": {
            "title": "$:/language/Error/FilterRunPrefix",
            "text": "Filter Error: Unknown prefix for filter run"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/FormatFilterOperator": {
            "title": "$:/language/Error/FormatFilterOperator",
            "text": "Filter Error: Unknown suffix for the 'format' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/NetworkErrorAlert": {
            "title": "$:/language/Error/NetworkErrorAlert",
            "text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LayoutSwitcher/Description": {
            "title": "$:/language/LayoutSwitcher/Description",
            "text": "Open the layout switcher"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PageTemplate/Description": {
            "title": "$:/language/PageTemplate/Description",
            "text": "the default ~TiddlyWiki layout"
        },
        "$:/language/PageTemplate/Name": {
            "title": "$:/language/PageTemplate/Name",
            "text": "Default ~PageTemplate"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
            "title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
            "text": "Open the ~AdvancedSearch panel from within the sidebar search field"
        },
        "$:/language/Shortcuts/Input/Accept/Hint": {
            "title": "$:/language/Shortcuts/Input/Accept/Hint",
            "text": "Accept the selected item"
        },
        "$:/language/Shortcuts/Input/AcceptVariant/Hint": {
            "title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
            "text": "Accept the selected item (variant)"
        },
        "$:/language/Shortcuts/Input/Cancel/Hint": {
            "title": "$:/language/Shortcuts/Input/Cancel/Hint",
            "text": "Clear the input field"
        },
        "$:/language/Shortcuts/Input/Down/Hint": {
            "title": "$:/language/Shortcuts/Input/Down/Hint",
            "text": "Select the next item"
        },
        "$:/language/Shortcuts/Input/Tab-Left/Hint": {
            "title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
            "text": "Select the previous Tab"
        },
        "$:/language/Shortcuts/Input/Tab-Right/Hint": {
            "title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
            "text": "Select the next Tab"
        },
        "$:/language/Shortcuts/Input/Up/Hint": {
            "title": "$:/language/Shortcuts/Input/Up/Hint",
            "text": "Select the previous item"
        },
        "$:/language/Shortcuts/SidebarLayout/Hint": {
            "title": "$:/language/Shortcuts/SidebarLayout/Hint",
            "text": "Change the sidebar layout"
        },
        "$:/language/Switcher/Subtitle/theme": {
            "title": "$:/language/Switcher/Subtitle/theme",
            "text": "Switch Theme"
        },
        "$:/language/Switcher/Subtitle/layout": {
            "title": "$:/language/Switcher/Subtitle/layout",
            "text": "Switch Layout"
        },
        "$:/language/Switcher/Subtitle/language": {
            "title": "$:/language/Switcher/Subtitle/language",
            "text": "Switch Language"
        },
        "$:/language/Switcher/Subtitle/palette": {
            "title": "$:/language/Switcher/Subtitle/palette",
            "text": "Switch Palette"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Icons/None": {
            "title": "$:/language/TagManager/Icons/None",
            "text": "None"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "Journal\n"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "Copied to clipboard!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "Failed to copy to clipboard!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "Explorer"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "Editor font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "Backlinks"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "title": "$:/core/modules/commander.js",
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "title": "$:/core/modules/commands/build.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "title": "$:/core/modules/commands/clearpassword.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/deletetiddlers.js": {
            "title": "$:/core/modules/commands/deletetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "title": "$:/core/modules/commands/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "title": "$:/core/modules/commands/fetch.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tdata = [];\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        data.push(chunk);\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(Buffer.concat(data),type,options,url);\n\t\t        callback(null);\n\t        } else {\n\t        \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t        \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t        \t} else {\n\t\t        \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t        \t\t\n\t        \t}\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "title": "$:/core/modules/commands/help.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/import.js": {
            "title": "$:/core/modules/commands/import.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "title": "$:/core/modules/commands/init.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/listen.js": {
            "title": "$:/core/modules/commands/listen.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "title": "$:/core/modules/commands/load.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "title": "$:/core/modules/commands/makelibrary.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "title": "$:/core/modules/commands/output.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "title": "$:/core/modules/commands/password.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/render.js": {
            "title": "$:/core/modules/commands/render.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "title": "$:/core/modules/commands/rendertiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/save.js": {
            "title": "$:/core/modules/commands/save.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "title": "$:/core/modules/commands/savetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "title": "$:/core/modules/commands/savetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savewikifolder.js": {
            "title": "$:/core/modules/commands/savewikifolder.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type]  || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "title": "$:/core/modules/commands/server.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "title": "$:/core/modules/commands/setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "title": "$:/core/modules/commands/unpackplugin.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "title": "$:/core/modules/commands/verbose.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "title": "$:/core/modules/commands/version.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "title": "$:/core/modules/config.js",
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "title": "$:/core/modules/deserializers.js",
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "title": "$:/core/modules/editor/engines/framed.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\t\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "title": "$:/core/modules/editor/engines/simple.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "title": "$:/core/modules/editor/factory.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/rotate-left.js": {
            "title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/save-selection.js": {
            "title": "$:/core/modules/editor/operations/text/save-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filterrunprefixes/all.js": {
            "title": "$:/core/modules/filterrunprefixes/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/and.js": {
            "title": "$:/core/modules/filterrunprefixes/and.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/else.js": {
            "title": "$:/core/modules/filterrunprefixes/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/except.js": {
            "title": "$:/core/modules/filterrunprefixes/except.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/filter.js": {
            "title": "$:/core/modules/filterrunprefixes/filter.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/intersection.js": {
            "title": "$:/core/modules/filterrunprefixes/intersection.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/or.js": {
            "title": "$:/core/modules/filterrunprefixes/or.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filterrunprefixes/reduce.js": {
            "title": "$:/core/modules/filterrunprefixes/reduce.js",
            "text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" +  (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filterrunprefix"
        },
        "$:/core/modules/filters/addprefix.js": {
            "title": "$:/core/modules/filters/addprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "title": "$:/core/modules/filters/addsuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "title": "$:/core/modules/filters/after.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "title": "$:/core/modules/filters/all/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "title": "$:/core/modules/filters/all/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "title": "$:/core/modules/filters/all/orphans.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "title": "$:/core/modules/filters/all/shadows.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "title": "$:/core/modules/filters/all/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "title": "$:/core/modules/filters/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "title": "$:/core/modules/filters/backlinks.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "title": "$:/core/modules/filters/before.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "title": "$:/core/modules/filters/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/compare.js": {
            "title": "$:/core/modules/filters/compare.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/contains.js": {
            "title": "$:/core/modules/filters/contains.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "title": "$:/core/modules/filters/count.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "title": "$:/core/modules/filters/days.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/duplicateslugs.js": {
            "title": "$:/core/modules/filters/duplicateslugs.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "title": "$:/core/modules/filters/each.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "title": "$:/core/modules/filters/eachday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "title": "$:/core/modules/filters/editiondescription.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "title": "$:/core/modules/filters/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/else.js": {
            "title": "$:/core/modules/filters/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "title": "$:/core/modules/filters/enlist.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "title": "$:/core/modules/filters/field.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "title": "$:/core/modules/filters/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/filter.js": {
            "title": "$:/core/modules/filters/filter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/format/date.js": {
            "title": "$:/core/modules/filters/format/date.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "formatfilteroperator"
        },
        "$:/core/modules/filters/format/relativedate.js": {
            "title": "$:/core/modules/filters/format/relativedate.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "formatfilteroperator"
        },
        "$:/core/modules/filters/format.js": {
            "title": "$:/core/modules/filters/format.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "title": "$:/core/modules/filters/get.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "title": "$:/core/modules/filters/getindex.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getvariable.js": {
            "title": "$:/core/modules/filters/getvariable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "title": "$:/core/modules/filters/has.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "title": "$:/core/modules/filters/haschanged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "title": "$:/core/modules/filters/indexes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "title": "$:/core/modules/filters/insertbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/binary.js": {
            "title": "$:/core/modules/filters/is/binary.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/blank.js": {
            "title": "$:/core/modules/filters/is/blank.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "title": "$:/core/modules/filters/is/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/draft.js": {
            "title": "$:/core/modules/filters/is/draft.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "title": "$:/core/modules/filters/is/image.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "title": "$:/core/modules/filters/is/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "title": "$:/core/modules/filters/is/orphan.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "title": "$:/core/modules/filters/is/shadow.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "title": "$:/core/modules/filters/is/system.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "title": "$:/core/modules/filters/is/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "title": "$:/core/modules/filters/is/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/variable.js": {
            "title": "$:/core/modules/filters/is/variable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "title": "$:/core/modules/filters/is.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "title": "$:/core/modules/filters/limit.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "title": "$:/core/modules/filters/links.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "title": "$:/core/modules/filters/list.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "title": "$:/core/modules/filters/listed.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "title": "$:/core/modules/filters/listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/lookup.js": {
            "title": "$:/core/modules/filters/lookup.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/match.js": {
            "title": "$:/core/modules/filters/match.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/math.js": {
            "title": "$:/core/modules/filters/math.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "title": "$:/core/modules/filters/minlength.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "title": "$:/core/modules/filters/modules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "title": "$:/core/modules/filters/moduletypes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "title": "$:/core/modules/filters/next.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "title": "$:/core/modules/filters/prefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "title": "$:/core/modules/filters/previous.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/range.js": {
            "title": "$:/core/modules/filters/range.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/reduce.js": {
            "title": "$:/core/modules/filters/reduce.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" +  list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "title": "$:/core/modules/filters/regexp.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "title": "$:/core/modules/filters/removeprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "title": "$:/core/modules/filters/removesuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "title": "$:/core/modules/filters/sameday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "title": "$:/core/modules/filters/search.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "title": "$:/core/modules/filters/shadowsource.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/slugify.js": {
            "title": "$:/core/modules/filters/slugify.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "title": "$:/core/modules/filters/sort.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sortsub.js": {
            "title": "$:/core/modules/filters/sortsub.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "title": "$:/core/modules/filters/splitbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "title": "$:/core/modules/filters/storyviews.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/strings.js": {
            "title": "$:/core/modules/filters/strings.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subfilter.js": {
            "title": "$:/core/modules/filters/subfilter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subtiddlerfields.js": {
            "title": "$:/core/modules/filters/subtiddlerfields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "title": "$:/core/modules/filters/suffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "title": "$:/core/modules/filters/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "title": "$:/core/modules/filters/tagging.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "title": "$:/core/modules/filters/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/then.js": {
            "title": "$:/core/modules/filters/then.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "title": "$:/core/modules/filters/title.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "title": "$:/core/modules/filters/untagged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/variables.js": {
            "title": "$:/core/modules/filters/variables.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "title": "$:/core/modules/filters/x-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset =  (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "title": "$:/core/modules/filters.js",
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\n}\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operands = [],\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/indexers/backlinks-indexer.js": {
            "title": "$:/core/modules/indexers/backlinks-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser =  this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t    oldLinks = [],\n\t    self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/field-indexer.js": {
            "title": "$:/core/modules/indexers/field-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/tag-indexer.js": {
            "title": "$:/core/modules/indexers/tag-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/info/platform.js": {
            "title": "$:/core/modules/info/platform.js",
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "title": "$:/core/modules/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "title": "$:/core/modules/language.js",
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "title": "$:/core/modules/macros/changecount.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "title": "$:/core/modules/macros/contrastcolour.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "title": "$:/core/modules/macros/jsontiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "title": "$:/core/modules/macros/makedatauri.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "title": "$:/core/modules/macros/now.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "title": "$:/core/modules/macros/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "title": "$:/core/modules/macros/resolvepath.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/unusedtitle.js": {
            "title": "$:/core/modules/macros/unusedtitle.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "title": "$:/core/modules/macros/version.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "title": "$:/core/modules/parsers/audioparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/binaryparser.js": {
            "title": "$:/core/modules/parsers/binaryparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "title": "$:/core/modules/parsers/csvparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "title": "$:/core/modules/parsers/htmlparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "title": "$:/core/modules/parsers/imageparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "title": "$:/core/modules/utils/parseutils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "title": "$:/core/modules/parsers/pdfparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "title": "$:/core/modules/parsers/textparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "title": "$:/core/modules/parsers/videoparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/import.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/import.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "title": "$:/core/modules/pluginswitcher.js",
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "title": "$:/core/modules/saver-handler.js",
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "title": "$:/core/modules/savers/andtidwiki.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t    link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "title": "$:/core/modules/savers/beaker.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/custom.js": {
            "title": "$:/core/modules/savers/custom.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t//   Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "title": "$:/core/modules/savers/download.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "title": "$:/core/modules/savers/fsosaver.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitea.js": {
            "title": "$:/core/modules/savers/gitea.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/github.js": {
            "title": "$:/core/modules/savers/github.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitlab.js": {
            "title": "$:/core/modules/savers/gitlab.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/hyperdrive.js": {
            "title": "$:/core/modules/savers/hyperdrive.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "title": "$:/core/modules/savers/manualdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "title": "$:/core/modules/savers/msdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "title": "$:/core/modules/savers/put.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "title": "$:/core/modules/savers/tiddlyie.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "title": "$:/core/modules/savers/twedit.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "title": "$:/core/modules/savers/upload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/server/authenticators/basic.js": {
            "title": "$:/core/modules/server/authenticators/basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/authenticators/header.js": {
            "title": "$:/core/modules/server/authenticators/header.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/routes/delete-tiddler.js": {
            "title": "$:/core/modules/server/routes/delete-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-favicon.js": {
            "title": "$:/core/modules/server/routes/get-favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-file.js": {
            "title": "$:/core/modules/server/routes/get-file.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-index.js": {
            "title": "$:/core/modules/server/routes/get-index.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-login-basic.js": {
            "title": "$:/core/modules/server/routes/get-login-basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-status.js": {
            "title": "$:/core/modules/server/routes/get-status.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler-html.js": {
            "title": "$:/core/modules/server/routes/get-tiddler-html.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler.js": {
            "title": "$:/core/modules/server/routes/get-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddlers-json.js": {
            "title": "$:/core/modules/server/routes/get-tiddlers-json.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/put-tiddler.js": {
            "title": "$:/core/modules/server/routes/put-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/server.js": {
            "title": "$:/core/modules/server/server.js",
            "text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/browser-messaging.js": {
            "title": "$:/core/modules/browser-messaging.js",
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "title": "$:/core/modules/startup/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/CSSescape.js": {
            "title": "$:/core/modules/startup/CSSescape.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "title": "$:/core/modules/startup/favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "title": "$:/core/modules/startup/info.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "title": "$:/core/modules/startup/load-modules.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "title": "$:/core/modules/startup/password.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/plugins.js": {
            "title": "$:/core/modules/startup/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "title": "$:/core/modules/startup/render.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget, recursionMarker: \"no\"});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n   \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "title": "$:/core/modules/startup/rootwidget.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\t\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard  mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "title": "$:/core/modules/startup.js",
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "title": "$:/core/modules/startup/story.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "title": "$:/core/modules/startup/windows.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t    srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "title": "$:/core/modules/story.js",
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "title": "$:/core/modules/storyviews/classic.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "title": "$:/core/modules/storyviews/pop.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "title": "$:/core/modules/storyviews/zoomin.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "title": "$:/core/modules/syncer.js",
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\" ? true : false);\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "title": "$:/core/modules/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "title": "$:/core/modules/upgraders/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "title": "$:/core/modules/upgraders/system.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
            "text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/crypto.js": {
            "title": "$:/core/modules/utils/crypto.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/csv.js": {
            "title": "$:/core/modules/utils/csv.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
            "text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&amp;\").replace(d,\"&lt;\").replace(e,\"&gt;\").replace(f,\"&para;<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "title": "$:/core/modules/utils/dom/animator.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "title": "$:/core/modules/utils/dom/browser.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "title": "$:/core/modules/utils/dom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "title": "$:/core/modules/utils/dom/http.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "title": "$:/core/modules/utils/dom/modal.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "title": "$:/core/modules/utils/dom/notifier.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "title": "$:/core/modules/utils/dom/popup.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n        \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "title": "$:/core/modules/utils/dom/scroller.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t    srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "title": "$:/core/modules/utils/edition-info.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "title": "$:/core/modules/utils/fakedom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "title": "$:/core/modules/utils/filesystem.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/linkedlist.js": {
            "title": "$:/core/modules/utils/linkedlist.js",
            "text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\tthis.index = Object.create(null);\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = this;\n\tthis.prev = this;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_removeOne(this,value);\n\t}\n};\n\nLinkedList.prototype.push = function(/* values */) {\n\tfor(var i = 0; i < arguments.length; i++) {\n\t\tvar value = arguments[i];\n\t\tvar node = {value: value};\n\t\tvar preexistingNode = this.index[value];\n\t\t_linkToEnd(this,node);\n\t\tif(preexistingNode) {\n\t\t\t// We want to keep pointing to the first instance, but we want\n\t\t\t// to have that instance (or chain of instances) point to the\n\t\t\t// new one.\n\t\t\twhile (preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\tpreexistingNode.copy = node;\n\t\t} else {\n\t\t\tthis.index[value] = node;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tthis.push.apply(this,value);\n\t} else {\n\t\tvar node = _removeOne(this,value);\n\t\tif(!node) {\n\t\t\tnode = {value: value};\n\t\t\tthis.index[value] = node;\n\t\t} else {\n\t\t\t// Put this node at the end of the copy chain.\n\t\t\tvar preexistingNode = node;\n\t\t\twhile(preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\t// The order of these three statements is important,\n\t\t\t// because sometimes preexistingNode == node.\n\t\t\tpreexistingNode.copy = node;\n\t\t\tthis.index[value] = node.copy;\n\t\t\tnode.copy = undefined;\n\t\t}\n\t\t_linkToEnd(this,node);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\tcallback(ptr.value);\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\toutput.push(ptr.value);\n\t}\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar node = list.index[value];\n\tif(node) {\n\t\tnode.prev.next = node.next;\n\t\tnode.next.prev = node.prev;\n\t\tlist.length -= 1;\n\t\t// Point index to the next instance of the same value, maybe nothing.\n\t\tlist.index[value] = node.copy;\n\t}\n\treturn node;\n};\n\nfunction _linkToEnd(list,node) {\n\t// Sticks the given node onto the end of the list.\n\tlist.prev.next = node;\n\tnode.prev = list.prev;\n\tlist.prev = node;\n\tnode.next = list;\n\tlist.length += 1;\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
            "module-type": "utils",
            "type": "application/javascript"
        },
        "$:/core/modules/utils/logger.js": {
            "title": "$:/core/modules/utils/logger.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "title": "$:/core/modules/utils/parsetree.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "title": "$:/core/modules/utils/performance.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "title": "$:/core/modules/utils/pluginmaker.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/transliterate.js": {
            "title": "$:/core/modules/utils/transliterate.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "title": "$:/core/modules/utils/utils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date),4);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call(null,match);\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s, rawUnicode) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(regex, exports.escape);   // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/\\x08/g, '\\\\b')           // backspace\n\t\t.replace(/\\x0c/g, '\\\\f')           // formfeed\n\t\t.replace(/\\t/g, '\\\\t')             // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-confirm.js": {
            "title": "$:/core/modules/widgets/action-confirm.js",
            "text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "title": "$:/core/modules/widgets/action-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-log.js": {
            "title": "$:/core/modules/widgets/action-log.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "title": "$:/core/modules/widgets/action-navigate.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-popup.js": {
            "title": "$:/core/modules/widgets/action-popup.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "title": "$:/core/modules/widgets/action-setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "title": "$:/core/modules/widgets/browse.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "title": "$:/core/modules/widgets/button.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = \"button\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\n}\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "title": "$:/core/modules/widgets/checkbox.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "title": "$:/core/modules/widgets/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "title": "$:/core/modules/widgets/count.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/diff-text.js": {
            "title": "$:/core/modules/widgets/diff-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "title": "$:/core/modules/widgets/draggable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "title": "$:/core/modules/widgets/droppable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "title": "$:/core/modules/widgets/dropzone.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "title": "$:/core/modules/widgets/edit-binary.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "title": "$:/core/modules/widgets/edit-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "title": "$:/core/modules/widgets/edit.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "title": "$:/core/modules/widgets/element.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "title": "$:/core/modules/widgets/encrypt.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "title": "$:/core/modules/widgets/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/eventcatcher.js": {
            "title": "$:/core/modules/widgets/eventcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent handler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "title": "$:/core/modules/widgets/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "title": "$:/core/modules/widgets/image.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "title": "$:/core/modules/widgets/importvariables.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "title": "$:/core/modules/widgets/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "title": "$:/core/modules/widgets/link.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "title": "$:/core/modules/widgets/list.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/log.js": {
            "title": "$:/core/modules/widgets/log.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
            "type": "application/javascript",
            "module-type": "widget-subclass"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "title": "$:/core/modules/widgets/macrocall.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "title": "$:/core/modules/widgets/navigator.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t\tnewFields[\"suppressed-\" + title] = \"yes\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\");  \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "title": "$:/core/modules/widgets/password.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/qualify.js": {
            "title": "$:/core/modules/widgets/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "title": "$:/core/modules/widgets/radio.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/range.js": {
            "title": "$:/core/modules/widgets/range.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\",   handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\",    handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\",     handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) {  // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "title": "$:/core/modules/widgets/raw.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "title": "$:/core/modules/widgets/reveal.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t    defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "title": "$:/core/modules/widgets/scrollable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "title": "$:/core/modules/widgets/select.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "title": "$:/core/modules/widgets/set.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "title": "$:/core/modules/widgets/text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "title": "$:/core/modules/widgets/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "title": "$:/core/modules/widgets/transclude.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "title": "$:/core/modules/widgets/vars.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "title": "$:/core/modules/widgets/view.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "title": "$:/core/modules/widgets/widget.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning  that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "title": "$:/core/modules/widgets/wikify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "title": "$:/core/modules/wiki-bulkops.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "title": "$:/core/modules/wiki.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t//         indexOf unless we have a new\n\t\t\t\t\t//         position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\")                                       // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\")                                 // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\")                                     // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\")                                         // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\");                                        // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/CupertinoDark": {
            "title": "$:/palettes/CupertinoDark",
            "tags": "$:/tags/Palette",
            "name": "Cupertino Dark",
            "description": "A macOS inspired dark palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
        },
        "$:/palettes/DarkPhotos": {
            "title": "$:/palettes/DarkPhotos",
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DesertSand": {
            "title": "$:/palettes/DesertSand",
            "tags": "$:/tags/Palette",
            "name": "Desert Sand",
            "description": "A desert sand palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #E9E0C7\ndropdown-tab-background: #BAB29C\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"
        },
        "$:/palettes/GruvboxDark": {
            "title": "$:/palettes/GruvboxDark",
            "name": "Gruvbox Dark",
            "description": "Retro groove color scheme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "https://github.com/morhetz/gruvbox",
            "text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
        },
        "$:/palettes/Nord": {
            "title": "$:/palettes/Nord",
            "name": "Nord",
            "description": "An arctic, north-bluish color palette.",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
            "text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarizedDark": {
            "title": "$:/palettes/SolarizedDark",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision dark colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedDark",
            "text": "alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"
        },
        "$:/palettes/SolarizedLight": {
            "title": "$:/palettes/SolarizedLight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedLight",
            "text": "alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"
        },
        "$:/palettes/SpartanDay": {
            "title": "$:/palettes/SpartanDay",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Cold, spartan day colors",
            "name": "Spartan Day",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
        },
        "$:/palettes/SpartanNight": {
            "title": "$:/palettes/SpartanNight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Dark spartan colors",
            "name": "Spartan Night",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
        },
        "$:/palettes/Twilight": {
            "title": "$:/palettes/Twilight",
            "tags": "$:/tags/Palette",
            "author": "Thomas Elmiger",
            "type": "application/x-tiddler-dictionary",
            "name": "Twilight",
            "description": "Delightful, soft darkness.",
            "text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-raw": {
            "title": "$:/core/templates/canonical-uri-external-raw",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "condition": "[<count>compare:lte[1]]",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
        },
        "$:/core/save/all-external-js": {
            "title": "$:/core/save/all-external-js",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
        },
        "$:/core/templates/tiddlywiki5.js": {
            "title": "$:/core/templates/tiddlywiki5.js",
            "text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
        },
        "$:/core/templates/tiddlywiki5.js/tiddlers": {
            "title": "$:/core/templates/tiddlywiki5.js/tiddlers",
            "text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
        },
        "$:/core/templates/tiddlywiki5-external-js.html": {
            "title": "$:/core/templates/tiddlywiki5-external-js.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
        },
        "$:/core/templates/html-div-skinny-tiddler": {
            "title": "$:/core/templates/html-div-skinny-tiddler",
            "text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/server/static.sidebar.wikitext": {
            "title": "$:/core/templates/server/static.sidebar.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
        },
        "$:/core/templates/server/static.tiddler.html": {
            "title": "$:/core/templates/server/static.tiddler.html",
            "text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
        },
        "$:/core/templates/server/static.tiddler.wikitext": {
            "title": "$:/core/templates/server/static.tiddler.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/Actions/new-image": {
            "title": "$:/core/ui/Actions/new-image",
            "tags": "$:/tags/Actions",
            "description": "create a new image tiddler",
            "text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-journal": {
            "title": "$:/core/ui/Actions/new-journal",
            "tags": "$:/tags/Actions",
            "description": "create a new journal tiddler",
            "text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-tiddler": {
            "title": "$:/core/ui/Actions/new-tiddler",
            "tags": "$:/tags/Actions",
            "description": "create a new empty tiddler",
            "text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
            "text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>>  filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "first-search-filter": "[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]",
            "text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Updates": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
            "caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
            "text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"&#91;&#91;<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/GitHub": {
            "title": "$:/core/ui/ControlPanel/Saving/GitHub",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/GitLab": {
            "title": "$:/core/ui/ControlPanel/Saving/GitLab",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
        },
        "$:/core/ui/ControlPanel/Saving/Gitea": {
            "title": "$:/core/ui/ControlPanel/Saving/Gitea",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Stylesheets": {
            "title": "$:/core/ui/ControlPanel/Stylesheets",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
            "second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-current": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from current",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from shadow (if any)",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/state/showeditpreview": {
            "title": "$:/state/showeditpreview",
            "text": "no"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n  tabindex={{$:/config/EditTabIndex}}\n  focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n  cancelPopups=\"yes\"\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "first-search-filter": "[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/linkify": {
            "title": "$:/core/ui/EditorToolbar/linkify",
            "caption": "{{$:/language/Buttons/Linkify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Linkify/Hint}}",
            "icon": "$:/core/images/linkify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((linkify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/rotate-left": {
            "title": "$:/core/ui/EditorToolbar/rotate-left",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/rotate-left",
            "caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
            "description": "{{$:/language/Buttons/RotateLeft/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/transcludify": {
            "title": "$:/core/ui/EditorToolbar/transcludify",
            "caption": "{{$:/language/Buttons/Transcludify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Transcludify/Hint}}",
            "icon": "$:/core/images/transcludify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((transcludify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/SessionTiddlers": {
            "title": "$:/core/Filters/SessionTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[haschanged[]]",
            "description": "{{$:/language/Filters/SessionTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>>  default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button  class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button  class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Diff": {
            "title": "$:/core/ui/ImportPreviews/Diff",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Diff}}",
            "text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
        },
        "$:/core/ui/ImportPreviews/DiffFields": {
            "title": "$:/core/ui/ImportPreviews/DiffFields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
            "text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
        },
        "$:/core/ui/ImportPreviews/Fields": {
            "title": "$:/core/ui/ImportPreviews/Fields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Fields}}",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Text": {
            "title": "$:/core/ui/ImportPreviews/Text",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Text}}",
            "text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
        },
        "$:/core/ui/ImportPreviews/TextRaw": {
            "title": "$:/core/ui/ImportPreviews/TextRaw",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
            "text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
        },
        "$:/core/ui/KeyboardShortcuts/advanced-search": {
            "title": "$:/core/ui/KeyboardShortcuts/advanced-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((advanced-search))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
            "title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((change-sidebar-layout))",
            "text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-image": {
            "title": "$:/core/ui/KeyboardShortcuts/new-image",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-image))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-journal": {
            "title": "$:/core/ui/KeyboardShortcuts/new-journal",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-journal))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-tiddler": {
            "title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-tiddler))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/save-wiki": {
            "title": "$:/core/ui/KeyboardShortcuts/save-wiki",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((save-wiki))",
            "text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
        },
        "$:/core/ui/KeyboardShortcuts/sidebar-search": {
            "title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((sidebar-search))",
            "text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
        },
        "$:/core/ui/KeyboardShortcuts/switcher": {
            "title": "$:/core/ui/KeyboardShortcuts/switcher",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((layout-switcher))",
            "text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
        },
        "$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
            "title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((toggle-sidebar))",
            "text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
        },
        "$:/snippets/LayoutSwitcher": {
            "title": "$:/snippets/LayoutSwitcher",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
            "text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Explorer": {
            "title": "$:/core/ui/MoreSideBar/Explorer",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Explorer/Caption}}",
            "text": "<<tree \"$:/\">>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/drafts": {
            "title": "$:/core/ui/PageTemplate/drafts",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"  tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "name": "{{$:/language/PageTemplate/Name}}",
            "description": "{{$:/language/PageTemplate/Description}}",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
        },
        "$:/PaletteManager": {
            "title": "$:/PaletteManager",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
        },
        "$:/core/ui/RootTemplate": {
            "title": "$:/core/ui/RootTemplate",
            "text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
        },
        "$:/core/ui/SideBarSegments/page-controls": {
            "title": "$:/core/ui/SideBarSegments/page-controls",
            "tags": "$:/tags/SideBarSegment",
            "text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
        },
        "$:/core/ui/SideBarSegments/search": {
            "title": "$:/core/ui/SideBarSegments/search",
            "tags": "$:/tags/SideBarSegment",
            "text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{  [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-subtitle": {
            "title": "$:/core/ui/SideBarSegments/site-subtitle",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-title": {
            "title": "$:/core/ui/SideBarSegments/site-title",
            "tags": "$:/tags/SideBarSegment",
            "text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
        },
        "$:/core/ui/SideBarSegments/tabs": {
            "title": "$:/core/ui/SideBarSegments/tabs",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
        },
        "$:/core/ui/SwitcherModal": {
            "title": "$:/core/ui/SwitcherModal",
            "subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
            "class": "tc-modal-centered",
            "text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagPickerTagTemplate": {
            "title": "$:/core/ui/TagPickerTagTemplate",
            "text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoFocus": {
            "title": "$:/config/AutoFocus",
            "text": "title"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultMoreSidebarTab": {
            "title": "$:/config/DefaultMoreSidebarTab",
            "text": "$:/core/ui/MoreSideBar/Tags"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditMode/fieldname-filter": {
            "title": "$:/config/EditMode/fieldname-filter",
            "first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
            "second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
        },
        "$:/config/EditTabIndex": {
            "title": "$:/config/EditTabIndex",
            "text": "1\n"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/webp": {
            "title": "$:/config/EditorTypeMappings/image/webp",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heic": {
            "title": "$:/config/EditorTypeMappings/image/heic",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heif": {
            "title": "$:/config/EditorTypeMappings/image/heif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/NewImageType": {
            "title": "$:/config/NewImageType",
            "text": "jpeg"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "https://tiddlywiki.com/library/v5.1.23/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/RegisterPluginType/plugin": {
            "title": "$:/config/RegisterPluginType/plugin",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/theme": {
            "title": "$:/config/RegisterPluginType/theme",
            "text": "no"
        },
        "$:/config/RegisterPluginType/language": {
            "title": "$:/config/RegisterPluginType/language",
            "text": "no"
        },
        "$:/config/RegisterPluginType/info": {
            "title": "$:/config/RegisterPluginType/info",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/import": {
            "title": "$:/config/RegisterPluginType/import",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
            "title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
            "text": "yes"
        },
        "$:/config/ShortcutInfo/add-field": {
            "title": "$:/config/ShortcutInfo/add-field",
            "text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search": {
            "title": "$:/config/ShortcutInfo/advanced-search",
            "text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search-sidebar": {
            "title": "$:/config/ShortcutInfo/advanced-search-sidebar",
            "text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/change-sidebar-layout": {
            "title": "$:/config/ShortcutInfo/change-sidebar-layout",
            "text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
        },
        "$:/config/ShortcutInfo/delete-field": {
            "title": "$:/config/ShortcutInfo/delete-field",
            "text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/input-accept": {
            "title": "$:/config/ShortcutInfo/input-accept",
            "text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
        },
        "$:/config/ShortcutInfo/input-accept-variant": {
            "title": "$:/config/ShortcutInfo/input-accept-variant",
            "text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
        },
        "$:/config/ShortcutInfo/input-cancel": {
            "title": "$:/config/ShortcutInfo/input-cancel",
            "text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/input-down": {
            "title": "$:/config/ShortcutInfo/input-down",
            "text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
        },
        "$:/config/ShortcutInfo/input-tab-left": {
            "title": "$:/config/ShortcutInfo/input-tab-left",
            "text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
        },
        "$:/config/ShortcutInfo/input-tab-right": {
            "title": "$:/config/ShortcutInfo/input-tab-right",
            "text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
        },
        "$:/config/ShortcutInfo/input-up": {
            "title": "$:/config/ShortcutInfo/input-up",
            "text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/layout-switcher": {
            "title": "$:/config/ShortcutInfo/layout-switcher",
            "text": "{{$:/language/LayoutSwitcher/Description}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/linkify": {
            "title": "$:/config/ShortcutInfo/linkify",
            "text": "{{$:/language/Buttons/Linkify/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/new-image": {
            "title": "$:/config/ShortcutInfo/new-image",
            "text": "{{$:/language/Buttons/NewImage/Hint}}"
        },
        "$:/config/ShortcutInfo/new-journal": {
            "title": "$:/config/ShortcutInfo/new-journal",
            "text": "{{$:/language/Buttons/NewJournal/Hint}}"
        },
        "$:/config/ShortcutInfo/new-tiddler": {
            "title": "$:/config/ShortcutInfo/new-tiddler",
            "text": "{{$:/language/Buttons/NewTiddler/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/save-wiki": {
            "title": "$:/config/ShortcutInfo/save-wiki",
            "text": "{{$:/language/Buttons/SaveWiki/Hint}}"
        },
        "$:/config/ShortcutInfo/sidebar-search": {
            "title": "$:/config/ShortcutInfo/sidebar-search",
            "text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/toggle-sidebar": {
            "title": "$:/config/ShortcutInfo/toggle-sidebar",
            "text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
        },
        "$:/config/ShortcutInfo/transcludify": {
            "title": "$:/config/ShortcutInfo/transcludify",
            "text": "{{$:/language/Buttons/Transcludify/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SwitcherTargets/layout": {
            "title": "$:/config/SwitcherTargets/layout",
            "text": "$:/snippets/LayoutSwitcher"
        },
        "$:/config/SwitcherTargets/language": {
            "title": "$:/config/SwitcherTargets/language",
            "text": "$:/snippets/languageswitcher"
        },
        "$:/config/SwitcherTargets/palette": {
            "title": "$:/config/SwitcherTargets/palette",
            "text": "$:/core/ui/ControlPanel/Palette"
        },
        "$:/config/SwitcherTargets/theme": {
            "title": "$:/config/SwitcherTargets/theme",
            "text": "$:/core/ui/ControlPanel/Theme"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
        },
        "$:/config/SyncSystemTiddlersFromServer": {
            "title": "$:/config/SyncSystemTiddlersFromServer",
            "text": "no"
        },
        "$:/config/Tags/MinLength": {
            "title": "$:/config/Tags/MinLength",
            "text": "0"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/input-tab-left": {
            "title": "$:/config/shortcuts-mac/input-tab-left",
            "text": "ctrl-Left"
        },
        "$:/config/shortcuts-mac/input-tab-right": {
            "title": "$:/config/shortcuts-mac/input-tab-right",
            "text": "ctrl-Right"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-mac/new-image": {
            "title": "$:/config/shortcuts-mac/new-image",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-mac/new-journal": {
            "title": "$:/config/shortcuts-mac/new-journal",
            "text": "ctrl-J"
        },
        "$:/config/shortcuts-mac/new-tiddler": {
            "title": "$:/config/shortcuts-mac/new-tiddler",
            "text": "ctrl-N"
        },
        "$:/config/shortcuts-mac/save-wiki": {
            "title": "$:/config/shortcuts-mac/save-wiki",
            "text": "meta-S"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts-not-mac/new-image": {
            "title": "$:/config/shortcuts-not-mac/new-image",
            "text": "alt-I"
        },
        "$:/config/shortcuts-not-mac/new-journal": {
            "title": "$:/config/shortcuts-not-mac/new-journal",
            "text": "alt-J"
        },
        "$:/config/shortcuts-not-mac/new-tiddler": {
            "title": "$:/config/shortcuts-not-mac/new-tiddler",
            "text": "alt-N"
        },
        "$:/config/shortcuts/add-field": {
            "title": "$:/config/shortcuts/add-field",
            "text": "enter"
        },
        "$:/config/shortcuts/advanced-search": {
            "title": "$:/config/shortcuts/advanced-search",
            "text": "ctrl-shift-A"
        },
        "$:/config/shortcuts/advanced-search-sidebar": {
            "title": "$:/config/shortcuts/advanced-search-sidebar",
            "text": "alt-Enter"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/change-sidebar-layout": {
            "title": "$:/config/shortcuts/change-sidebar-layout",
            "text": "shift-alt-Down"
        },
        "$:/config/shortcuts/delete-field": {
            "title": "$:/config/shortcuts/delete-field",
            "text": "shift-alt-D"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/sidebar-search": {
            "title": "$:/config/shortcuts/sidebar-search",
            "text": "ctrl-shift-F"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/input-accept": {
            "title": "$:/config/shortcuts/input-accept",
            "text": "Enter"
        },
        "$:/config/shortcuts/input-accept-variant": {
            "title": "$:/config/shortcuts/input-accept-variant",
            "text": "ctrl-Enter"
        },
        "$:/config/shortcuts/input-cancel": {
            "title": "$:/config/shortcuts/input-cancel",
            "text": "Escape"
        },
        "$:/config/shortcuts/input-down": {
            "title": "$:/config/shortcuts/input-down",
            "text": "Down"
        },
        "$:/config/shortcuts/input-tab-left": {
            "title": "$:/config/shortcuts/input-tab-left",
            "text": "alt-Left"
        },
        "$:/config/shortcuts/input-tab-right": {
            "title": "$:/config/shortcuts/input-tab-right",
            "text": "alt-Right"
        },
        "$:/config/shortcuts/input-up": {
            "title": "$:/config/shortcuts/input-up",
            "text": "Up"
        },
        "$:/config/shortcuts/layout-switcher": {
            "title": "$:/config/shortcuts/layout-switcher",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/linkify": {
            "title": "$:/config/shortcuts/linkify",
            "text": "alt-shift-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/save-wiki": {
            "title": "$:/config/shortcuts/save-wiki",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/shortcuts/toggle-sidebar": {
            "title": "$:/config/shortcuts/toggle-sidebar",
            "text": "alt-shift-S"
        },
        "$:/config/shortcuts/transcludify": {
            "title": "$:/config/shortcuts/transcludify",
            "text": "alt-shift-T"
        },
        "$:/config/ui/EditTemplate": {
            "title": "$:/config/ui/EditTemplate",
            "text": "$:/core/ui/EditTemplate"
        },
        "$:/config/ui/ViewTemplate": {
            "title": "$:/config/ui/ViewTemplate",
            "text": "$:/core/ui/ViewTemplate"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/copy-to-clipboard": {
            "title": "$:/core/macros/copy-to-clipboard",
            "tags": "$:/tags/Macro",
            "text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
        },
        "$:/core/macros/diff": {
            "title": "$:/core/macros/diff",
            "tags": "$:/tags/Macro",
            "text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
        },
        "$:/core/macros/dumpvariables": {
            "title": "$:/core/macros/dumpvariables",
            "tags": "$:/tags/Macro",
            "text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "created": "20170715180840889",
            "modified": "20170715180914005",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/keyboard-driven-input": {
            "title": "$:/core/macros/keyboard-driven-input",
            "tags": "$:/tags/Macro",
            "text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
            "second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
            "text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "title": "$:/core/macros/timeline",
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n    <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n      <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n        <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n          <li class=<<toc-item-class>>>\n            <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n              <<toc-caption>>\n            </$list>\n            <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n          </li>\n        </$set>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\"  tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n    <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n    </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n    <li class=<<toc-item-class>>>\n      <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n          <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-selective-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=<<__selectedTiddler__>>>\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=<<__template__>>>\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tree": {
            "title": "$:/core/macros/tree",
            "tags": "$:/tags/Macro",
            "text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/utils": {
            "title": "$:/core/macros/utils",
            "text": "\\define colour(colour)\n$colour$\n\\end\n"
        },
        "$:/snippets/minifocusswitcher": {
            "title": "$:/snippets/minifocusswitcher",
            "text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/snippets/peek-stylesheets": {
            "title": "$:/snippets/peek-stylesheets",
            "text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/PluginLibrary": {
            "title": "$:/tags/PluginLibrary",
            "list": "$:/config/OfficialPluginLibrary"
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/SideBarSegment": {
            "title": "$:/tags/SideBarSegment",
            "list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        }
    }
}
<svg class="tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
<text x="0" y="85" font-family="Verdana" font-weight="600" font-size="63">The</text>
</svg>
<svg class="tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
    <g fill-rule="evenodd">
        <path d="M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z"></path>
    </g>
<text x="0" y="85" font-family="Verdana" font-weight="600" font-size="63">The</text>
</svg>
\define dr(dicestring) <$wikify name=ds text="""<$list filter="[[$dicestring$]prefix[+]] [[$dicestring$]prefix[-]]" emptyMessage="$dicestring$">d20$dicestring$</$list>"""><$vars mult={{{[<ds>split[d]nth[1]max[1]]}}}, side={{{[<ds>split[-]trim[]join[+-]split[d]nth[2]split[+]nth[1]]}}} add={{{[<ds>split[-]trim[]join[+-]split[+]nth[2]]}}}><$fieldmangler tiddler="$:/temp/alerts/Dice"><$set name="currentTiddler" value="$:/temp/alerts/Dice"><$button class="tc-btn-invisible dice-roller"><$action-chooserandom $filter="[range<side>]" $field=result $number=<<mult>> $opt="none" $replace="true"/><$action-setfield dicestring=<<ds>>/><$action-setfield add=<<add>>/><$vars max={{{[<mult>multiply<side>add<add>]}}}, average={{{[<side>add[1]divide[2]multiply<mult>add<add>]}}}><$action-setfield max=<<max>>/><$action-setfield average=<<average>>/></$vars><$action-sendmessage $message="tm-add-tag" $param="$:/tags/Alert"/>$dicestring$</$button></$set></$fieldmangler></$vars></$wikify>
\define drp(string valiftrue valiffalse) <$vars num={{{[[$string$]split[%]first[]]}}}><$vars hundredminus={{{[[100]subtract<num>]}}}><$fieldmangler tiddler="$:/temp/alerts/Percent"><$set name="currentTiddler" value="$:/temp/alerts/Percent"><$button class="tc-btn-invisible dice-roller"><$action-chooserandom $filter="[range[100]]" $field=result $opt="none"/><$action-setfield string="$string$"/><$action-setfield target=<<hundredminus>>/><$action-setfield valiftrue="$valiftrue$"/><$action-setfield valiffalse="$valiffalse$"/><$action-sendmessage $message="tm-add-tag" $param="$:/tags/Alert"/>$string$</$button></$set></$fieldmangler></$vars></$vars>
\define list-links-article(filter,emptyMessage)
\whitespace trim
<ul>
<$list filter="$filter$" emptyMessage=<<__emptyMessage__>>>
<li>{{!!article}}<$link/></li>
</$list>
</ul>
\end
\define lteq() [has[$(fld)$]!greaterthan:$(fld)${$(tid)$!!$(fld)$}]
\define gteq() [has[$(fld)$]!lessthan:$(fld)${$(tid)$!!$(fld)$}]
\define eq() [$(fld)${$(tid)$!!$(fld)$}]
\define comp-actions()
<$vars comp="">
<$wikify name=comp text="""<$list filter="[[$(tid)$]comparison[=]]" emptyMessage=<<comp>>><$text text=<<eq>>/></$list>""">
<$wikify name=comp text="""<$list filter="[[$(tid)$]comparison[≤]]" emptyMessage=<<comp>>><$text text=<<lteq>>/></$list>""">
<$wikify name=comp text="""<$list filter="[[$(tid)$]comparison[≥]]" emptyMessage=<<comp>>><$text text=<<gteq>>/></$list>""">
<$action-setfield $tiddler="$(tid)$" text=<<comp>>/>
</$wikify>
</$wikify>
</$wikify>
</$vars>
\end

\define resetobjects()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/Rarity" tags="[rarity[1]] [rarity[2]] [rarity[3]] [rarity[4]] [rarity[5]] [rarity[6]]"/>
<$action-setfield $tiddler="$:/config/Manager/ObjectTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludeObjectTag" text=""/>
\end

\define resetspells()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/SpellTier" tags="[tier[1]] [tier[2]] [tier[3]] [tier[4]] [tier[5]]"/>
<$action-setfield $tiddler="$:/config/Manager/SpellTag" text=""/>
\end

\define tv-wikilink-tooltip()
<$transclude field="tooltip"><$transclude field="tooltip"/></$transclude>
\end

\define tt(text,tid) <$reveal type="match" text="" default="""$tid$"""><span class="tooltip"><$link to="$text$"/><$list filter="[[$text$]has[tooltip]]" emptyMessage=""><span class="tooltiptext tooltip-right"><$view tiddler="$text$" field="tooltip"/><<tooltip>></span></$list></span></$reveal><$reveal type="nomatch" text="" default="""$tid$"""><span class="tooltip"><$link to="$tid$">$text$</$link><$list filter="[[$tid$]has[tooltip]]" emptyMessage=""><span class="tooltiptext tooltip-right"><$view tiddler="$tid$" field="tooltip"/><<tooltip>></span></$list></span></$reveal>
\define showspells(text)
<$button class="tc-btn-invisible tc-tiddlylink">
<<resetspells>>
<$action-setfield $tiddler="$:/state/tab-1473298955" text="Find Spells"/>
<$action-navigate $to="Find Things"/>
$text$
</$button>
\end

\define showspells-school(school)
<$button class="tc-btn-invisible tc-tiddlylink">
<<resetspells>>
<$action-setfield $tiddler="$:/config/Manager/SpellTag" text=$school$/>
<$action-setfield $tiddler="$:/state/tab-1473298955" text="Find Spells"/>
<$action-navigate $to="Find Things"/>
Find $school$ spells
</$button>
\end
\define add-tag-actions()
<$action-sendmessage $message="tm-add-tag" $param={{$:/temp/NewTagName}}/>
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
\end

\define tag-button()
<$button class="tc-btn-invisible" tag="a">
$(actions)$
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
<$macrocall $name="tag-pill" tag=<<tag>>/>
</$button>
\end

\define tag-picker(actions)
<$set name="actions" value="""$actions$""">
<$set name="cat" filter="[<currentTiddler>get[category]]">
<div class="tc-edit-add-tag">
<span class="tc-add-tag-name">
<$keyboard key="ENTER" actions=<<add-tag-actions>>>
<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>>/>
</$keyboard>
</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button">
<$set name="tag" value={{$:/temp/NewTagName}}>
<$button set="$:/temp/NewTagName" setTo="" class="">
$actions$
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
{{$:/language/EditTemplate/Tags/Add/Button}}
</$button>
</$set>
</span>
</div>
<div class="tc-block-dropdown-wrapper">
<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default="">
<div class="tc-block-dropdown">
<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[category<cat>tags[]!is[system]!subfilter{$:/config/Tags/hide}search:title{$:/temp/NewTagName}sort[]]" variable="tag">
<<tag-button>>
</$list></$list>
<hr>
<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[tags[]!is[system]!subfilter{$:/config/Tags/hide}search:title{$:/temp/NewTagName}sort[]] -[category<cat>tags[]]" variable="tag">
<<tag-button>>
</$list></$list>
<hr>
<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag">
<<tag-button>>
</$list></$list>
</div>
</$reveal>
</div>
</$set></$set>
\end
\define timeline-title()
<!-- Override this macro with a global macro 
     of the same name if you need to change 
     how titles are displayed on the timeline 
     -->
<span class="lightweight"><$view field="article"/></span><$view field="title"/>
\end
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
<div class="tc-timeline">
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]">
<div class="tc-menu-list-item">
<$view field="$dateField$" format="date" template="$format$"/>
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]" >
<div class="tc-menu-list-subitem">
<$link to={{!!title}}>
<<timeline-title>>
</$link>
</div>
</$list>
</div>
</$list>
</div>
\end
/*\
title: $:/core/modules/widgets/action-chooserandom.js
type: application/javascript
module-type: widget

Action widget to select a random tiddler from those matching the supplied filter.  Result is written to the specified output tiddler's specified field.

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
}

function checkData(array, data, value) {
	for (var i =0 ; i < array.length; i++) {
		if (data[array[i]] == value){
			return true;
		}
	}
	return false;
}

var Widget = require("$:/core/modules/widgets/widget.js").widget;

var ChooseRandomWidget = function(parseTreeNode,options) {
	this.initialise(parseTreeNode,options);
};

/*
Inherit from the base widget class
*/
ChooseRandomWidget.prototype = new Widget();

/*
Render this widget into the DOM
*/
ChooseRandomWidget.prototype.render = function(parent,nextSibling) {
	this.computeAttributes();
	this.execute();
};

/*
Compute the internal state of the widget
*/
ChooseRandomWidget.prototype.execute = function() {
	this.actionFilter = this.getAttribute("$filter","[is[tiddler]]" );
	this.actionTiddler = this.getAttribute("$tiddler",this.getVariable("currentTiddler"));
	this.actionField = this.getAttribute("$field","text");
	this.actionIndex = this.getAttribute("$index");
	var num = this.getAttribute("$number","1");
	var opt = this.getAttribute("$opt","none");
	var replace = this.getAttribute("$replace","false");
	var dataTiddler = this.getAttribute("$dataTiddler","false");
	var unique = this.getAttribute("$unique","false");

	var tiddlers = [];
	var data = this.wiki.getTiddlerData(dataTiddler,[]);
	if(dataTiddler !="false"){
		this.actionFilter = "[["+dataTiddler+"]indexes[]]";
	}
	tiddlers = this.wiki.filterTiddlers(this.actionFilter,this);
	shuffleArray(tiddlers);
	var numpicks = parseInt(num,10);
	if(isNaN(numpicks)){
		numpicks=1;}
	if(replace=="false") {
		numpicks=Math.min(numpicks,tiddlers.length);}
	var picks=[];
	while(numpicks>0 && tiddlers.length>0){
		if(replace=="false"){
			var tid = tiddlers.pop();
			if(unique !="false" && dataTiddler !="false"){

				if(checkData(picks, data, data[tid])){
					continue;
				}
			}
			picks.push(tid);
		}
		else{
			picks.push(tiddlers[0]);
			shuffleArray(tiddlers);
		}
		numpicks--;}
	this.actionValue = "";
	picks.forEach((pick) => {
		var tid = pick;
		if(dataTiddler !="false"){
			tid = data[pick];
		}
		switch(opt){
		case "link-br": 
			this.actionValue += "[["+tid+"]]<br>\n"; break;
		case "br": 
			this.actionValue += tid +"<br>\n"; break;
		case "hashes": 
		case "comma":
			this.actionValue += tid +"###"; break;
		case "none":
		default: 
			this.actionValue += tid +" "; break;
		}
	})
	this.actionValue = this.actionValue.trim();
	if(opt=="comma"){
		this.actionValue = this.actionValue.replace(/###/g,", ");}

};

/*
Refresh the widget by ensuring our attributes are up to date
*/
ChooseRandomWidget.prototype.refresh = function(changedTiddlers) {
	var changedAttributes = this.computeAttributes();
	if(changedAttributes["$filter"] || changedAttributes["$tiddler"] || changedAttributes["$field"] || changedAttributes["$number"]) {
		this.refreshSelf();
		return true;
	}
	return this.refreshChildren(changedTiddlers);
};

/*
Invoke the action associated with this widget
*/
ChooseRandomWidget.prototype.invokeAction = function(triggeringWidget,event) {
	if(typeof this.actionValue === "string") {
		this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue);		
	}
	return true; // Action was invoked
};

exports["action-chooserandom"] = ChooseRandomWidget;

})();
<div class="tc-alert">
<div class="tc-alert-toolbar">
<$button class="tc-btn-invisible"><$action-deletefield $tiddler=<<currentTiddler>> tags/><$action-deletetiddler $tiddler="$:/temp/DiceNewRoll"/>{{$:/core/images/close-button}}</$button>
</div>
<div class="tc-alert-subtitle">
<$view field="component"/> <$reveal type="nomatch" state="!!count" text=""><span class="tc-alert-highlight">({{$:/language/Count}}: <$view field="count"/>)</span></$reveal>
</div>
<div class="tc-alert-body">

<$transclude/>

</div>
</div>
<$reveal type="nomatch" state="!!article" text="the ">
<$button tooltip="Add 'the'" aria-label="Add 'the'" class=<<tv-config-toolbar-class>>>
<$action-setfield article="the "/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/add-article}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">
<$text text="Add 'the'"/>
</span>
</$list>
</$button>
</$reveal>
<$button message="tm-navigate" to="Find Things" rootwindow="true" tooltip="Find Things" aria-label="Find Things" class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/list}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="Find Things"/></span>
</$list>
</$button>
<$reveal type="match" state="!!article" text="the ">
<$button tooltip="Remove 'the'" aria-label="Remove 'the'" class=<<tv-config-toolbar-class>>>
<$action-deletefield article/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/remove-article}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">
<$text text="Remove 'the'"/>
</span>
</$list>
</$button>
</$reveal>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix='<<dr "'
	suffix='">>'
/>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="wrap-selection"
	prefix='<<tt "'
	suffix='">>'
/>
\define lingo-base() $:/language/EditTemplate/
\define config-title()
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end

\define config-filter()
[[hide]] -[title{$(config-title)$}]
\end

\define current-tiddler-new-field-selector()
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input
\end

\define new-field-actions()
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]"/>
<$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/>
\end

\define delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>

\define cancel-search-actions-inner()
<$list filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]" variable="ignore" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>""">
<<delete-state-tiddlers>>
</$list>
\end

\define cancel-search-actions()
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[<newFieldNameTiddler>get[text]!match<userInput>]" emptyMessage="""<<cancel-search-actions-inner>>""">
<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
</$list>
</$set>
\end

\define new-field()
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
<$reveal type="nomatch" text="" default=<<name>>>
<$button tooltip=<<lingo Fields/Add/Button/Hint>>>
<$action-sendmessage $message="tm-add-field"
$name=<<name>>
$value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]"/>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
<$reveal type="match" text="" default=<<name>>>
<$button>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
</$vars>
\end
\whitespace trim

<div class="tc-edit-fields">
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>
<tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<config-filter>> variable="temp">
<tr class="tc-edit-field">
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>""">
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</td>
<td class="tc-edit-field-remove">
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>
{{$:/core/images/delete-button}}
</$button>
</td>
</tr>
</$list>
</$list>
</tbody>
</table>
</div>

<$fieldmangler>
<div class="tc-edit-field-add">
<em class="tc-edit tc-big-gap-right">
<<lingo Fields/Add/Prompt>>
</em>
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
<div class="tc-edit-field-add-name-wrapper">
<$macrocall $name="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
		selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}
		focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}
		focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups="yes"
		configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> />
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$set name="tv-show-missing-links" value="yes">
<$linkcatcher to=<<newFieldNameTiddler>>>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/User>>
</div>
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type"  variable="currentField">
<$list filter="[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$list>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>>
</div>
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$list>
</$set>
</$linkcatcher>
</$set>
</div>
</$reveal>
</div>
<div align="right">
<span class="tc-edit-field-add-value tc-small-gap-right">
<$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}>
<$keyboard key="((add-field))" actions=<<new-field-actions>>>
<$edit-text tiddler=<<newFieldValueTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</$set>
</span>
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
</span>
</div>
</$vars>
</div>
</$fieldmangler>
\whitespace trim

\define lingo-base() $:/language/EditTemplate/

\define tag-styles()
background-color:$(backgroundColor)$;
fill:$(foregroundColor)$;
color:$(foregroundColor)$;
\end

\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)
\whitespace trim
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
<span style=<<tag-styles>> class="tc-tag-label tc-tag-list-item">
<$transclude tiddler="""$icon$"""/>&nbsp;<$view field="title" format="text" />
<$button message="tm-remove-tag" param={{!!title}} class="tc-btn-invisible tc-remove-tag-button">{{$:/core/images/close-button}}</$button>
</span>
</$vars>
\end

\define tag-body(colour,palette,icon)
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon="""$icon$"""/>
\end

\define tag-picker-actions()
<$action-listops
	$tiddler=<<currentTiddler>>
	$field="tags"
	$subfilter="[<tag>] [all[current]tags[]]"
/>
\end

<div class="tc-edit-tags">
<$fieldmangler>
<$list filter="[all[current]tags[]sort[title]]" storyview="pop">
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>
</$list>
</$fieldmangler>
<$set name="tabIndex" value={{$:/config/EditTabIndex}}>
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
</$set>
</div>


<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle">
<$link to={{!!modifier}}>
<$view field="modifier"/>
</$link> <span style="font-weight: bold;">{{!!category}}</span> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div>
</$reveal>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-tags-wrapper" style="display:inline-block;vertical-align:middle;width:100%;border-bottom: 2px solid;padding-bottom:5px;border-image-slice: 1;border-width: 2px;border-image-source: linear-gradient(to right, #909090, #ffffff)"><$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop" emptyMessage=""/><div style="float:right">{{||TierTemplate}}</div></div>
</$reveal>
\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<div class="tc-tiddler-title">
<div class="tc-titlebar">
<span class="tc-tiddler-controls">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>
</span>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link>
<$set name="foregroundColor" value={{!!color}}>
<span class="tc-tiddler-title-icon" style=<<title-styles>>>
<$transclude tiddler={{!!icon}}/>
</span>
</$set>
<$list filter="[all[current]removeprefix[$:/]]">
<h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}>
<span class="big-text"><span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/></span>
</h2>
</$list>
<$list filter="[all[current]!prefix[$:/]]">
<h2 class="tc-title">
<span class="big-text"><span class="xlightweight"><$view field="article"/></span><$view field="title"/></span>
</h2>
</$list>
</$link>
</$set>
</div>

<$reveal type="nomatch" text="" default="" state=<<tiddlerInfoState>> class="tc-tiddler-info tc-popup-handle" animate="yes" retain="yes">

<$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]" variable="listItem"><$transclude tiddler=<<listItem>> mode="block"/></$list>

</$reveal>
</div>
@font-face {
    font-family: 'masoch-dirach';
    src: url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAJZQABAAAAACFlAAAJXwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4bgw4cIAZgAINyCAQRCAqIiUCF6R4LhwAAATYCJAOGfAQgBYQiB4UZW5SBMTKQx4FgVBxbFIHzIEXfwX1sVNRt0soo5K8LuCEDGnozHJUKqE2147OFgAjtYwTaUw9toKqBCDgiQQBIiAhhtaPp038MYWLJR/F6Gf1eYr+dgW0jf5KTd3iazr97985jl8tFmkqsSeqRtkmbSkSrkaaKpHVstLTA0LXYPsxabGOOTowOmH7BJk5nMIf5nwKzr2OA5tbtFkVsDb1gDHpr6K2hF4woV7Qio21GGUWJUYDY/y8h5qugWK/+g2J/YL6vvoG+9sPD9/s9+7WPvMeQVEOGCpUhmnmU6A2vos0kJCJD/CH/xMzdh2tlzma/7ghyhDwzkQVjUApCIRGzuwVZYzu8TvuSWql9eiJDQGAI/JmNE/6c5GcWyLDH1N+tG7uNW6ElsywFaBJD4hANgeAImvL+T2f/Wl2O3OV47Q8IRRlqH4S6pOhShee2M+2FkcawoJHMS6bdfY+9+OgnEQToJ93im2ln2icJ3HkWzrzoruhMZBpoQzsWAVYiy2blC4QvKl1x8LX2bLGJUTAkczDFl/11BnbgFr7BINjq+V+mlmljsVuHPUvKUifvg+yMz6RUoUJlirpfN8mZ3wB30IPbG/TssrAN6AQOKYlsLNcMzjnuyjgfWYcd7DnwLLlyjGR9qFCRT1IlsXOhMuOiREESa/j9TO17P/ntv5QoHZbRA6Ac68mf//+a+/+Ad01SxrtS7toe5JdTIFBDzKVEPEBygOhy9wZACtFWjUC1U2SnxGzlxmrsUahNyBk1I2djaLXoIJKyIaBG776Vbe/6hurzY1ukQUKMrzMn4lTfxbY2AiQqMrWsgZ67Sw8zJ8aWlUz9BgCC3Yc3T9x6P/H0lora9sdjzbO8UJRLyiaAlvBT0jCuIIczcgWBHN1VXQ6g8mYQeWKP7KtMVU8CTh3zFDQMz36t1CJIqGiky9WqTbcePznstEuu+91TL32BIOhEVBaU8ACRnT3xxvj8CUjIa6g5H+TFOsXI1+YmDFmS+GYLQeKIcoh4GFQN10QMW0XnbzISpWv4FyBTLmBPxdpmYZ6gQzvysrB8BMqUA2UumijHno87sq7XlTtEJBUybCe9OlxKL7eXNJsOLBkGwaSnpTV5BVTHSNjls+5hC6RGkUtBYx9K522dfS9rSiStalNTjXJ8Kd248+CDzU+AEKF4hMTCRYikoBYvQ5ZstvF4/Nm8lB+EtdJ4Dwe7k9sAdEkIj732UFzjn5xJwBMr0Vaw0bp/hRga/hJAfIzfF4FMTnbwV7uZK0e3hl0xUvDhD32NnuMw55o2tPYXWmap3QYdc9Its7Em6suF8vsijDZNuIVfhERM5EVLXA4aov//lR7cnE6PvQ474Yw7oYN5ZIQ2STiFd0uTxS9+8788m2N5Jk/nyTyRxYkf/P/H7w+nz0yfmD46fWR6eHpget/0zulFfx2/Nw3/HUERX0cJnYox8HwR8AhQPosTpEad0q1TVvYPrt5gNOWbLdaCwqLiktIym93hLK+odLmrqj01tXX1XqlMrlCq1HHxCYlJySmpGq1On2ZIz8jMys7JzcufYzQByxoam9e0Q3xV1pv19uzivGn77nI33Fzf3nO3v/8wLgbY9hYU36zZPP/w/aoSwH4XqAQMnwV8bslFoOf9wj3z1q/T0ku3zIuWtp04ee3p9Ru/TQw6/hkALvz540+g9vcUsOT64htNK1auWr5uPbD2/oZO4NTXCgCyGtYGO14qZJmkPH32VUe/XuxRZXZ55R+3pK9k21aKJQ0+nxgKh24DIfW9DYNQDkcVi1+e2wKkW1X1HMDKXwlGSBrzTZVlCE9pyIljamNeADrtgzTk5CnncipG4WMWk55O7+qhVK4aA3TNTK4xkr7rabCFcy1Jea2UcY2zFVSGRS8hdWxcXULSMubbVFsu968PvX5e3N/pH/JihHuuij+gjduygr7b9wJ/a0zkr0NFs3WzYJZmFaVbJ2/P/upa9nJrR9y/tuf80V++/omYzWeH7rzpWtGxlcUyZwNZqW5u8MfoqUu+lPtrUpr7yCw2j8XY2dJpIUNvK07u210UMOt+yNGGBsVwJQEBX7vPip8bvAoLr7lWuF3geziJgsTcSR6edweyhuCCa7f4zqpm6zwccAWJJTP0i11L3UuTSs+SziyezdattHoScAXJIEmjm9tTseqvHl/dvyZ/vWxdcDX0z6LLFXj5T98W6JFduOXadSD/mlz1PTJwIw9TlVthPSiY1FJ3z2fDiaTlZAYuIAmkenVzS8jGVKq9Xzy+Jn318rrg1RV/h06/dqt1dtFAU96YpPWQ9NbFK5QKhZdBzTqwZXYM1uOeVUex66Rr+hxpke2G35tuCOuQO7GQ2Hqy6YbJRNpsiwytMX/mzp6OQlP2gmL2ZsmKEViKXkKzmorC4qNxbUPc8/LDzBOzjP/HqJ6twHrFEVYqKerAbsY4betwklfur4Y+wzdMmb+7WhVJX8SfpMri1qfZdEisyUYTUbWqBngzuz/FE9tZBh2gaSpEP7+pM1z3yorQUAsM82GMshpYDJb9asLrjbqRtWaEZxcPF5Ad7fBoCil7hRuQDCSQUl2WvmJx+nnm4abopdT4zZDtHB5SKCWdnNv6jwigRrwl4/0TwsnRxmmRvNYCI62Gr6WE1D6deZJEBSuXxwVKw3H9vkk2G1St0KHzTg5o5y44UI3ku3chlBbQ1RYm97Mw1CvfqFBmpNky1u51vo1GdizFsgfBb7YU0Cy0wJ5lCWgknAqlhpWdK0ch6iJxQizRIludULH6EMvAUpY77A45hrO6hT/OVL5+PoeejapbghuHxQlIHk+bmlLk6Pl3EuHyFd0ReMt3HSGdhALK5bHE8Gm+ChXvfDUSZSicGEixutXcqLSqDXEEVKQ5QpK8c3cBPdoIKqRavV6CumheErSJnqYNwGPADiTzzRccWHkwpkECLF37njyKA+zj8Uc8jZMOaxTVe4v8YwiWt9CajF8e95WQoe4m0C7v2Gh6hoxQQDNWZVnpw3dyscBxoZgLlyniPUHEEU3jTVaXwYgLf1MaWESgHWPUHXNYX6EGuQNIjWohha8SU7wuYhiNWSDUwxOxJ2pW6yVPFhcgZHkIHX9Fet3deSTpu8SjhzuAi+O9a90QajctnhNy0fAaHob1IAh9V4Nv6hTRAJC33r48ZJCUfZbLh/zOfVd55LKvLKEmpd/T7/49m377wyCAVQpNu8MhPOYa+NqHQqRCE8Ekt5S+Qhre0ZtW8H/TSyMHhWBXh46tWEr2YSEo/HxEsPmxpBiD99tmcAfaUyjlTXatYKTzC50t7zkLBAtX2gw0M97dUHo63b4gCHOU8QjHSj9g+kDwzeSnhVbJygI+prnkTHD+uPgAEevuH4f8m2YCMTtih5tdgbjavHsL9X+xA/kshakvLKbJjW2F84HPXgOM4QPiKsX/yfZYqbG0Gj4P++ySOPBGOVmQ1yTz/X9T1JU2Jc5Sxlk59JUHvqZ7+dg0sAI53AJ2CDXANFbA/gtNDZyEo8oN0i5O4rd5aiPdE3PcBLz38tF/UGhCXkAK3RhuwC2AG7ah6W4ylbicxGtq58BAzDzRzEi/58zaYeDRKI8+2k57UWlO3X8yXCOulmza7U7Eib8uDKflyPZ2D7PBdi74MkWlXpPq8Hob6nTi9I7Oi4gBTefCOlLlkzvKN+Lz13fdjN1816v6gJifpPtj+YztK0r9T0YtNd99TtM1XWTG3+cCIaE4sG+Be+qm8SDrH8/Ocg/GooaeR0GQd1vv+TV24WIwOZiskNo79J5XPaXuU80hR6hVi7i2Phe1h+Hxu6kc8bPpaff+7b007sjv4QLblGcHaSVRmuVwgaRHQ7lPrmz0Mcsut1Ny9Hhd0ygjqBRLiueHqHOwQGo7WU4RH2cNQ1BJBkoPonm++s8PaLIMd+K1HRXVBtQbWnhSxhn7vTvOl377IuFTCGalgzjVgJ0htPAKPSCdN8wuEGU79Hx+pIrpHLxDtd2QdQHWE3sAeKDX+dg6XcaTaPNRxJ5K7jjNhdpSukPFk9gwKHDb0n12waRrxSbby8H8S6rUkfEexdkqbvB6GGar0td0gW5uYWy9ph7UYM9d7ChoT/ySjHePyychD9B86OP5Y2GY4HJJ8Q0TbjDLke1RyPVImRRW9rm6D2V74JPkblLk8+f0/Mic+rUj3v/06OP45AntItEU3iKiP2aUa7IkYGKmyygaUXiwJSD9byiGGoypvbRNq/BWhp5M6GiJNl2LhZSiP1/bvDsq+9XG9GksQIeq2UQsFAICPUB6jZFHkEsoR7bL46GVB8ZcI3GxmbCuEeQ9RoNzcfmcAHKNpMrNIBT5hjS22TRRIja0oCm57L2HdYYZ21YDKYx3xC7JjojdMBksgSh9zPrPksZZIcmGTHHSRD3XjuEbdpa43NiHsxi6VJ9WOs7JusmZmWzS8Z6IKDyoZcDIzRg+cAmm17M113c9gbRKLKqTUj04cuw2NLpN1n0ew8lqTNH7QbRlnqxObGt7qMU1zmKrdDtDm9hxY49pcRPhUSlWEMDBqMPcKJnhcooteXT6rU62A/5oZ5MbipO8MDmMY7jxAPTTvr76Ie97cf/XElwm3WcauUvKj3pkDwXmwF9hy6pYmFXdwxyRCCIb/XlxUUf2RuLq7afurDCmLVhbc2g/oU0s4DGVxMWKhazsTLAd2cNCb0jMVlsV+pTnn9hofHBDS2aakIfYSP4O5BhdE4ZXYeUUt/IoNQo7oCPojhE2WL2QgrrmVAwK2N7njVrPQu40s6tQvP/2oHHhMO4zWimnI/U2SvPNT7FNKQmqDzRnWeldvG7mQfHmTkHVU6ULk3A91kNwkUEqFJpCGeUBi4SshPc2fyURrqr/nKBseGJJEdDG+2fn7DpRRNQ9vozXpd32LGUW1UTmPTAeu/WTHBKgObSHprLGryDrq7ujO1nQRBzzJ7iJkx+3iIeDPrK+mSyfjsWxmuU9qN2reRk3qewN4XC6rMyANrERNvKpZTFvdMtCHrJiSLevTVsb8QfUR5oRnnLCm00zdA3XMP4BO81eaZhi2iKeMltR+wgcLFMXSQ5YVKmtPLqbO6RrDeiNneYbZouyLoUH/SZbmETAEUvwlf0hr7GksKf4FVx8yYOrCe91stWFXDYexiIceDUJ5WUlvSS9C2UDve8lLu7Ij9LSxVYa0axu0+04yYUkCv21PRgoFKIs0WKCm7ezctAG0rK0acA5Hec/Lg7dB3x2wiI7e/UhaTpH0tcuvZPlZslL/xYdwAd0Bti1oFFtuMhKGau7XfWFG9LmR3lhK4fk5136oBaq38WKnnbajqGemOzE9LHQDCNKmajxV1PYUfpOKtmKQY+7GsPkKOlt3td3RIqwHLsLVSO2c1pMiem6bZaCioCktCIOTWoaoXPZqtyTrvW29A+ZSu+Z8KQXFpgcH84+vrGOsyQtKWBA6t7F2nTMy/mLydQf7U3KdrH1qnwYeM5tlTQdYcU3EQ0NJzc5LrJOhO9zOs/6x+G4pE6j8znf3qW0K1IyohNCreESFbo2PpAn3r2dv+wF/vMJSbs68bSGzCUbn0CqbZ6mZB1zzk/ezpxL9zvdbzVQlAqzFmmlgdkY99ghNG16TD16+OXl5x25GzTzpAnIEXap1vCGJbbgLiTIscfU2q47Xf8x4kCsaKPncorgWhlupoFDVD0fp8bNSTGWV0C45mmPVYsfpiB6WlXqwZTPpAksQk3akW2WmOkIa0CY0tAtUfnbXUizqprjgl1tXhLzJTpZBClK7AuT+6fQLDdaN+LyhWbmmmjDagwp+8DCZuZhDqLFfM/4fTyVUiNrzvzdRF4rPRKVqR9Zh2f39P7v7HEWSPr7rVnIlZG35z/5ndm/rQ3OPm0D1OQuWb3oTfCmtS+wb2A/FGdZIRx4ZZgyE7NAlGRltObfOLucCyXbU2c+ZzQVkMRqAKeNaGygb0MpemC1YR/4SurU4Ml5GZ0acqvPT9qvkkcugQKIG3K0wA1SwP1QTFs/384o2RncMOCM4vd8aecHu7eHxElJoxa50LOMLYXLjGrCYRVR0M7v7KVLq0FjsOpvYytMV+Q7tQmbLK25TPdFbWorZXmDxwolyCN9LbmCfXej89I8lwcsaGld9arondwZeRG2K2QubCReRjcCFg1PAbnsh2EorawahqUUlshfxSS1PU/M+J0gJ8PavoQ7vGSQBVVC0QG8H95KURv9eTubu9R1hOQJTylar7pNlKoIgB0buy/effPigbC28K/ifd6/Jgazj6ns8daK9u7dTrjJOy7HLcoL50iHxuUNHWd8mJln4bFoj39PbG49u0qiUMTMj14E7kBmM4w3noji2FA8byMhSv1NGnFpgBxVar+x+WB8NYvH9oFm34y0GHyKI4BhDMHqxdTM941Q1w9eBLf5ykR/svskyW1gqfFuME56zFCu7bqFyHSj4zjxT6TsD/fzQ5NKw90gaPcnqw+LucJCH04+rqkvl0F/oZI4d8Ru3DeSzXTicrni+QW6vQdG6aDFJ4SVA4/l9nnA+zrb1xbHn+i7FLoHVI7R5oMn/nT49IiV7araVgk5z71IfGHQ8imrx8U0PHiaerAs9pT2nsHKib4D2kphW12K+qwYEGBwA61OaR/MpmYMv9gjN2gcjd4ke8WuNpJp4iZl03LgcLtsj+FDmib4gTWI0neSMX2kgGBIcgpUBDIefdjuYhRgYmpQw+b4/pMGTU7S12fAN1UIZcf/ZexfKe3lTQ2CEQ4BjloqByUjjEusKN2EVJB1nxez/2ciMN9FV6C/iC+q7ezB9Udh+ICdTRJ7JA3LSGMgRia9CSelz1mEA6Z5U9Y9kmXLlHlB1TSZ+SiXlzZYFBQZ3uquWJyD39Y9cWVWId3zvh3ce/Mkue5c/f10W4oRQkTOstZh9JYQrPqO4oMw/aUo122Ly1L1KpqYzvMDTLF3Ensl864QdmmqY9YvLBToV02Am9P+0yhM6MIPK+LqLH7CfEFlbcElIGfSF4A6tDPkIacIGDqrm+dSTME4WzWkMs3NECqLptcD/f2M4xDmDsgXm2tlIfb+efPP7sDMwbnd0ftLPyWy/Xqd+fGjYM4Tck8uqev77TnueUzV2cRoHNzUS46KAQV2IXdIW3mH0Y5oj+JnPOgU97quaWDG5Yex3lG2K4af4HXKnau85JGtZklxIlB3u5qC2Nmx0sYaevNkwiawwBHXlm08Av0YFxXFzbCzSewnOyOYmYCDHHdAe8vItDNOWKWmvGZFkc6fsqYrnreJ1WuhSoCtRtFKTJn4xvCewL1OOjLD35a2cYS4xKoL9fS4i9Bv5zjlGBzC48Q50nV1F2PUqeKKi7V4wUh3hA+ppDmoJmi4LSta6c20RSEUNVNTbNBIGZFYtPj4mLlIa7jA1Qf4iShIho8wJ12oxnkMj5jFYSaqZ0nnOaB7aptDTq2OYquIobwi1INESLGcOfvAMMT4hHyyF4EqQ1QicXHSZW8ErI7HKjyQoGpxtGmzBM6Yb/NGywc8PVIe0oFkciWLI5frf8u2J37FsMVhKQkBWcSA22Z7JPBcDY9CHb0opXnWPbIgQvqQWhQgNgV6gWhtRXaHJT532QQVBULmMZAUTzT9FRpV+9YSLWbEzhpagPZPdzYRTueZww6grfAOzKhNmkwxkiDcCVkmfN2XldDPZJ9JUPJwSVfoqv0/Qd4kIaA49bXsHCQ+hz2oKbhSQG/aRhL9nC2AYQpO+nELspEopz2ucnoUjlqeXovm9CwXJNIVtihEH2xXKwJ67j6gZg1Fd7fn2Bmn57Ro+0vC/rEaJ8KamGjBXgHAV4vo2Y5Kk/ZYluqjcyOxD/dyLMay3Eggkqkh+dRYmruEIsEgPm2qfj5pI40oPD0SdeqjCUjD6yDcvx2DAt85L+smtu9kXj+s9xpquCSHPmVDdMeDeDaeTuio2AFSpRBq79NctrCuiVEyJDvbJ8K1snwOhirebtVq70DJadz0EDmsbGMVpI4VB84FmUZFtAernppNPR+reabey3HD+aMnyvF4FCS02+VQucxnydCG0z+qH/EFxuc9PU6ps3bixqBekAtzSsvVluLEgoxwc2PeQQe19T3BPs0LpRe9sov0hYa5To8EwKiY4PcU3q0LOuHB42TkCVt1wEg3KgZX/i67A8bN16gFWW4R+u8ysLHGeZVPEK7iHtEQFsDGhOUuHRVS0qDegNO69FfP4kbVsbfdn2e1zTTbyRtkRb5bqFKeW3M1X66Rg9cz3g+hKaCpEEVcOlZVXMLiAYns/PaQuimeSQpvueLnaHWwjq1itVMmvE7wo9KaNqXJjikXZvAF8MmXnUZZ3lfpWahnkHHDWwA+daUId3mPsgTV060xD5OfuZO2+LO963GZVv356jHknKUCgnFiWgr3HU0DH5P7LCfcJClzxChGUgVFNDlRAz8+BBkHjFQ1qRqAYvixSA5KN8VTJb/iNpGZoQKaiNohdz2s9agTuLaUZl3W9aP6kF+K8iQ1a+Z1St+t93Ct8O6K4k9PFX6XAdSQElOSocrmiiJGsyZnwe1RaTtIFtckB7CbA5+E2rYYlu8GEfaNqGtOmYHybCHaQsUoWnrhrTHcxcilbYufNGin7rMo20rqfUY/cjfK0NDrZf9dnjR43GHOrgP2AwlCfYg6m2Kj3SdRWhi54JraHwk61zCcbAqn41ESbH1chxAfQNiuYLonpxCtXDoI+qigsq22MBLwDipFVHEQ3toZBebUpFjJoQ5tK151sE47dz0pQvZmgVhNyfEO/PFYfaEvtA5gHNoKUtoFlC1s0JygCONEves6SkyynZ4XhWfMUAEr1GpoVDtKNiWJKTSevItmI8Prcl+mPYTIAtAOUwF5FEFLRFwvupM5n2wJKxkJEUsh74menXTMJlS7VWYkQKKMF9Rx+2nGEBGyECgklAwWCWVpFVahQVcRB5KhLFXz6UgpKG2F6W5hbeZIBsQ0QGg1eUFLuezmBBX/mmIwHxrtRbhcSiEdZHTIxkz3QNeQAZAuE9JFG+OmEInicYyM9GoYw4AT5SipiocX3oNDrj+sPMoP1RKySAckrEghUJpYvI8rSfTHAO1zIXPJdODOjHUjUC4B11k424GgsB4ZMKDKF0etbi5GJdKSjf4giAXGmqxCUZvvr9iKsX2kWwXW/gAiLd6joZ9gJCsTGGcxqO9QX1P23gHC+Gm79HMKj+pp5NIFm4yi6Z7ocIkLtCvoLYYrgUgslW3UoBUPHQojpQfK8k1gYsGFMoOX3owiGTsOZlH9HTgy8tdqPDkrKdHIp+tznlSO31TtZTBUamfSdnWVy4NDt+PaZkYb697zWB/a1iPhg6jlP6xyTBJUQHaPaDgdskdXqVP1zHs8bwVoZBReUxMd6BwoASNtWjCeLZEEmSpBaXhOJWeJhtP87CqlBPEeb+ktHmdoij8b0FRglZq/SaXRgai3wBMnC1kQ/fgkO9Goz5KpoWuXUTrHAu8XaZdnUfjFmt9obqhz1ffg7xEwXXiHedDirS7TW/CO7u3L4BEeo70DyRWWjsfybNDnEVsZ2sX9zA6Ssw/vnaOWEp+7Vf276EOPeiLONI8NbYliWmGhy/XT2MmVFs5iky2zenMzQ9K0VjZn8OonfcjFLZUBxwTBQBTD+Cj7rCgVYOkC5CqdEn+yIqEgdLJHoWoQNNdHjyeT+eC+fh4tSgJzR96jXRmSHR9u8Q3I8p5kZir4h7FHGOoWHGpVAF/EPEsjRO+TcSTtpBEI+KvSZ0MK5RCMvGxvqnQFYVKU3/e4eQHwMeFdZA+omvQsbiJVvyqPgjNGobfjWBBaCuDORMnTLEq+5uCt/ntlHcNs2MaB4jSvLwjv1J8iwN5mwkWSqkBaDlUaY7VYlZog0XvyniSYZ/HMQLLgLYjKxWbNzNGJpnM98OJcOzsHKmB+4/V8S0d1kXm3nfgEIJmuKBexeiGiKv0udebKkiieoDwNFT7Mbz1E/Ilj29tL1DUM7tDhY0jvrQQNQlzP4fJsYY0FAihcMbhxVzaZuqPIt4j/W8/PsdyiMxOglgM0oTmKCvLdPuVEoPAjvEXdiaHAixSYgULaCqacI7OQqhb45W6sO/aVKYCdkehpFz+xLjOobD5Woy8eitWAfqiWk+D1FA0FzHBbpO3N9WFgVB5lkFMtYHVt7xy54AucmGY8oVTyhL5rieKTTAHjn1xYUQAye1pgIXlgZGXlEkeyKG4ftEGj/88QiyZigadTDHuAQ8nPrlA9powwsnu774983q/6Sp/ozaMJbQrFBjP+ya1d6A235utIImjPdxN4j9grz/Ylj2Y4Wu20MYdSThEs0zwW0j2tlmZ35vndADN3hkKasDYSdnI3cDrBSrlEUqYa8xjDmWoi7XktLbbIw80aneNRmDRIXnDZumF76b82Erv1gxXVHq/trvfif9keZWicdou1Qc3OU5tCPWo0MCo9fSUOaPTaFjCkzFRZELIewHAH2V4MOJOZZOFnX1KKNeKzRyVuZ1pvgG75CwUAU8KOWA0lWhw4HMp+MQpkK0bj862/WNI7+HAXSc4unwB2CuEwKmwvy4aYsApuUj7gW9dFbbV4DBHMKLwHerDWZiJutaIFnkIf4BY7hu3mFRG2/6LG6+NMr5MzK9CeHgusyLrS3Y1ICtqH9cOa1I1KkXt+FAhAcZnY8gzlwBV+WxaTPJ8VuEPwNQ2Ex1FD9CoIUBG45CZLt3mS0TjuJN4BouKFTmuUbhR1TElH2naOuEgxCq0gaspw2xU6QsjXBN3yHBf+19FFcdWUdiVa5y/bGbJ5WCKGuhkH+eHlIwqtMXqZdUKO86E9hl/gjmUCinCFkfa4O1ziMwWwqp9lENIuM83yVjU3jENXvz2d/GloN+lfOXPHoqhsFJUF00fDt8bBdigtaFQzhY3gZWiX3u8b0UWXEGHvwDtsuouCcKmNBUA0J7fDDCfsW9nntaFg0Lt1owYkvcZ023r/xie856ntjMI0qf6BNJhNs9KoxdfjNJr2HUq1z+WvIQfUasixjWvUjJlNdkjVBQ5p5kmq2vjpKqRy5kEBm0O594L6GpiMIYy18mclTEipfGmpjH1MIeVg0CQ7En/7Sk8zQtOHw1m8KS4IZ47Y0FhHP5YuuZAYkGgQ9nzXUeQJot794hSma9vhiYRJ+ZZEJKoayhCxO2m1vM04U0/2YcDgKMr0MaZdTTq52FGl5SLHyymN0jx+jULm1UXFidF46jxPqV1EcWqQ0F8kKwu+yr1JdzSFMHqT5EYfzhgOp7Uim65/QngWSDi6FcpofBvIUzHnQy2pkE0bnRhjgt1x8ZfcQngeT+TIOTid11AoOC62ubStBBom7UQ46y0LNSdfd4DVo7NwCMoFHrEknqqBcN57+Q5qy3d4lTMJ1UJiytLLpq/PHQ+NzfSS4wktQWmu1SK6FZDa9WNKEZopCrApV9mWaXgOHCVLlFUbsJIm57B3W/e0Vs4IjnCpocp4+BO7WmS7tuX6CHJTgyv+Wxv7lcFjmTKoQ4JPeudxQkNQdxmyVUdJk5lPOr8dFEtAPyt5577X1C0FJ4shhRuAr2tBznyE4SIzVw9tCmS3fnVFRIPE92hwZamSxWo/NWXyFBusE92ChQEYEjD2mkJXpC2qP6RmMYY/6bjwO3pDUC5qiuh0WPFKsAhKe9ZLAcJE3st9omtisoknGCpWelZlCAyR2y4/4ochgNu8IQgCHD4NCcvZkO9S6fheDpvad6InxGAL0B5BWypZfw46NFkQhH4oppAjU1yHPqplWFjfSATGUAenJXuFenYn/+ZxRzWU7JbdzVVFIlTkVXNHDpLOc5ju5MnXPoVZ/17XKm2XO1fISwriGuM4ZT9yYA3KFHGjVSHc7+fhJiDr8uhEQnPJ4vaVm7BXVMDop1fgXvfXrg8UamYK16hLmSYU+p2697nLp5NiBDSXJ9Gl6nl5fUysqFnX+dysBQV7iP6FarupAAOe+2eC6oLwlnjqBWK2dgTScLrCFo3coViQlDFmgk4BnibBL7Kv5Z+ftiJ7O/DYM/EB91vlw5prRDk49ve49SC8zRrVWX0H5XKYHma7vu/n5iR+yoeBDq2KjwUTMTtEoVgNcas9oHEYlqL2EB6I1m+wQF1EP/dLHtm+ZI7uj/ZO6BtdJLBFICHtgFaEv/65x/14SfiAPGG60R6EKrt/JaW25Bdi0vkM/xvaZcUoZewzL8S+G5kBHIAm3Uw2k5XeFzda6cjroy8hDcIQNDSdQdujVLWHhPhWv1iLKEtH/0IrU0C/ZynSTSTQtBHTvqqvH9AfthHe493A6Z6/7cPmVWJ42XU8CfuX2voD6BJbW7ZBxCRchUMwnCAEzY5p/Xy0pU32gOnhdnh/UoLA46U525wjEYZ3GHgY0ZYRxQvLihMiOk8F+c7y6VXYmzHmD13Qblg9UywjrpPi3FS55V7ioz87mxH8uShf6NN5JM52mW2yQOUl/ocPumrkqPRdeVSlYlRHZnk/UyTd5jzJtEDDNU+Bk3yZgOYgk3eJSuaVrXtmppNWmi7gBhTPNwFZrIT2ESEda66T/oO8VmDt132eqDd9UVopMNpAMCBss4bcBehED3WyZb1nIGPphxXMELJMiQeVcEqz8ic9kMQuExOOvuF8tsdAjbq190moUlBZAKEPYg/OXFnA7EPyeIMY0spGqr/shkP7FmJuvR3GScMbXn5Xu5qp4tLl/wKO14RipjZIF2R2WSSHQONJk3ciHN51UP7yA8XVc+rWjfRO0WnxUMzuxbfFowun06+cGG+tukxAeHnzXQiTHlHVKUu6bjueLvXO48F2ZBz/oaS7Ov3bqADg4q15/6T+I6IADpIHFVUpZEcLSeKa+LKKCe8aFe+wvukm707Cl/Rv7RMoU4kMJZa68Uozr9zkII2dccyS2dWbxT6FQ5DjGAkr4H+BV5T16EU68CdUgLPWuPUkik+IwRzxPnWqmX7f46CS2A8jvLtjyBa87CyWwqtunAfUm2Umbl58yO/0bjU3t1cPfRMxf0r+dj/QvqPSfOLMDQmWv0Q6xX/JFZ+uS9uxRBbjPrOc7xSDU1kRBdjSjGVfCiFHGEE8cadnCv/aQp8qA6SI1DF1rJ5pO7ewygz6z/OeP3q7ZMRoD79MzxmGtI4AaV/TkQt4oZ0Y7fUn1qM2v8DFe9b+LHLJ1Jonr2wuqX8yasl0HdsFwN/1pZgUcQPGEY0CkFut8w+7+4fQ2t4ND5v+h+NF8hSvnKX+gwqYdZBJOaqoaKlheI9dj/D3k5CKvZXYvWT51Wjz2vbbvSAKoZ0IWPC91nQniDAn13q7ci7OQZvHR5sPqYZYbmP4WkShdZcWnKARkzchTDmuryF86wHvJT6XZFlZmrg1PyHPl4RHJ0GxHaatzml683klL0BtzPgOXFjxzrpThQMBgGmLO89MR8o8kGKArINtjhw2+yz+E2e47oPu9SPNjpY949VuMCXgIi7iUAg0qVj02lsTgBgeC1Of+ce9obCOftkqL5phFV48aUrFVxn9rHNhVi3Ze53aAllC8yywdhATsLf3wfSi99yLBi1R3qbzJHWP6P30jXOH9X+OpopNUBZnwZKLrZMGdjhyzV8cmrfXu//jyRnxUxj9qh7odRnWuqb+byAfcAZTLMxnb8UenIUE6pr5QdClKzjnC2y2yJeMbE9i0zdwJwHiIQMXL8c8/psSYNtk6YkzgGnjKTmxsLAA8CxjgXRJGQYix4+QwSMhiLDjBgjolRqabadD2rVmjIvzLhh/eT+rFXbfycKv8YfLzA4aQC8ebsHkEYL6W5OlIKt95hHg5IzcvDyjryLzZyDC/x0jpjQB6OnMS0iNspFnYN9wCI6I92nTFQVQ82FWpeM+C0ksuXOBverAUq10iZAmq8zDLkG4R132B7GzSicW8vscz/OgG2f6DL9ZzdEZ0FUK5QdU7y7uBTMQSq0Xn2uyMPzVQ+bLrJbD/WIVbZl7MfP++YV5nLRsddrM5jvrYwyfHz5DOr5xvbBdLk+R/ped3xB1QdT7jBNaaDJhAsE0gSkj1oBU6OcOKH5jnvEef7RmHF3dJrSin5I3XHHGq8MrF1gzXsdH7BMg556KMkRO31m9Wer78EEE5Qem+dJkit9QRt1iaZliuYrQH3Ckt8TAi7fmuEJZwGHYe1aSfzNBAZQIorR0z+dWaXcqNygQx7IyKjeoFpx3Nx4uu/didAhBBJQ/2Ny+9H2uYgsQ/j/kda02zDMvryTkukZYCFMwxAmWoGOge/wfngUFlOROkOHevLlJD2Tt0CShm0FYDOg4taQhrF2S8YWqa0uJQLxOvcpcq/dynpraJAazZwjWEKsihCNet2coLJJN6+u5a4I3jua4PTL8GjHG+A7TMGYAvsCwB7BbA9fhlFoi0yAgIRkbFiZzNWhYdVU6xZQov6uDEHXojAor0M0xtqmHzFJ1KklO5VEKPK+gp5f+QYCQ9b2duKFgQI7+pJ0eGqEpxuuT2b5ZfoBh6gtlcBj7EKZ3IasD/SlUJMfR9JBR5gUH2LX/3ZTJ1D1uCPVz5z1hGDcws/UkRRT5TwMcQsgUCYoc/tEAQ0QWZSmlOSRSZGG+IFI4TWL2W8ZmMa1GYORd3sNkAvGJACW6o5dkWRQ2dSrvz0obt5t9+mxJR7Lj+vnXyZw7Feep48tjm5prhX1tnIhdfRmddeDQzGp2n7a8SY+bR/ZH6R1/4g7tUWhCaO8iBW+bmkViazlpJEQ1dAeKBhnJ2LCG0qFwBixXFn57Rfa8cA/9RkRXjb97xka+Arg7L7MVSoImFORwQUyKcQPai7gDfbDH4VzXtpReCamuGUE0YFBqbfOnovow45YkfVxmyLy//7OnuVJW+RG7ALk5qWSOsMX5dcGp284jNfU9SLNP1lWS5J84BhWQrOhGwfK4GZZQ/WGB5g4Nuhm/vbzWtv0U+vnLxRt4hZaSz0gefPuwe1/9+08uvZfLFsq4/ld42iqbCA2bdELUdsJWQOw3tJxuZ7eLHwPyHWYEeVArdLgJHnX9tc17yIaE0wgeTd32RyXXSOqCSlEUbII8hSI7CgtA+yqRtoNdjG1qhAy+QSwt+HMrJy0xep+rWKh3F2tya+KcZFWvOCWOnp+6LxgRLSntsaWdnync80aZ0D64/MyYmhUHevHCGNfcoNzZB4ZljlzIFDqAp7C/14F2M8qLL7OqXTziJNpVtIrI0ZHJ4WJ37EeVPq/2oZLSaby1A4n1QJYiKVnjKHTzfIcexMkbJ10Toxe8rZJqzKPaYaW7T/kuUbsVlUKneie3UVed0B4Wy2dYINWFCjHG1+hQdudy0gEMiF/7d7rnYDqfJoa35jACxwArzABULZf7L+8msPfYhLfCEChQOKdg5cGu9C5kyRNR+vx+2HXfpjk6Yc4PGdH7NA13+tVkFoVcj90Jv4YIih41C6G0S4MFWEsld73AhHDFUOb1JpmVMXW+bOAaYknnGbBepa9g+g7y0xirQRZBoOKABm1J+hhmX9z2R7reeUCJTWR7TjGVgzCvHqbj0nC8qUsyhHP06JQ2FdicvZwb0pUgTZpw7iouYyDbDCzdieMEGicnAVvOceYpuxiLGJc0QP7xPtQKPNX8PQOMUY7eWSFJLxuVM0daPGqNA8awzk9XZEPbSX3zatIFBcoIkLgoSJQc0kXIJ4069KJOmsCdMuppiy8otSdc3soqxDZ6S0I1dEMzteQtSmB76nso+KRLpFNh7S2w7imuk+kJajVcP/r42Uspntq4RRxcBB3jfIg1cZDcoGYnidBml3IJQEsn1LwPeEOqoW/aAf3fqXP/p/vjv2i62Hc93YuNGrD30Jitlm5n5mIlxShnxStHldUAtX3VBU3otI5FE+p4e0lCDdyNZ6tSVtnWwXwr5OzEr1gcbLfOCb34H9oNoikHpzkKr7KQ0+D5WH255NtOp2fGJ/FagaYyxdRuSryVzM5mkKTi5soF5EiCUU6sWEUHQvoCDheeYdFdFozR7g01gsESMHZNZxiREAzv62s8WqbSIssL/Czcm+gW7e+uXaKqksWbvgilbTYPQAJpbH8jp3T6GKZCfCRylEkDy0mbY1O6I/AbGar7L87fQt0P/NuMCKkEv6EJBQ+yieGX5ik8UmpGMn5YRsZ1fCbeNrxGk7telPiux1pPS8l48e+x1GTVf53ZTopXnf15s3payBiNYw/lLrND3TPVK0rRF3xx0VflpgsXN7WiyLsQRJtSHJE9/DsI/AnSO7Z4+IJgs20J7eUtRSEYvMuRer2Xq7wSmovWe+NMwpmCWJscJlFlCFUyNgWKNgtH8UEm4Y+2o39Wpn3dVqD9T4dkl5qL4unqRYKuUsk3YoOElVqCw/0Xmj8ZkVpb1pFBlvoXfNneyTQbvFJzevihbdzMXdJhuNPrtTs1S4wFoRX3s1gjdgvChAiTx0IZRQs0VHrtjlGkG45ng//H1iqzdWg0kb2hFKG0y/UPY/kgvjh1AbJwSMwHQXx0tLZL+9N77asJn+A1ZXERFwrCFkR4wMF8kazfYHQ7AB4G8UaZ7mp+2KrGA5q46IOqBPRmTbrd9bjwP4BxrjfSZYMbkBXoG4DZHWVj0L86bM6DVVH9X9+rvyCHNT31x2LWffDAUttMKzIJuLkRR5x3GvGlZFSboKE0xd5xZ33TIyfkrQeiumCd1SSN+4TqUtUVVRTZx0N5drS5ErZHZvmGAcbod9Xb4oK5koHgY9qE4EouqmeectoKG1cy3OV7YrsO/ph0+bpVNNEltASWm5U/hppOmIv1yZ8gATgrKrYcUzdXNckQbThczoCh4+5BUx7Glv2v/+Fsld4gLYABuDBbw+jXjUk4yDPkndNywRk4XpjVZoT7toUKUWPQTb840juxLn2nF86UOwWdZKFKVRQvC4HoJIdq+4fKnXXB7tBJds7bFqPsREuJ7jauItVCyBw3NHyS1UioFZWb9WN3DO2AX4r2iqsiKyD1ZYtV21BeDpypSUsCDUNeGTJnqb9vG+SepHhHUwjV/HpacLTPrdd12C1kNCZmr/WjI3JFVZvaXErimqmn3aPPzHny0+I4IL8DBIpV+rVvNA3zgpRvxUllxHAz8TS2v6BZqIPZTqiOpN3OdxnhTOtn2pyrlcTwFrcByZnEoz4VsM8LTOEKdr4x6NAE1Am1SeiVNasHSiGq8V06trJAxp2HQWQTDJ35YQ6bNAuBiUtGCrLJRWcyQ2STJLOEj1YHH6ruhyT0kxv2q1xNkvLFxfv2SCjU/zVPeYWS75y2UzEnCqRrTikGmGyoFeKrqQTsL6ChAKmt80eZJzKoq52wJujXV2XEVQ4+ihyy7XyWSUZZUyQDtaosW3PAqxNgVPalcRdod3nKuECt7CZTbNf16FV6e+2jUbpb2BK/wJlgFjwDLUUyzaE3BkvWTOvzfQG3+atclQ5cduKOyloBbr1pgrK2uP2D05K6KPcLdbK3wPSLHfNsXUiXDc9VLGk5aNah/S9hqqwT5VUAWz8HCheDLBN1ZX8p4wA2fy7FMsai2iaVO1/B7UgPluZL844oOHlerPD0BkvXV92ZetUU+gU6vd4kdadvTKZ8lf5JlcEMS1k0r43NVaywCh2q8FLGbiYoATGcr7EiAKRF3T+E9Kh7qS+azZM58iqEd+OIhSEBlDRlHW7dJxtsDexZKrSNJxLqC5msWqPOE4ZsWshE7UMlxEJc9+Yp1gHLMmUaytJ+X5cxezEnxCknN2L9bmDci7Tal9UjzUyULyd/MAdLlNYy+cJhQLMGUAPUihVU6m1sQIJkA4lt7Jw9uZ+osOc7dHzCtrLLAc0uChFvNtb/wl9iXEiW44ICYXIB0/0nqEtUV484dnxUlzzK/0wWnUjIwDHLH76CnBJzbHMRsFJgCqLJS/cRJ+gp4PSo2bIr5AdgLO16YqK53F6/UtCRaRflScpfsdufvNvM8gW12E5dTu3WVIvM9L/2bTp/9OMypzE6TVFUIXW//N6xURxmgY1KQem1b8CtKXwRJL9cUbPsVeobvQOyIeZHWR6IKiAY1/i2Jg4Y5GSEG5R/66zQI3XxGaMul9ybCOtrcFkxuER61S601x8efJc/IupHw+SVDjLDQg41Eonv+8yHRl/HKLat98c9m600P3qT2ZuYHRtT6ktgD03IfdTATjgiJnPkYIAyt/2+D1IDdhfooSu8QajEBeMM8E6qmZVTgMeNh2edfD8MCQIqCYE6U+Pf0ZbDtixzj8osYQ9RSXDrWP4e4IYFmHm4+xXW13yEg8tgiVPv0gsiyY7x/CXAzAJNdCzdoslQ4xeDAY7CH1em088trv/Sqt8aU+fQo5WT6rRi3usS1IL9VUqNNHCulGWFFpxQ5ZLVWUE1V7Wq7JJJSAgPgVEQ6B18cuPuMqXJv+ILHk3tORbKj3hn/hUPUven/REFJlLR78wNKhzAzmM3OKtaVtz0qbmkcJbANjox9Fuj3Ry0/KTIGwrAkDcSszfcRNNeqwlMUPB+YXgAAYTEddus2bJpTwkKrXmgTiSS9oso1rNHL14eP9MiyUjl/mZKK4+ciNf1hqb48L0BZRlDF+s66qfm4BiA+7yx+d6Kx3W/AfmmRrnbZsR2u8clsi7UdMWxoysGQt1aC0XDl6z99H8TZThRK/jIV5nHgUdKr6h/4lb9Iiu7rc6lyho7On22cGzy879aF5kXLCdVWVX5NpX76fNN/00+X4QxeI+Jm2T9x2yRPqsqhiRYHDB0fz2dlOSIHC2MxEf60i8dEey46+Y+Yg3VnwXe2rAbWT7iKgYWXlY8euS9KXY46WFCJPKfxRnVEHh0Oq+Kkwq6uVX1YENu1IDpWQMeflvDyn0nv9jefl8OJd+B5jFCRORrIgDpiPCUdOJGJs0iVQTKyaQkcWS+KgmwZsqCigat1w1Zr2flY1RBdZnIljNplS4mCXzR5oGoN2nrDj2LqqySISliZ1QtJAEyMPCBeqpsMdqqlqkYbIrC2igqv2E8lk+VsWIr32BgsJ9R8F/C8LgdheAdtflPVfWWkCPaNhDrNBISkcJSiPo/kVriURAEIvOvkDtGYN2MgMSeY2ACUPHAx7ohNwSnEbpARteqaaILMYB/Cc+0ismSOpMAoDNN/i8qbIiIl1iG6w1ogDljqCGhvY4QX3OQaC344KS7+WHgxOGP+HmUZKhd79/7/u9LNZCVS5sGmw/QALlkepFO1o8kLCugdFcmy/EBi62KFke9AAImMX/c7rpyK4svbhdMsVqhvba2FkmSnjqQ8zqkezgy8pc2DwQve/0TZHuj7FtZCrqqYqJsBE5OTyPi/X/n9vCaJNXiwm9EDey4YS9syuEDaMlf4U5HqbEmH1e5gAUzHa2EEjE6RtiKDoXqOSMo7AdahYwFXs376ukZmmeL2nBgrbDKVpVW6y9Mdbh+fS7LEDq/gsRxsqtS6RyZFWBYPtr7rrhGOH0kQiXidg0xvk7H+BTY5YbczkG5N1gA2Crcdo2f0kwD5D+go7pZR32jPESaRwHA0zr/zu8j+aZrm0Kouw+QSTMUFJMj6UXcFXyO0faO0yqTy3lXj68OjjjcuLMZt4FEK/DiI6USMp6FCGE9h/2QirKqfHExxnShxaBMEUbEIa5ct10VfhKnqMoDGqVL4HpQvqGyJsIg2Rd9+2Uwog0jNirxp4nIU0j/t+w1ALvGXBk2rqlFDh2eNyx0DL2HZUTB32JMpyoHO+E+p61BDh/OHVIuUbKxhhBcbalF0AISy4B6g1yvr2tOOoCvxuNSOM5UJ8fWbHtkuv1OmuGJhhBV4LoKn8MlHK8TZt1U1c/54h4IhDFM5VbVefxCivQI2QwDmHIy22m2wLaFwOn1/Bn9fZyBBahAHG/AVFFq7IAqhj3nCh64Zcy8koLgNWM4isgenbuMoiiQOVMYUYhJ6qQKUeYg5tKBJYONj5rVWjpNkEqxI9r714VuHWkASSwN+X9ycr2Jz6Wmf0Wif0nstmwunsO2Qj3gLa1J6z/Y/nd7xbkKJnJZIPyewyMDOzVJDFum5hpB5wyCOqvb9DYvdKQssJDToTlcXXP+5qM4C44z1cQxddo6DqraOOgigBl0zI2gBeed7/aY4GuA5ycEFm1FebkbJmQtqjfCKauozfQQjJx51g49niCIZBWktFaCPHYLEUNgay33f1gxr+XPuHrG8fUk3N2oXEqJGU0ML5fgqltB254Xrtjv+tclh/GKg3x/500BUAoqIa6Dq9RSlH30/o0rpoEiLu8PHtC1sfkhT/4zyZJ9GOJDUydQcIdN4tJ2eIMkTFmxC+Fdq1HADpF/+9VvoIAJq+dSv8RiVvR3GU77WS9Y08496RMRjcFf+8U0PqcDtjNoUMt+vt1mQ0KlTNBZUXMUEcfH7/4rBrFV//EXnF7Br+3e2K3HHyOoJajsBVB0PhR5FWjeZPK+HMVpj/N4fV+uZVN7zw4P2daP2hzKny9Rhx3R0gFJJ9HJvi4w8N8I9w2PLvd9t+bHxOaIAkHfLw3xgFxrQ6/G5bgLRjsJdYSNAP0pTeeqC+bIpmgN/QUAB4Fv2kOTfpDq/HW847y9CxU7IP0Kpe/8clAFiqAcYlrMGoMIaMsNeJX1XaEZ5BZY9N+lSJ+Hev/CjfhbL+I/CeiKG0igGmA5mIaDYskZSgF7UCH/t0Un6YyLafh4mZ+Me1+LsidxaRAvgYDtIwD8wzqAN7uv7PnqEuhUNxlrMhIusYAtQeet6STkEq7IJ+SQ8fQyS6mlmBNFXKqqk956QQ4KQzqXR8KwbAxycO2FethOouubX8ZceZ2Bi5ymF8lK1ogbhtZQ429lJe+GpkkdW6ZST5VO+LDDcFTBowiC3t/b08IsHjJKad9vCSBSBK+yocPVRafjtaklspJ12FvXQ89vX3vzpg9JRjfTrMBOF+BNdmISdWbQuF17CiTk3YeHoWq0Gc3/JB5Qvfpjz06+uCNnfQAlN49/Kiajk7GS8a+1woDPwAufIPgFRWJsWRVa/ioIcqVvwYhAickbCMR/wMbdo12F/4vxVZz8hooST6pcSx3bbWcSnt9yIdVkyGSKosRFYH4ShNdVoZFm/R5/T8+FvcYK5BjqI0Opug6jretQaK6BvIyVlKRPr0iNW9seOzdam1sTGBuxBgbws8549x8uy0pUoa8Ujt/q8PvcsFGJ8aqfhP2bpUTdvQfMZLKyFumyS/X0qy9dSSKJVH4A51fQFuR7zwn+nAMp/85NRiwrKlA9dSFFXb0QktJYFTauXdYRQ6IFa+98EarBP9wCWo+IcZcK93BS3ATHtORkSH72yoa1gPSYS1rdcOFfv9bo6bTKFsFMOUazJjAjSMCA7KopFnXH4n1kyna0+Ffz1VvPfYgfMBPj+N97quj79Da2Ah06S4URrjNPzTCEnfOXXw3RwQ6KdPZjw28upAQJfe4+h4cRa4k8dXNkauk65M8tbn4LMF6+LyasaVSlk26otSXSPv4gWSzCt5DkBc5hJMCyIBCFVWo73cjXv0z8lMFLosnhE5dPFY+cdNks3WmfOkNJhCqPm320FEkjrO2/jsq0MBUHhL6yuSzvX0IOeIjH3+dQeTTIz9tIZH+VD6I+gpq5xTXE+tWOEMQaYoWp88AyTdDHF8PDHMillCYt5eD8DWwDtcPlIbrh3DuDAu7q1V8MrZSe29N97dlPzBNM4r8f3/cli+mnlX7xosxVYtF9gFQuK/P8pu9podWHnh97qcJJ0QY0Iv6DWfoKdw5NNjMRZ2+eq5Kf1oj4ic1E5dLX5YMiB9/LJysTEa82kj0ZRr2QqkH1X1Oa8kKVi5c53f7kjQ1b1rDiXh5ZpXvZYINGrv+rwsvH7bkEh5eKFh1QzPOUSsGTsc6qU3MsFu07OGPp7OZ5w8IlSiTrjyI+6GExSEaF1xPkwJ95VVP3Ahqub0+ebYTynLsBTt8/v+RVMqW1igCrg2KTtBHje3YJ1Ee+6I+PD5X9XZhx4ouitrzWBDHKvXJEwRdS41zinmCVcL218EzRhSL+de47BZFIFLM9ZPZtDB/s7ttVjGIDL/kXlfKQ8mZUmFDFiexXUR/j8J17dCcYfwCXCkgPAnLDNAgHqX+ebrJG+diiISq1nPNx5IyrsD1mqA60XvNus9l09nMROBNyxFwlA3GA3+lobpe0HtUo9lqcUn6T7h3/K4fUqYQnC0bvVeLSTUo7o+1t/0VF+rXnqhlMUrZ+16dFvQF5pxMA3uHbpHUB8du+01bfWeihiaD8WG3qzGNbdWlruM38BF+Vn+Z2x5qmurQ3cMl7NGavC2aOBi8ik73MLr+dBDKBdjLU0r+x8ti5JxR25/4f/ApdVIXjzrI1bsn16djckSjoTQhhfcR2R18UcQk6SlHyyM4eEffQsb1j8XgmksTTge9kUZMakpYkLA7XpyvSDT+GXox1/ObF25aIm9IblcRLxDf15sNbD9vCKNJ/4fWnzqumkgce580qUincgAJKh22pLkTX+LJXSxkLXtXHE4/xLvPOvrutYXQuZg/T1fCCs/veLArHXdt6r/8MK3NO+MIo8RpHHi01YFl+JGjKUULSKWNbe+6jsIyipF/TLlUk5PG6XtIVIzHF35kruvY5NjqhCzyCcVpafvOSxwOAgX8i6PACYY3txLxVLCnLIwZ7ugS1DyDW6tPbXYT60CFPXPSHOle3PNJVUwL962t9uSSPJGMbsYVM1xP+q5A9hUuC0OjODvjVNMSHYeDQNl+wmHmwjcv7rnUbIpSFjrASXhir7D6SQSwVS9RiMMrno8983ySAauiCLh9/sLpXuwAunyk6ecPGCy8qCSclhE9VuiCafwtcKThxuRuZrWhv2VZxXTolD9Zp/jgMPzf+BqHn9PR8IPzReYYCaqs2kur8T655rVDKf8vOUhmuHr7ie0oie5wbhL60c8Qk5iaQoIh0P20muhQO+it3E9AOeixxlwbwgyRrf4E3SQaOCm1/oTK/9xHnx8bKrzEKHF/8tmrTFY+XNZO3lCen7HMXCzH3YdtWDTzkOBuO+CrqT8Wx9OByNAipqKoOO/zFec11jqQKJ7x6jJ4xTpeIkdVfuWheuMdR4n9We2mRWUJB4Y4g/41nWO91sZoWtOTogQmLhMXJTN3svH9kML7qp7ircZc3styMGjHinngFkViTIg+dqQ3eL8uP//UCi/2mNbYU9XvFZkXMK/AtCFN/vzRh0/vI14kxhxKileL2iw/3FUcjoiJYdZsMrnPIUGBuSFid2PCqBfGe0dlegmjOax3IoC7k3zI2JlpT7+dnze1QR5TJSUoX5w6pyEPF8OI+7yynkfv86v+PXk7/NtKlYgWkEol64ueQlcsghhvHkVlU1QJnqoDg0SAGdPrSO6IprRR5YXeWz2N2V5jaeQkibiMJD2nAU14jTiinbz+ou/QCMil158E6ABdQfFGgiDCJ4SVF0xs0BQ8frPK/unoHuSh79VT8dfC341sXqA0C18cFNT0RxIqlxRr9UaVjLlZhSHIbIUnunFACVSmJTSL914UvU3ZhJQGU9lAEFmJJEJQqyYDAlxaUFMOAiIKtGBqUc+vIThJM58fAoqJ3qALRcgRLOnM0UFXbb/iw4o28NVuxQJlz6HILKq+rURhtk2um97IJVcpFSNCKiHqbxD+/inA5CUf7ylW4okkM3/tukJPuoP3Nvary1v9pJEC+KuuQ0AN489wxfc8e/fYA5vP4U/zTpKUUJJ5LNYSg+gprss5lEyETznxRFXV9kMs1NWwvMeQm61pDnTpnz9ZaN6fhIkp3Nxc+Nl16p5Dn7iKFHyhdH3U8ixLauHcO8hUxaYiA/oKhc5u7p9o7YLazkyb4lBN3zhn7/Pp+5rXkC74NExgX35No2M7MAOqXSTKarObXQ3KY3qOt1g6TTUtIlhYOfzKseFawJGtLZd7U6fAyxzwOkTJYlfNomK6O6JpQvw3i/b8qBo912OZ3aGLwDTMjCrcTuBmwPQ2/7B1tNR1XHx0Vikb4P9etC2ubrX+GN5+SkogFyVrPBBInJUb3VkJOcx64wPqSlPhkmfJ0bJ2TM/K6oBDN2v8psZKncGo0nE6+OWzeIN7dsqhGvtjow8qQSdOIe4mNO4ZpP6KnJqH8rzTe4e1VlOXz6B/SE9IFEwsOhbEzWZnwjgqz1oRacb/2nB9ilpzMa5scettw4XfZ3YC0qnme2evOnKb4//l93ClHoFkVFrNplY+vpmrPoR+T0QO2FMH5KnjKFpAKrI5CrmmupEvmhZ8tUuELhbp2RUcVMhP6lSKLAZGy/vURx1xiFVC1DV72RzDldYrezzZHhpfMQys1GriOzqJlVQuYGAmZW16PAW3noValrC0dSwbOzw9x6CHlK94cg21vhKiu+3lZAtz1MNX55uWkDdlqb/1GTsDKq+zko8luhvFTdwWavd/jSfcUiS0W0m8pkPdvzMlWpxBgqgcNGPWCIRYkI5SLFhZulHFT6SmPNKSqvvQbT95Jp0c1RMkb+0RFfWdDEiC1paS+F5Xs+vMH7ZPWvWFz9maqZU6jmyuqnFVXBh13vntxvGpdlfCaqjfL3RYEb7xfv14UWeV6qVxHiEuIPbNTXT6V5/scllsIpwZM6x+Xl5nv/6D6xYEf9LiiYuQwCuzSJ6fhgmn2gc0x/mX8Jfffl+X/MlZMKy4tV8lTnpsDB3wy1am38hM4DZUL5/+9qoSbqSovTZG+TO55i5Dx8qM1Pn3x2/ZZ74gQ9k13au8i19w+ehxxl2XuTmHcz/0rn/A0UwGKXnnirEH0/4k9EecRXNbWjlv9UvDXlf9cphxgWaNTYk4s7ufdK6dkGsZDzVESi2z8OyAFD4lbmPJxEyFvT+6j/Du2sOFtvoJO4tUNCoaTaXi0wIDadSNN7X3v7r5L0yjLxcOdqy+0LKrRL9b4+N4AF/aTKVJtJr6dCJEfP8w9iUV7CY7/HWbYvd1C2TiX/gS4r05IPh0RdkOWmLpaWYU0WScGJQaoZZreNtH+tuHCKx76X9tMS50Wn8cn+EtSFDxsVzq0Jtp1me+3g/y16UdtJmMvJ4UeX5S8+zst0SULnMPaBxGcr62w93jY0QEVvw5yquXGz1t+3spOScKCBHsd1iMrW5xfEVoRPriSwG/PpLWndTSdbzqd5qoMDNodPO6U2wDBeszhu3zdq77gnk5CbLOlFJuaEElvYEF4FOITtaIlgrh/YYx+TVgrWEIGMeK2qz436NX9FwdZb/4+qCB5fYBN9tvxZeEgG758Az+TM20L8+88f2qB8Ys7WK+1OdpysgAi/I4noQE80cNiIgpptNI9BIpWZ0NzclZYVlH2jkkDQtFDmcdtOr5JkOQh0K1kct7j0EirTKYYlNgktPAHlWqRcKZfEiLzzQ1YJstDTvV/NmvL2wmpZIB2YTB9CEKhQ5QAonLMLSK1k7qO3vIgLTM3+khf0VmLNMhC+xZMmtf4MWivrqAWTw/CqY1jnKOc+rvdfHMq+s0POWb+4OcQUI6iaODsWNe9x/iFC8pgNTvhaWJCDY2iYR7gnH01N3HyYf0KiLOrVk6s8oJnTg022TQNVucrU1nnBsM//yY3LiDt6C9hLrT8Yyh4UDBq/ru3aYfk7IWzDRPmasuETlZhG8MenjSevVPgqL9mJR2Hqn7PysIvbtEjUrG3lbpdJpOpweDcO63CykOBgBTZY1r7jbD164GC6QJ8hsBKu9XWdErSfpxjOqKf2PByCzmm5s7+o48FQn0UJwCJaYiDw2zvcYwMgzKJxhpLFdosulCtQIaTBg8dI2622L39IdshxvKK0/hsSF2qCx7BNzVT6jevxP+WftnCK9dD1tux3CmTkFNVuva/P5pI3Xt/gj1jM7a5kAN4RvGHw2VDn15vW/v098NfdGNFveeNESrd5ScPqESWamaMWDNWDRAVpP9YjaJKWbHIaP5sgbStn+Mn85EG9w4J4gSKoWipp2I+rhDgV/0FTRErWKPKMKiXhny8RLtAOU9wiglzoINbFj+8zXpXZ13DUANKYLVCfnUmbulTHIl+RiLLPpZpTObJ3eJECqGHu/YJf4zn1/+xsgSWJnqdvU8sffXKZBbMoo79+WjwukMc3oKbPMppx/abYQPPottevj1+vcjAVzsEJMd+jM/960XhqeKefhEh5CPIBwtExvsqWyKYowdD6G1qnwihaV740Cd+K5T/7o2cRfQOi28GUjpcXWI532bK9GV3fdjsNPIeWUMM+XBYe/pqzbzVDaMqFifiHTexF4xxqm3B8t2PIhTlggS04WYB680DUe9WFtXVPy7GdMYI1dkuhGPhnzm1PnN8o/+TH1fi/sOcGonkj9seD0uR6l6IHwzHNmiiJfylzFxIZNj9xuU9eYbC+IPgSjQuWNQvp8oVvrVUAywRcfr0YoKL2q+LsYTxrj+EF0pWerE73YsT6QtcDJmQ9UISTeWl458aC9GHuIM4YmSt5WQLzdV1c0QG7kq2KW+Jx3p9Rrqv0lE1nABpuXaV6cxDOLoG14RIpvf6pfrG33d3a9vwOSyq5O2f3P/fcEQ74RfrLDo7fgoAmtuYCUE32yoa6EvR2oKN52p8b4gzu/b6gkMbzNShxw49mE2Mx6Fsul+wzikyme2aFSNzK8DBzSOMNH0avhJKBuFOfyN/7/yrK/w308/VwPCTuGJYVB2fm51HPLsoXuBK+pRSSQmmVuJNgOGKS24Wo2P1ypq8XXnASOuGK4AMj1a6DVtaylBwhbw9ASjSdT93o4y7+m+4yirZM07MD5IL/Nf5p+4M+/MBAT28YyZLPUpmrxrb5ns9jJVzGmheSackPVDLKhnpAmsrocXhfyM1Pgm5YFc1ovghH3IJJd6qQiawwkpN9FJhvXW171IPhXdcFmptktm6ma2/0DMoG+gZ0CsPAAppm1M72ehGt+l/4CwgjezntKCGvjgLXNSvRJ2UI/B7dIBPg/tbJfSKkzBqwhgPtq/Bp/twb1I6QS8XjSe2zBNAIxgdYJfBpeW8QkiuSUNVbcilOO5hRN0aNEyE84N7LtCCrUkwc9rHcQO8NN3WVojxim1/UIb/GR5amPQV8evInmJRC7PGsenG7f8+GrnguoeXuPEH587JIYXyGGYge7tfK8L4FZhol9qJFBmdwaKx+C6zdoR9Qe1VxHiH2JoOdXDhUnzSH1yU53fYj23eOzPMJARgnDzpxXubkPMip1RMv56Y7C5l9XYVCcbPVOt3z1hddUPvx73giwFTo2oI3xL+HinDmSYlb6Hv7XYbmJmrYIzjZYyqX/5acJNQAlsUiAA09lwrdCWiwvrJStVz54kkr+M90dcjg/1/H9/VXKzNdqu6ISUnQc0/9tqatIoO/61IGy66CrEa9G3f/Nr5xa0+MDOwwC98VIzcse6E6+bq9w/zLzc1f+Tz017IYCqBqzuqr+JdA9I40QuXgVlvYxwI+mfS81HtBSj7N/aWvuCAes11Up/na2jDNMyYoZBkHel8KEOcmlQ3oGY5fcvnxmCB9YnCyvFLuAoe8EbaOXzNRcONObls9zDietIjeKNil1xY5+a30DL1aXXuK/D/pl1uOW965PZhmzYxXPyZ4Bw3Z881dktUASZv+Z5mfyTVPvnw3cNdQGqfO+YC2SZGxvz8/4z03Q+3N9JW/fiw+eOhG2ePT9ZBkz9K7FYu1LcqB5KRH27Eu2YaiiRuFiRjPehTr+RC74PcQGMlIxmiB20LKQBCZ9WJMTyOE20aammjzKnNkeLIu9kGcVQDluSwjbhnmT4oVlJ1DGF3tnWbzkVTM1AhBtsvq8Lhhri2cWa/Vqod6jzXcBOCW7Jf2ZVW6/+iM072bIZ3SVfwve3KKpUmg517hZyrQdI0nR4+e2KTZ0WAd0t+rH7SevR8s2HYts2Y5tKO/pp739zglIVjFYxIsxYF4xYvi6SMiBBUO0Mvz8WFMJ2cSN1Jjb4hwt9tdX3TKX3nqhEaO3OavG1nFXSZWrYB1VG/Tr0kzufe3Gq05qwj6t9I1ES6Zaia1E6fQAoZvgUpSGaMNVBA+6hMEprZiwVvYy34VnbfSvT0XA+JbaS/mKLNVG4grkS3skYj0ykejMI71RZSQgN6ZQm0HqhYSgtvbXSb60j8DY/H4HAg/kANOvYLKuyDtrdN7xfCzlxsxCyFu8iLc9MPfhffyli4yWULxjf/4VGF48PuZFTCXJ8HyMeZnDP+8PNj9ipbAQcigSe9vbJqZRzMsZ1MHsryv9617OGkgm+17PuTPlJDhGuQ5RqW4A8KxkwAQ720tlbuR4t6pRcPAA8I5EwFVMOTnppeTcebhjdJUBudyJuEv4UQy5yDRBaSJDlBM8vHLjWYH6A+7tHq2x9I7B8QPfKezvifc5l0tN3FlnSsWWDhdzONeQ6jo+4V1W7I4PkjtXvlFwSrEb2uZXhp3jIUUvE41CFPOrGt9sHdLaN8b0fIObjk1YHrBjUkPmmqAF2r+e5yvCgm0jBp5BUVypvHWC6+CYNoBhs0kPEjT18foO7y/X2mtyIAnkeJCrgFCbA4XtuLVZf4Dx52ahyTVNAfpgObQEoEqjxV9FOaoA8RLZSmsO2SS2g/0m13ja4podkKXqzi0l/Q7zEUw5T3CN9NGFl6Xne2dIdZrzUX2Wf4Q+8PP1knICSlRz/75Yqcm8SEi3dZr/dLuRq5kQvFmjC8gc0pNGUhOCQVzM1UHoMRW+nsE+GJxuyMLlcxvm+gKm/H+7NTRPoi5BWK/fvkrtHaB94V+AaqBnGyYvmNdAm8ToOkWg5vPHf9w2R7sRF5TlbV/MXmmeY3qND9cDODgYUKLn54ytTN3pAYFBFY3fVv2TqUrjWDXn//JCwn4+7NHwvf/FNccPeG2sZF/a1POxKj/GLORqh/6//4yBC1FGs2JYIjbswtjJ59T5UMGhX2CZnTLvirt7O6zdIEldPSXQ55qGc5hq8SBFac0eQ10VNAuooaxBsUB0fgQ8DQlDl7ZKzp4/5dVaQ0U7Zb1bCJnAw13z1jj5TqDi0v6KhjbbIS9Bx+Qz0g9VFT5rlluC+N9Z8RU9cWFyooZ9AiwrLvaQqEf8Tnp70KBm9d5d2SDXo9W4m+wzjIacwkSCSQxNAcZMXzzlc67DV90YF51k2ewg/W4IZp2DFDDQtIMLqzv52ogKlXOXpZ+Y/eKRgNCjo5RITGeJv6JR1XvkdT4Xv9hl6lmWYNYAz2FthrS2Htea7ikop5BTFwe8r0H9fnKcFil4A3CyYByJwQTW8mT3t4Qw/OWq53bmZxqaIrBGwG5OaH7C4ISEZXmhNRrdnoBjc1N5QchekSDQbpXQZoInWZOTwgSgOnCM7wrlQjqIpaEulgZn1bErcmUjuooSBkp8foSK0iSihV1UkSVO/6PCVYfA532Hz5OhM6MSL1D0nzU2F57IINft4wyiwQM1041XYbzRQWSurI5Ajc8/0WETYIPTZBIicUzDyrG01IkZS3oIZA56dZTjoChT6RoB518W/390CUJZAqtPq5yjfATueRF8amq4bbJZqKPzf4S5xrZWqwm6ZJrsMTwJrNnuge+bxpFNEfhubCLIYrITYZwtIN7X/4qA6hU+QI2E5VuJLAO5XYblyZZynT0wlTmKbey2hCR1ehZB3UFQFB/NM3gYTfLcUv64cCHwBhpoEn10K7IxwVJ7r3+ozQEPPX083V229+tEZ8B6w2V09ArZBJkSA3nVSAEsuImlCmOcEvh41wDf1cGIqIzE+cWw4O5QmHioSZiBz91tp2UrY0KDS1QrQioCUJOYh9aYhw9sHce2oTGxb4310pprjOaReMFVuQzRnq9morpjGVo80JnNwHK8/JK4fOuA7RlulyC1tVB0S9oZOP0Xlte942GKGsI7vn1F/dr9cInwWnNh3aORS7Y2e84djVrhvhwcw+uJDqwytEesQR05iLhBm/5Uee0kZh8HNXrPfDZFZoHhFtOgWNomC+DiW1t/hcQjCwGSOGCmA6x19S52ESYlHkCAX2/BLXxZybTyoHKUoGf3NijgyiA8PTVemln5GaA+Cirf9sLbkpkmWMpR33r86LzrrRS4PuMUqgPdviWkUxIe1EZPgnTpRYLusov/ifSlJMdf1olPVYz3YfTsPuxui4VmPd0grJ+rJfTUkrsyGHEDHuUWigAu6NTBUJJMlQ2ySjwnuyahI+NDoWibpCZhABII8PY8+NxoXldaXVwXmXamX63JTIrKNurp1I7EgoHqdAMzheV+NogzWoheNJp1LEmWK2YCXYspwdy+48xZmhFbfcOgzf9OOKs/aMEYVlnS4W0+huptG+EOyE4oserPmEa/G/l9YFZK2VxAlZlNMLNtW51pT0U/9wcx1RJ8TjAATAlIy8838/ZzUNmGbe+y7qBDWoaH0YuVbgtc50MYxsm36TDnvn7ZNXGvBvOPGAHPFQeJV1DQPLIAz8OwdT5p9rwWRWwGYHHQjebMU1eNOyX4+fQHfuq65SxAUbofe+vuDysYR3R/l+aKxy5w74jlAk9MbVsl4aUkGSnsc+2hoVjY5gL5Y53VEPO0iR1OgWUmafG19VUVe8DGpFD+dFyhpCME1Uk5PM8BRKU3Xzw3JIyAarH4G0KH2SoDKVGg8mo9yqLeVjqxQryMSZmUa5EntaBvFB8BcioCUzDRCSOYRKxNN+M7JQYJx8fDMRpRLYksJVecZEUA8khMCph+8kP+acmHtjo+qGSPvYeFLhq3gwBUa80oJsH8JzQgpW9UwScyXm7/+VrTWkTu5EB8LJsTFapXM+I9xdVSfkahfyI7A42PyPbASqR89qUP20yAu8go28OxV0ivVrJHIwiRflgw5Go8pntUpe4/bk5OjtIBdUZgn3RpHXQZNYwl0w150LsPizoCS4j49YSS2GM/GeSiDRyJriI9+eNv43cb1ykmBE+2tjn+VeXFlYrcrDAxugOUZ558+MIir40I0bBWX8K3x1Mm9s+8eM2noigZDgCTVUQJ0tTF+iTQ73AhuWLhyJIwTHmYMWYFqShU9RMooRRKpaFGuQ1mZnYUuyoH20F6jAPBmsE4V22BOJisj33fwcEX5xyHUR1IHvJLCxK/wioW+kHkXincPpxjqn116vSy78a+jdquN13y8bAvh3tgk8Uv9QVUCaAB6PUBCtmGh+0B2vVQsakmigySySV2jC0EDqiJtshod/MD0Lqn6F98YOo/wXufFIEXouflZXw4bLiDCgqMLICpzEM5jiaekaaUMWVw8a7LxSnGLqRQkRB0Jl5cjifQHsn9txEoUzkjancQMgVDH6JiErCWq6EhOvCqs2x808OkQaC75plrb3VqaSWhEtOCqbw8n2Sw53UrZCrm9PXeCWkDH/+rdkyhMmXdqKd+NkMndOEgmZ5dFkaS3KjcRlbGH2bSKt+P2mjUeXidx8riO3RRojdm6rx67i3lzJkSPUtJkblhSeuJXDUazhILeR9W2BnkUqy58EspnLJ4lbeUkQbD7QXn9pQcpQtqD55SkcfGAFkv4V3Ha8Y5zXN950wm3tQAytLnhFuBEfkBEMJ6O4BPVJbKaO6JzwiwvVda9KzGqzXeAT3+2QydJoNRpPZwta8OSC+6pFW3bA0ngnEtsUGujPzSuhfhYVll06qorIHU6kfSSHE7XfXDU/0t+KmZuizEDFycVkp2j+TH5B30PrCSj3t33uXRiy1U0rMFPtAiTCjjC8kWHaFA5itKC8lCzxFFIakFRAVVDeiHNVKrBWHvlcNU8WJ4fFdXtu2CskmYN4Z64FpjishE7JHu2aHOt7tOfczOXd2yPSr+hJUrDbDafrxb/6oogrQzudyK/uqutYpefZdzc3wOGBzC701t+xNMCzlErncDupYpJY6otGlyShQdFncCpR97FC3YZZfXsDfVnL9+1h4lVi/y4gCxdYaRy0eI4HQj7HO9/o+KP0VFyTkbT7vNDGgRwxVtnracn/iMDAJwk+yd7uf7JxoSCjBP75U9S8OmALYRUzy9cPbkmvKdy8VKyKXC6BBaYegOfP2aNglnzsn5ublr+of1SCDYR9U1YnHmbzq+fi8H8Jr6m3hc+LRDjWVkYEHwYrcnjRreQWTCQur7T+P77aVsB+Bd92cBt1M2aTmudzI2R+w3necfL71q7Wv/b2bd9rfWMYUZbrQtcO3nOSfYMnzEtbOH+nCRTV93sKrT+7Z3GzQtj6P9CwI816MtEWGbcwcVM49nxml/dcpoHcTbptRh915qaGFlDZKT8w/TcSrAOlH8CFq/7L246lrkyq75Ok4bx629E04j03HE4sn1JMn2+HPJ0kr1KkLUpKKho+KvIIOvracPFyFmkeivTpVC3JAUcCfQLHhmydPBujsv5inQT6R+CIRNsvsgbPai76iIPaLmMX1c1H3A3pQWQcVnXlUW2OFrXFNjHu+/d2aJNGNecPdL52bcDAuRw2cSYfCdfQ5L0ZNOFKVcBCVLa42eqYoznqGlJWYp3nBwN1Kd1Zfzf+pWfaRxOF/WMZyH0HrqvEMtgkdGJKCVRlXCByBKrjCLwJVdEJzkErEc+X4gL0yQCn7na4x1q4uRcWP3oMxc3A8Fb7ZAIKzkGMF780yrNpcUY8wKrg9WocZcQpYcysM+Kxb6dkMtL/9ADLi67dTgFlmbq8cnLxMM1tjPPA1sQsNJT9xwqMr/UPaAxb9Kvgt885kdmi8SXvwrvV/g6s/dDfHWaSK/ZydoAif/d/pTQHi+z+wvbeyj71HNgwLW5jsgJQDvdxuLxz5+Ma+lr492pWC3tWowqV9wBi7t2uZa4bXMAVRMs9+V7f9Cv1XWmkENUxfbdP5ZfdlWv6n/HGpi2HGDzxknzHfcjKwhzaT1iaG9WU9Zx7lqfzs0dM9CRXXdDIYe62b9mBiE9W8deH1rphCvWvFYYdCpcqLulXivJemnbSCRcPHWWL6oA4TC0C0sDVq6cqHeemOqsVtBoJ9PK0vGOyQo4n5PxzvGBk8IHfjT7iS/7DmgeTB+7/UTc/e8cfW/rlfRxyrmLXXspcq0Ow+JajpsrSOaUuz9m0RlyzuwmIfdwEb2eyGgvCE+lOCncDwUH/0driTWGlW5UnPl22cXMRK2zMXS7uNWwvQyMZeXAcHdmwPDlpURA0uMul0qPEoQGfGMwKhIuWmLYL+Tosn08zC+jdAG+PrBGha4FlvNDLY63wHFceWU1aoJ8kFKV2wj5Ihs9Ds9i0mFrucVWxWEgDy8lxVpqRSCcym1QbhzdQ37zHi6OGyMjIRS/7UWC1X3DQYaG2ruNd48NP8LjN5vmIzYkcaKifC73ig4uQAFI3rW1zDgP7FvsjP5akBNFXJKxL1M5Q8RnSoAJ++Em5e2ghvdezl71LQvx48uEb8SAPKgQk8FjcsLqzRLhnnIce2fzy0aJvxOC48RMNXsDmgiaTh5BLoDlmP0pFmen7zAgxoRVq//zHzPgPDStcOtrsuBwYZSA54skVo6S/LNAK5XiD3FEQC2Qzj9kkQ8AGznmSlLo2uMT7Eh9zz5au5kCuvVnB4rynRV6xA1qorfdwG/jGwX61vnPEluJMLyH0kjYnYj1TWlDUFIgdFxMCLm9pd4Fr/uqSG5goeeWkHmj6ykfPyoWnRt85pNR5aFQsaYUdptBaLUnK0VieiuGO+WIq5A1Kl2IqRnm7zzc+BpqJ7xt61UwmHj/zpsrLLzkH4Sm5NSs+LLJpnOay3kVCS1Jkeqb5D9ty3ZOvFv+sgj4X+znBR7+sbvk6km99iqE2RH6q9JxDcZMJz4Mii2VvSFxdnE9Ddj7CYmphIV5SpfMVGWEusikcZDemaIDIqXfvF5ranu5MLCImBR+8zQ3cGqxnqOPl8eFLo1+yrIk7DHVHwyoXkRTxeIXRjiLAOrDirDrM3cJzOuP6k2KfLrFqTeaS3kN+8GOM69/5Dua7Dd9xe4+l299jYAOwYwxsc+LTZ0HJqboeDSCMG/dJnotwP2ajgYcQw+MrMBCPwds+RTzctDjKMgjBvlxW6K5lt81h66jYJiLvSb+I4CWCIvrgTJj3vAD//0iM6DMfExnzj4gTf65fcXx5smixp2w03ZxwLzG8Z3/pTkidW7F30nnmFq9SMOevYcPhGx8FtxwM+kgl5w7fTdjy+/sbAww0sWmIn0CMQkFuT+TaFi76PGCdyJytdfvMEbl80TRz0czidYPpAeI/wkgN2RvUcwmyQ9hg3QmmeLwTAFfI6uaGt6MqlgMcZEj2uHJ/p99ayNOu7iclm6z2WdFFH/NRlqs1863Cv7QkwAR4oOmptU1Pd0dEyZo3xq8T5VAh2n5ynEW1YGd2yWLwS20MaiaX3kKAuORmY5Cvp/UX4oXu9o69GdD4NoToimRgut3gHYV9TMcOCUIfM09VyrKcJOc/7/6hmGBpO8ImMUrjQ3cv+br6/N1Oe9ROiS7VX7sauZ/vf2f14SNVvtAeK0y6QCp5pxgxkU+9APUtjc/TrAaJX5BTKpf9+1AFf9ArriMPUPzO7WnvyMZ0VAbjxen2PyKKBZyldcLBVBjS2uMZfrEdBmfhGHOG4U+5u/UEyazEOn71Mpk7IARWWNcpFxEWK+p0LceYP+aTSyEogiLAluTQEFCuD9LxHBLa3Mov47/H4AmFpxM/X0/oUxh64ltJ4AncmGxRMXdusdCf0DvH5RUkJFxGrFzJVShkAxDsXH8PVHcUGHduDt6ccRp8IOF24JdXaU3THOx+8fhnxoUwjco0XZj+lUjIa965fmpe8mh8FOyv1gT/ZNarjeQSJkShY7LqVzpIwGqOi1ago4WK/Uy+p7auFHAc9xdy6C8Q6Sz0doX/FTQIz8AK4urRpId3soPkVf5S/iwu1fr4M/CP02kqQryPukDWfJfvc5AYfy4hsnkbGE/s5yv9iNzDWXDJToV4mYGZKmA8Ka/t2M4CzxJO2psNv6cT1ipX6MK7djdz8B5sCXF4mY7r4DiKhx4dH4BdHkg7MKco488bxHfv07b9ISBKR6GMr7i6qI3h/2j8ym/MeefDFXdvR9AjaPyt/Mfk4FU/D2X9QoQYRLDSeSO+ZlaDSur5aXCXWXC9oC4gqKQU5VCOW022DEUAqU3vlw6rmUR4ctfArlcsUTNPK3J1JtgpninpGR66SOh8TJAKeFxMFwgFPfyk8x+gZ6LBsEyxfo5oMQ2lIVT0xnYqhxnICv2pbpUYXdImVqbF/BciZUkDjed97FkpiMrqFl/EebIV63cXxeNMAHh8gbIFqI6aU+ZW66n4MRd84gvuef/+ndQtxUx8yGj77Au9GZ14UhUWbH5jzqaHzZCKfk8bFYLo8KhRbai8u+AbfuO+WvvUIkTJddnvDRYMBlT8UDK5/IOYN8LMdkZie/GHH7Uc8Dgib+MvrfvKVY+BI/SsQDpH+cpdBHCBYzKnuYzQKDvmpPiNNEBvc0dfohG8BvPaP3bIgWO8MEhUK+DvBtGjS4VjGo+nA88OPQmOu3ku9lxBRHb9UbZ00YQDnejUQdZOafouSPgSUCo7ziTZTuB6s9lzIst0aYjvGKzW1oLEo5SZT65aWnegRzWGarZtjEdnUJQ9OSQHA+ANVIq+/P+HRrnxsBIlUgdgR/WjLvj7XW9cPZBkuO224jepImjcazg8M1Ko814/N77wz57x35auLV/l+1fVdgbhGSwVifPNFAIb96MyF9/1FPhdjfVKpr1/0YbduoWbiqSieD6fAnyUdmRoZcEzWlo2vE9WyF2JgCJZ/oMBGLpIZ6efDLiwcQ6GuRCQl2eJwkWd0x1KsPxFsMR9ZMYzNjS9x+F4xgxlhhms18bYgtjK7htsx1xiSCojfXYT57rdht8NfT5bJSbBqUMsVEhlVcJpCWglciG4DZtHeEfGZlu8JxEs3y+ssE2awYnjEkgaTNe/5iGRcloJ2lLkd697C3O0Ae+JAtRBQCeASeCXQhFU2i837UKoWvxrWYNhjW5p1T0wibKGxPG7Yrfrt+7KH9VWoWr63NQrb/utcny0WHXaF6fXvHr82AhH3ob/b4DO8UJsN18PrCAC2/CR/guxB8PpHWvMIZZkz8SFKYheWWJT59y4ucQIZOevPkhFBbnqIdeWJ83QzzHsmgysb3TvJcRAK9iWHP7p5t4x0Ir37c3XeaObJTKRkS6TF7NyYHBypzgyIBZufYQNySIJrAd3DlocuslQsaFaYaQ4ysvekDakS6EnJh7axivsSrsuqcGogOHDXoeEKE6Zya0swUkUwIvjUgS/rjsUBxbDOq6AauMdXCKbmyKSd8QTKx8DrZCMx09GyZyMEIPImfdEA9zogOOyx0i1kfnZAa1Bvo/HQ49+wT0SMBJ++jc+JJyxowlsHbb33hIF6w/txoediPIFHg2PcHQURbxfwrbZgI370u3v0fA2vGo8AYpt49KuDzYM1AxAM7PQp/L3SxcFBvggZmc8VC9CO+MUnVeyXkG3aIng8ikIN0S0ybylp7h6kVoZ6VLi9ZEGzvlbEOu+l4U4r0pnpgHI29VlkQaY/ffOh5qgeCmGL/gIvwnP3yMHZwS0BWC7ZSNTkQUHEJYHAhfYEvBxpOEAMmo42BflVlPIu/zrLHISILEuc3XLFsaxSDB73mVxGgA5orArt7dcMhv2Sr1Br3i8yVme+hVGO6MzaN0b5Djs8dlQTpiQKzzm59rxEVBQcSMSg+CIGMPT6gpcI3N8OMDDE38cl1W392js7ytCTcPxqEDYxRfPBWFT8FIvvxDCCb4jck8tkcL65H8QngYWO4zMwfTdwv+IJoQfAlnmYfUmYU+pkEpmkyrSj6tAhR68/OVbOmfU5MY9u4TrJlV6oREttGAB1sEyJapC3dszL4S7DvJfd3VPTMoG10QGVRD+EoyymlLirYpu5iKaJ0RTxG8LcQn4WRKVlZS/fv+FNLSGVNI3tFM47AAaSSKGTAI1SgCZHPdLxauZ3OwKqlREIipfSQuV/d0oUf6iXDttBkzOzv0TPQrYqbm0hrZc6ATmA+NbKjDv0nCqd5zxpqdNiFWe7WxwUnm37Yne/IDKlpJFO5GQEy6zwmtS/xbeN7njI/VCwshMHbMiLC66K63A5obEPOy4BirTVuY/noEjGoyADeS11fo5kJQLH2Prc4ECRbEsXpy/NDwVHd4joZ8TlJWjennpzCgds0I2anZ4hlCpQ3UlyGikLs+1WH01JgG3dMoPRMRytlnhtvaWws63ozS36pfbSA2dJuP2XOBXewJd/mEzWrWhBYul25fFsrlzykjZPPFiALA5mtHlrX7/0eq8/8WHRxWBUIg3MMYq6633a+Or9tOq9PGQpdXb1ZmUawT3aUfau5X6pKA0uWUoqpB3kce8i9mdDhxsmvzg8vjmWK9xpO1t25uGG04EiNBnUrfkMf/qAo/wBfd3lpcZni39ssn/JNnrvLNjbPn/4sgXczayoi2tPm54sXeROEyxHSeWh0lx/11asuf7Cot+28tnS/2cata+PaD/80I6qV1jD+r1barQc8AYtbKwKOsirGbrhrT9Sfub01cLEjK+XAnRq1AWQ2HdmxXODWrg6y9WuWUESHBR0hq/ObSl0NhhpNQHmrfbMOBl4ifrpSjbNRO+9qUUzdyZRwjygafS9vMP9ynciRBocQ1OE6SVt2zIfC7P4uzHAVxA6g1x3/tWlVk2sNqJnZTQtq3U9fdl2FeMo4xZo2LfkSdPJ/oThm6297aNGAFw/T8B4DL6WAAW8g6m/2949u3w+nDhlR/D1n5tlJ3P50LWucJ+/U5a8vw0TFdlsW57+KYrvrIwOWlS7DRmKNxA//P1rqDcHwBvX7zsPSn98aCm/fsYfBc2MUpQo7a+fPyUhVtxdEO3/Hjufq+rP4Wqt1y8H9OkCm/mnKx08qiQ6A9gwLWcp9are6pqrad8eqfe2d+25zp9zWVg+SDi0alsp0LArVUmKE627H7+zdpK6pYBZrGmRuZ4CtyWD1Q87G/m6Ctpdjwg6JGeMwoIHjESgCj4aRdHpUgrSSiQSJs6lukbd1plRL6Q5fn1gT0edR3NSOowxrlb8ZFSMRlDV+I9s1HjKr0gziapDF9HFOeZaFI0oGRYESQYzwX6uJjJmxHAtCQ+3dGFiUwn6W+/boA3mASTMkBxI+dBwhH+6AOHj/DJwYHGc51G1CsTdsNDQ9XW0iH5Xaq+lrSAmAXpgZI2dLR7FZ7PvN5rwNp5g+xs4NhZ4JdH/D7aFBR+KHODxeVnYR5/FWzGJRoZByuMFRy9hOJ6fwasswJiQnmZ3m63//GYLIN8JX8SX9a2+GJYHQQTEQXl+b0Oe8zZvvv+EJzK+KWaV9nHqaq8KflB4nSLinTPPBT6RYUrvCSWZmmfLv3p+19AS9VQ6G3RzXH/ljwyMdng9J7qnZ5mZcQ1Y/YrzY0HhIeaBu2cb3u24tyl6hZEnLW3YspFdIm6cAqFfVfRuTJz9mDRg2nBNIm86s1GXDdoOexbSi3MDhmK8RX8hp4t2IG3D/4xT/EnJ076B3FneGV3iyOHU8UIsgiPh2+UGDwHyDvJqCDHwUYvWSdIRqKobASq56J5IouIi24s1Ilhh1HmcXcNDC2XFyS9Ea2wSY2gwqsSdxHg+f3NfPJpmR8yV7d+i9A7Ht11cfVqh/PhfFTYC3+bdrN63BrgFT3mQDpz0f9b9TQQhjwhXFYIN6cBabyLPHlQnEv7a6AqTX+IYTgTKGymu9YOUQWrWzbv+HyuXeJadfuFrgtQzMsR+6lRAFAMUEj9tO5xTg7j+n6rHtEvFjZpO/hnNTOpjn4ZT3fQ3oRNnOTeQFh+kUDJRfzgV+YC68Y0eeF0IT806OyTGcM0Dc+eTSsQS0y9dwWbrUdXGEYLeK+5246gF4PTqrAchPcKp1GCOXY8Y5eE+ipOFD/OyeGX1sh9LUdRhIBrcySn2fOTNokXS3EGqGocKo0JxzZgTYmwPWd+wT3uWgHwZQevy9ykAeF1cCNoak3Ye/V4yfUzszq27QR9cHLQbrFr/jsSRdSdouF0tyvCl1XvW5NstjyxZEoqSnofvjcGTjYsxZ48gB49hAiAhx5NZWHP30zPqO7sX5AIpd4/LFz/j5w1tizTBbRQ8Zwi2xOjUwYge72Kci317eSeSS0/Lb2AW3hqWqHIdlI7MU/RXpl8mfnpg8nzZ2XdGofTlxxmZNp4tMVu/cr4jFr/Akp8mT9UPcMv1LUuvxeHRH0HJFX/hDh4ksTygHmBT+/1pVpCnizmX/p1/8g6AovE3cYYUJrX1YvNSS83+3Q+n3rTtHlTMmCiLWqAp+2tj8wh7jmt5O1yD0Qqd2HVY+R5UoIiipZNZIIgkej7sldzKz8dv5aIL7mL3vQgkP9hL0BHqKI4hln3o8vUjeh7jhdJ4r+e3TrcNx8/aWEOYL+4/JSNTKgknhmnJCFnU4oTt4PDSFXZ7Z82TedVQJZvEnVGDaAb7gGXLv01M4ze97kReqSW3wucT21pzT8FWCBtXRefGsDtkYU0zgy1pMHgLR2MaDyb1cn8cSzTUBh98GgWXn90bxLCShNUpaKP3g47CvIfVAx0gG+9DnYWLgPZceP4iXW2T9InUm7/Iw59oyv96OKNt+hPMlCyCOIdnAkvk9P23bgkoKw9FbWdACvHN1UAo0XvN2we6DAjkGA/DloCFDrAUwATEChAD6cJsXxGxTiis5jgK6ZxEg4dSDVQC3FUIVURxUoloSS0tVgt1HpAsZxXYBU+fKMpDWo90oKgrp50JOMCLrD6IhUocqAWNM+G6SHPEmYWy4JAI80XCUCsdozDZ3WVXf/rgYTzMH6aA6UwGJdM2Sq40BmYc6XhrB0vxffgHMbJMyS1chbaCa6/4IfWi845MDLFBRvk5qdTaSQE1g45XEYn5MJ5ZB9GHrlvH2ahthg07RCil3Cy0gjtNPjlkF4AwsA+j5BKJAkKdKGJJAXKtZQGd3InGVSj/G/ZtBiX4ghp3l6ekc8XJlC7eZrWjxtKg6Eu1VoCcJAUSMJGgO9Gezrxi/hWotCj3id6JQJrwToIYgoqXg//wYXoDXZH/xfeiDCTsFfJ65Ctdh7lKjRMjVgJOTk27QsoIEgvtKQ3cFQKXvQFoif3L/yl5qGkDta0gOSDOYMlOUyBu0K+jB4UBpraSBIEmGyFZCx5UD/Hlo6VcZogspP4NiY+0d4Ji2ceiiSixLU3Hv5+6aTv777xIHEUgSzB8DugBxtFsS0wTX3y8wE6NIFbkjrO23apJHS4C6hqVygcyqBoSAtj81ZYV5H3Dsr8Q5M6XlqgpV3Lq3yc6m6gujMqGg3zhJBHKM6wQrnPdlF2KP9mm5Zre5/qqXzlGOrqeLQfpuBjSpVY+S5VEirxnRNcLvu84bHR+sVsLLcTJGz7/FCjOgxCtP4a5Igb2D2Rvu7fh2u57AUxFzYjh2tHqO41co7DRr6t7rxhnvN+ndHI7S3pB3AAHWjW4HT4MJSwcFINm1AtVozbpKFPTMHJ8MD4F71xnj0u1kkTOWBv6qj+0pQCbVDawGTZ2LefcgCMyjZm/dactN8geY3z8W0I9aSRc3HfLab5d9bK6LDMHG7v344QwN3wT30wXzb8BVn4l2VgK83EuOpdL+hGZIJ9sBkO9cxRCWx2c4CfB2+XdCM4KUzApfPFEq1ISqUsYEqgBUBchaszVJhECY0QIg2wYL/+nIur8qln2ncT6eOD6ch9OztEC1wCLSW2Es1RVzeDqtkxmwIGFF8fElPozK1IejskF0wR2T3jOyN+dM9Hf9Kidk2C3nOePTXBaUYleqQ9qog4krnj734uVlTQUxkOrXR0J+Z8/q00L9HNf01wGuu/MmWhT5OZY0Lbjy2erFSXU8qcAntdL7AD9BKfQqa/jsVndObJ/yYDxzgVLAAvMUpN4OQlKZyBczCRmtXPV3x0w7SJ6WG4MDJU2due3oNj16KLf3NtIwVkt66mBFBrTi963tLXFnd+1Btn7L4uQglj+S+dN6jHnIC46Fjtu7Xb90T3PYen37sRjM+jgEObBVPDX1nzcjc0bcQFox1hIjebyEicO4wxEd86ON4rwfusF/5rlMKexj/A3RacH7PiwQ6uDhwwIRaC2UGIH//zw74AEwPsGwk7uBuE9J7/Z8m2nXnvCInfhJCjVhZHRKVTGmW0Agj0FRlrWYBZC3ABh2MOtoaaI/FhCO/tsfNZB/rOteD0UvBtFLGCrwTHsIQMj2OXpye6+LxKB0/flYdETS0osp+0hSE6cpYI2GG7HRW9Fe3VDbuktnZ7Ya6UpNE+4rJ2rY3JtQFB+iHsCsLrpYzZn2lTTJzoSY7cG3FOZmkyfRLtWKmkZFp8NQJw/NSBGshsk0ecV2ZzudaPHf0POCFp9NgzEb+4HFB50yIWencNo+hgIfyK0fnDUc5l22Wpdg5rBcQ/Hwjr5KPTEffPB8XUlsv+Lq5ZHR8TDvqsPQYJkfCX40rcn4at5fFcqpJgsbJXIU3Kj/2hxJ8TGF3bC1z2kCy/bhF4fy+a+40cnrgcClVBhVLvXrBgtWHzWqhlysaAOhFNacOUFhazPXLlX+Kwgux5alFEkBTn4tBuliPJLHmqMvewqPvm8APc34eF2o1TtwuxRw7uHPzAUQ+N6mk520ozp6LjhOh6aRlb7OzLPu/TNzmA0T79vC8MvbnYDcOb4HzaJajeZcUdP7yg8crVeMy5dxR912qYl+5y8RfedjyvWt8a/X1j2E+Pbw9KI/jXAYwNb0K0jYviyKCg7b4atuUeaUNcQ8mBO5WMxzJaqHhLAZAKvsbyGVG5WIGkUANwy+eps109rDvrrn9rCndzVHeUdK9WasMlqICaf6xymtCKvHLW90KXGbYd7KMwDXDUR/85T1rARbaVwEhRsjX9p2ASilYzn1THBVI2uoTmmcRVCo9WDqMIrBOUmaguPIuglC9RzIHZUidpxeYWCeYXLf0cd/CRk0OZ1OHWiAriwBwJVAdEK0WWFg/XbFa9AuEUt9nh/SqS0NzU906uPNz4HV9x3cR5Z3rDBVvhb7uU7Y/duLodvC7nx+Ub//WNR/lF1KhUoCIK53FGwTQLDpgOBZQZv9+CYcTWmj/vWBj/oWFGdse03WEc5utP27OQRI2KyWZLiwoghm0EVJTqQWJ97ibL8LzYAaRAtAKVBoE0AB3WjxFFnpoasrS8Ko+nFFRcauTpQk0EEiQipILmXS4szuzl1+/Lhb7iJ5y15rbP9YxDY4viLqL2+eC9KkwuEupeXBiYh8CbaVs1L4ExioULLcqBwI2ILCXRAjTvlRsTMwDXgLCwqCUpHIzCiSYWDS2ucuJhkdTT9SP89gO5h4LkkNPwyf/L5gWpGSy+GB3Wxq5r+qZ2vT03IaLl4srCNVMRhYnzHXKd3Si8oAf659DBsPSdew6+O7fvkf3cJClMfBA/jyUTCPeuxxd95TRhDwVQj0D+GJ7+RZ2VMmN/Xz7mNZRfHKtLOgSNa+TkfJWjI/Pn68urvjnkfXJF6mBeJSNSAlH+/GxeoNx2jEZjPwyPnOylNKeK7Jhm4IPOHudv1tu8/XAmkgvTktUBfA4kL3+fgiYRF4jx0qBdcH/UAcF0wjq86JaStqxiPLjfBNmJDqDosgQWnV0okO4O9ypBKzZqO86xLUUJQTx/z2Xb56z2f2bX7Vrh1h5Gb6TZnYvWSF+VwmKoWGI0fWLxUpO/VBjkEfPVFgi047b3OU2eDyB/pS+bD8GS6HpvG2HMKOR8fOYLt3KwqbpFXAyBF3S2+X4IBxd4/nVX2dCn2cm6p1f7JX66yYzeW8YIsf1f59/yNHptYQyFQw/KE7sOQs+UEVj3qXKmQFm2zJaWIBBcfUmwoq97R+BNYkGsV1HLo0PEAxmCOJJa9L/fYQ2hEcTB0OZwHtWlLfJRQ4KF8V/6ZC/9G+FQL4u9S5ats2lWuMULBFGj1Tc+8FCAeL363dGS8uQDLsCgffeu55GDWsxWEtBUhB04v+bQKu/IOyifFOp7FtYGM15q4S5J0XJa/ZBNVFEift+16LE7326/DEaawuYDnCIiVnDblqwOtEjd1JRbE7lZs+NSkFFgDUBhd66pbeO/rH0JfZu/NFmPnKkGFZs/nBGeuo5vIC26SnxuKD+IE3O9e+shW0PizHWIkReyidHy9+Vei7UlL7bir5VuY8mWxQM5BmsV4U9mLmNBIWMh42BqagzhbxQU3X5pl9HkP1Mt3QZdquf6JqJ4jGHuctxdIeSzXo0F8uhdxYQjkM/ye/MNG6KgwuM4Ddax89lcJdYQiGXy601StdAf648FGaPWFlgfMyKAfQH52jFkjubeFe4SCkLx7kewcL0l29tJIVEvhKnMi1DY5LvKHc6x68T5y5CS3qfLMeJ/i/FeuJQLIbmiXD5KVdCHa6DgNFFTKd4qzsvKY93IHDGT7Y7ShjmE7A2vI065ufsqqwoee+BlMacs6ZwU0U+Q+0n+mdCgG7M8mKNhgrmuSM5ZNZNVdlaTHMNoFZ8VE9VlVUm61d5gKLDW9l4hYX8rguZLj4v4pzPGZyKeUU5iYQIkdxG4D6dQCjWop8/d+oJyrJ6IibXFvLCrVCqf9Gnwoh94tgRZSWpsmbABIczoCnGeS7j3jJJAI9wmRvt8d0qLlBXC88fgSHL1ojRI0RlDdH5ehOtkZB3MN0JCX2lVOSoWvsBvxAu+5oMzKrTZhvlTAK4ZmviJyH/tGbCUw+cJpP5qoShtB32Cba9B7c0IgkpduGACE0jbgzaOSZQM7y4DGG/1gzFyhNHIusVaDQRjvbZ25sAovr7+X8OZc4LiCBZF74mQ/Yb5jCtGxH58bCd2zcE34RHMCR+tcrV9m7f1qjyGFz1YN7S1eMWraMG1N0U+XwaBhhSgkM4R1K3YCALBz3Od74TfTXhjSLQXZA1NVt5qJ7TpyUF9VL1flEU0nQ9o3OcueXh3DHzysTIRj/th3FhiWxk0Ve+dU8L34fvre2fXdIIPwKU1yw5WtcJq0N1iOmv7ZAIOAIFV2CpM/P7qYAGXchQWQL28ONqIwZsFyr8sF1XZ/ID0id9XHF/86IhqW8H2Uuo2YB8HVYq880BSIlMVH5CTYiPs0RZVrMP/1l7+688aPpsdrGyOnP7wmMB3HTzWgLdJ3Ul81R5hMH7paGzb415Jvk5de6dGYdw0kXXrSn32qgJ5N4zfs14dtnlt7g1sf+BmeshAssUq7NvOxHZl+qqCkdMkRtzu1U3Z/NNZro4juDTX3f8I9EsX+M3DGrtfkV5lT2H6lYiffOV65xmmNYSw5kK0TUuVtGZp47R1bFc3XPWDzV/NgESYrMQVBKuSkE1o/cm81mizfPJ/LhFTN1sr42bMC8DuIRN2Xu+s/8Z9gFiwAH5w3+x97V1uwHVvcZEHHeAhssBVDqvPzHPngZ2yraeUoo35UEqcLd6TW2tI9QCut3FQWEPpmeIHqqa0tINFsWts9s/Rf8cHlm6anRFJDzL62qRPfBrw2rjLAnKZ26KqbYrrk9c7JnqHShz991ucdkaQj76TBmXuNM0tFPzR0v/8u7WV0M0wKOR6WtgktIXTGDMx+wPg15uJFvODPggS6kFhB+lUDX1MgPOIMHWPHM6q6s27EoyPrnJ1DYr05+EluhI3iZZlbG29aIbjP3sx/YufSKkBtv/FrGqRvAMnWC/nPsT247hPHyLenHWtyc+TOiuVaTrbSI90o6qxA6f3bAbnUM0O8YTaUPH4OUB6UMjMQqcjiyH3Emi0r8CrsAHQAF3wBgoR73JSkUMc8kHfW9b59bMF0v7GvfQH6IRsS8fX1UNZjm+51xGZ7KO6Tuw/U33Hc5zDW1Eg7aHM0wVAq1dZHHgiKYy3XPn2U1/b240zY8xGqU1bsc3OwXupfvv89K9KO2l82xiKGyP8g5y5SVsqa3XY5lDVpq9IN3wT5pBeQ8K+TgyFpZTZYoalSp0P8oW1hOL/6k8+EMwVfGhB+F/+F/n27IijTzfN0lSBWmF+p+AWMy+d0ZVUY0l1mO66RibD/zgymLmjUk27dHI/qyygFdrSxsZblAX/QpOgTJZ7a6Iv6ALYKMY6D/HRD28avQwAiTbp00DHt2grdyHT6uMFNl7Z9+uK2o4trLys71Ncbxll0TYqOjMRsjtM0P7d1id4/pf4/zL6EmhI6S0SmKtxCpWP/+ZzePmHi7K8o3EdJpYJ1U8Tcj3Xk8mKlEzLDfCF+w1Z1gWvc+D5lIiv/bRQyXijzCLzGFkXorUvyly0Mg0gHcvu2/+1iQj/2YvuW/+4y+g9/mP+nKD5JxMJ8ypSyljBYTVmLD7uu+qDn0Yna/V9X3x++y1cRV9YgkoEyT09+yVY27g4S/d323uizGfja/uTeWp4KbcBW6xA/ccgajF9SjwbxJZgY7EhnVC/t3JFx+qjt1i69sQKQ+GaS25dZkRrWggW4iEwH0MrUKc4bCbymuoeMCRD8+tBpDwSgUG0uIBDCktJVjH1i6j+pbXR1ArSlaCglL5F8QBnyVT4kcHqwbmJ0d4uBY0IcOAUQYxqQEqshFyTSMVPbwoVUMhkj1m9X0aksW+ub657+hfHgLDbasKcZAEC6/MX8jOBB5qhfbuaAQV9JULJykstSrqdOxl6MGFZ4aH+I3w7AMyQmYMaqsQO+488yDOzokH2tou+1Z2w431mmh9M1noI/ndD8x59a/5QnsuN0cLAgN1EBczgL6uzU9ie7jAK30A3doJlfW4x42JERc+MUG85uhnVG372FlRnr8klA0mAFhLHrFSK2rEyflV4C+x4JXqJDkAy4YLFz9609OjB0V40f3ww+1GhgOsrELNoKEI56JXUod8lHZzFltbfQ65Mg1WCLiTxVmMiEm3Os6Ur6I/GjNCyShVeJNESuS/CXXNclN5M2INL9PPHo/PepxsKX3ZspiRUk2/65a9CQ3SVBralgjRNi0o0hy8lIoUCbspfJlxduHG3TnHhtQTdt+TJJQMFdp1N07ypsNF7/+iI01fs3Id2sVdDiEf6zs8M0dsoSA0gthEouMujc3LgjB/HJHGQ3/cQTBbPURAI9bx58SV496CmCeeEz6p1nxNEzZK7FcAGF2O3VBYPb0PGGX2LAQ7YISkyp8lvMek08wHerY/7nCu5255EgV7SV0k/l9bxbcLIEsQN0K9aaIDoUsqY/JwI1/uSgBoaZzsJPRdXcYhNRPh6iguFKTHtOnCvG7gtuvOlBZuBsoa0qqFqkl2HmZxAyqFd/eL3i5OYSOEZoU3rRNvpGYygi1kNuhQDm9HpGNrmJeLIPif5MGO7hSHsH+01UiVMol7JqwFrHx9pRGyadcfT6CIEB6m4HPOm4a9I8fvqLUdctqL8zfqxc12/1F7DKxx3uPOeaX33B/CcZ32k9iAUTQ8t9gKuE7lpzzV/GOXSwz5KaxceDHBcofM/1vznEIs7siE8ocDH+/UaluAlESafEDvFuEbifLXHPIn+uGUXcfAsxw7H70eP7oo/lcukoSweM3ms9277LT3VxIOnro61UfKwk6OeFbtPsXkvCdB7vTvF3avhpPPmoEzHzeB3OGjL9ruK9Qi5Ro7u+okqPrc4gMe1kIzYVKXySYmhUd8zXempjv9de+f1HzU83wRnuxf0WPHr/LFbbftyBWnhHqFo1MsekIW6cpTz+HagVbpMMpR60XNfXPwS/L3y/EbspmD/CeXOCICgQguha8/7zZf47qrf7lZ+ReuvwEh8vMUk7NF9cZGX7UxC8V20pp4gzPWBY2p4cntR5SWF8lJHhP/sc9xcPVgNAOlJq3YnC2b5DXEN9QfuVFKezvqubrh+exDa/CffKli/4s+9KzYHbcapaaajgBAQ6gWERYR11ExMBZ8t/13qtU2a9e2AYuuCHUTZMogSySmsriL8uVS46rXS+dNPYUj5mxT2YjLhgFHrCociaxnlkGOVZ5Zf1k6FptPYd2ZZzvZH2x57VLyWBKzzWaNaWbBB+gAYd+UESKXXfOoo837Y+m5dxE6wvAOM/PHnCkttuwwP3T4LPQV+iFC6oBH7HElvuan92HXF5q+itS6xB2PSHDva8sRsp7JXtjXHhzlX13qxVfbqiH26c9rO7EHsJ3Cf3G4aqLxdDa0gWfDaN5j2FMFiVzlikRL80pF1puhIkUG8KbrgOA5teqcw+g/NLtMNm0aw1zKhl9l04KI/LDuHoTQUPJ88lIW8b14XJbsrgUWElFckwJCksHJtJKOoBZ3aRbrNSehmfgr6x1P8Xz+fVT5kt6BGYGzms6jD0d8fpJ8auFl12GdQJi5kwrYfC8v3lpo9QUtNSJ24QCe30vxDolRcQTr6r9KM/Ke52qULw2E41puuLrkt0y64/pBORgrJmZdR+tKmaB/xurSbCAqc9kad+jrevr/BTxOKH3mtID7fFLUJHy7r3atgCfqEO9YhRpgKPkf+tcxrsTb+ZWYm2sbyjvakezfPsKAws+6H5JR84ikye8kG6STa/6Tzwx/rjQrcv826ks5tirOTZ/um7UOljn3ATBAmzqQHt8OUXa84BRy7z2jdA3FPkpKdx2a16P1B8H1QZvdn2hnO6WnE6ambujtcDDLG26GcaNdceyOHibmnDIvkxKFM9XWCYUovG//c6CDNkQXmPfc2NTze0m/cFybaCvN6I4zZt83+3FUONFRF+Uh6pjAY4fVWWE31/jjK9PqI6Bj/kZ7XJ1tx3TRp0k5z5E6zk5cqWXdyA2GL5Fn7sgjVipp3zP2K0/gNo+9KOaYndgllRi5DO/RXtA1Ip43bd9XFcRI7YVf0ZCdHt2xROCvTgr8vSgkeM/cV/XC7Mu3CS4XDpiaJFU97sitI07zYQlS99h1e2/yyd/UVJUVmyeyCP+X9Wcs3noznER2tx0qz7y8npJyMShri2WUR5QBjD9rAVYxVqZoU4tUGKUXcCi6r5usKwUWR1FprCE+3PgK4IRMKan89BgRpmxaXkKAwu/u+OOM7BEHLSxmmf/FjoL4xBZGElbgrtTnyQaNBe6i2uXDZi+VgpInY7Rjv3bIcjGFhMgvmwTDRR8ISkamqpnArtMvMpuUil6YkuyT/cXo1TU7Z3mVboUgr6Mo68QdCE+/trMKMCqr02XcvQIIKHnaZh6GWkeThz1Mgui92TY7W3sSoA4jFvwHLIAoP6TWE2Xc8pkcNvKjf7tui0sivs892RNvVfB3xQfAPgBVZ7aD8qQGoJra0KsJthEcIuJk6HXaMKDdYE9QCyRm4OgAqYihjpDP3+0QYaCkbCd3E/zR4iiQgO5RDawn0tMA/dMOtvDh1WYjzGROKmNGnkLV9AA3GMmIvIO87/kLo/NO5YkF0cDUd9V7Xc3QlkU5175Yycnechke3qH0V2Vh3v6NGwwatx6DI8tcgtRWj2lbU8KHcYdFiuQvWH0M828Ni1JGZb92FMyHLX3lFb/P7BIrvuvi6cA6MQ4xOVJ6V1mEGD5V3Cp2932Flvcp9tcN5DkQNPYgP/4EXPQnRS80ZTlXIO04Lqe0ZG/HYQ8uvLZfvuch7X4hT4kha+8XamtF03/SJ/Dgv35tGLqaf5Ms7FdOsvnT4mpse+p4azVaW+zFO+cDlOKhG8dCsJRYeWJ/D61tdST0hcHrgGQm9VVZ9WbcEcmsRfQd4p4wlZ+Ge4rXI01XEHFSi8OdrdayGOPA3tLagbmhlPN9ZhcJuEwkKhWAEHgFjySwjpHYFlULQeIBJ+J8OB9A46LS8HaXhCY7iSWgtIEvwOo/GVs+WREEHZEJYGRfGUIQA7gToXxSrr5dQrJ88IY4kCO3DOOTLCRiAnYCDouM3q2meWE4OGjAIdJC3URUULoO8YMKgDcMRnkrheW7CBSHVOr7kjzo8jI/LSMidBCFVpwTYbkaiAoARNdMoj/JOVpDUg1wRD9AsDIo4Cmx6nPkr8741SC3kRSsZVpoaIBFBH+H8k09/gS5fuZ2g6GktwNtwO7Q8wHSg3ASZGEXwlMGEQjnm2qC5ubawkFRGqrPLKy+Hsf2yXOIL14Asl5BEFENMBwmVSBCpcpXQAWT5QaEQiYdX1WAKaEkgMU5vs/+2bozskLJrsfIMQ/qIgIDFBaqJAny6gp5dt2mokEgFCAgHYbblCBXBU7ROrOZUAplDwFyISoscExLSm9GYEfPlFYfU/ZDuRpvhRauzwK+PGbb1VAwjriwBcD2CB/gxvtOkAU6UT8L1OJxTzFTatvmGIufoVR0I2ttRYdZQRaXlV/npS/I345vRXYpBx8S3YO9BrRxrlwZHA5VQzPllDgw7NrNttsgiLVFAMB+SA00kHRwVMIoxDcwAvsbMK4T06jSYpVV2ocnOrBwyGkshivzgMzdjgwsmOs/a/XAhSM1Yb1uPBSJn/m2YQWwZIhjhAGxIBhfns7vYVPNecFb7FtUWg/NHj7JlK7o3H+a6djb0pCmPBVg9trOWkx/jVuFSD2X8wLx1tTmI5Q2+hAoMvR/3BtEQoHesCt8cdh2pEicEzpjv7V4bGP+iAnIMDZg28FZFQxa9W6KNAhYy4qFC1ALPeJj+dFgVh9MaZDlCUoNI2BleGqOkd6TKaO6qd3rvGUKQ5g4XJUwzoKYU0vWhrm4DlXCG8noeD7IypU4kLmAwYqcKlXVnA06P9NnLQOiQpdMjVNsNVII5r1hBq7F6c70YyxYpqm0mPDsVlgVvxNNTagehEGQVqjtRchK2aeQEW8f7eu3+uDDE8+pqsNEK4Vna8AtlazpBC0NfXlPBmab9cwBmxBDqZKjMc19l8cy/Lz8/kwa8+/+VJMNCGfkGChVhDdVkm/xqmrItcDN9tIbukPg3pP2gCVd05Oz0qkeFZN0CJbCZOH4HY58dsoOawO0bHeQNHgryQFcxs3mP5dyMlawden/Yi4nFxN2xv5e5rovFEaSYy6+2p+KdCnzkr3Do2zDGRY9LdLx91y7K2UDKlj4fQ+THxc9H+McdvQrIB1jFeu7DMYH+jwUhh0Cue+hP01/THOeo/yfkTQD+teOVZksGfvzv6HziKMfAZCE+DmpIf85zIhXUp1Of97PyksIR4DmB/uwm+ldoua2szWWoJNktzXO6C01sVVD+FuldyFVtj/QqpBg1Klz6RV+b6LobQ3kto/lZV78isscuTuE3tcO66wpmto3Y9hVsuldO6xjk5lohOrN707Bu6AlRnSKxbZXXlWJ7tJRGkFHHxfXknuI/4RYWWU3YnBDPk35L6btJ2wPsvpOiJZL0P8S3TP0rjZ/oxufR5+K1B/mNyuLecSgdg+jaXPKyOf+pTSKdZHTjP1aLBNQTkduCFHkiOrYkDkBVE8R9c8viLKkf5UQT9u0q6mEFncZSIvW0Ut2NXEvpR7Qv7F6ixz9Z0xr5YF4ymmdBNcvpcRWYVqrPha7PFTODpFWjYluCzI3HqzFMvb27rCtpQm70H0+P0dtLrZxMflhFK3yWn97aa7NnvTxHCe7SDu59OTH7213Mtcd7Egpvce1UxMtR2KCoj0cLzElC8vFHHGCgSJUTzGCdqLk5iQ+A1Qwsy+xrL1xghpxPcCNYSNXiZLFoOMpnKwgW+C8st1VoL6s0hXW79vYRPTRF5ZLE7S05GGwNZTurBT5gGsmlgvBgvngNbofo1OxeIXxukb2gZNZoYYeIiQVGZSkMDEhMBsbYrAsMFTrN4rPwb1liNf4h8MsogQOveArfwK9yinbwmscYID6oSlEpHlf4rSxCk6DEvFa3k5lUsqhRJZTa/HFZiTJyiSbNAhUKhPRYRZJVqZ4tK2EWtvoJtLLmWTKanGwzGI9IXpmSg51/KooFQyoqmeKsbhVbtJqbWyvfJ2URuDcUFxlOQEjUVpcDUSla2Swny7lCQvwh2YwiMyt8WqBcNdpX3jQ1CvosiaxFZDw8ghw2orBhxPIPKseAs7LWmYpCpvoNqjEmq1QVYY2JqvS8ejY1tUuELZhrAfLL++cbVmV+BkALiiHY/5PBJEGhMVgiYhJSMngERCRkFFQuXP/d9gfEkxdvNHQMTD5YfP8l91l/sR8oSLAQoVjKxMPHsVHYv+7+K3uUaDFiSUjJyCkoqajFiZcgUZJkKVJpaOnopTFIlyFTlmw5cuXJN4eRKWDIQc1anNKt1Tqrbbdff+DIDvc06bTWRiuc86cdDujzo8su+omZRRurKwpc8ovfXHXNr/5R6IYJkw4p0u6WKTcVe+FfK5WSrMy8Yrdcj/lsKsaDpljlWnWeq7dQdjKLLLHYMb2WWaqB3UuvnDBg0El33A0ESqIUSqMMyqIiVIxKUCkqC3wQgmjIsCOOGnfYiPOWOxgKp50JwZpQBjVcRkVHF1QUcwOl88ia4yUc27CwYxN9HhsVHF7ES3gZr+BVvIbX8QbeFA49FQuWRf5fNZDdaqoqTrQszZywSoIbuyVVMo6dcwA=) format('woff2'),
         url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAMmUABAAAAACFlAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABwAAAAceOowp0dERUYAAAGIAAAAHQAAAB4AJwDlR1BPUwAAAagAAAE0AAABjtDN8XJHU1VCAAAC3AAAACAAAAAgbJF0j09TLzIAAAL8AAAASgAAAGBC3QPmY21hcAAAA0gAAAGcAAAB8jwmk6xjdnQgAAAE5AAAAAQAAAAEAEQFEWdhc3AAAAToAAAACAAAAAgAAAAQZ2x5ZgAABPAAALzXAAIEwI5AuZZoZWFkAADByAAAADUAAAA2BOwK/2hoZWEAAMIAAAAAIAAAACQOEwZIaG10eAAAwiAAAAH3AAADfJ2HOMxsb2NhAADEGAAAAnAAAAOAAOURuG1heHAAAMaIAAAAIAAAACABJgIgbmFtZQAAxqgAAAEpAAACIge/Uzpwb3N0AADH1AAAAb4AAAKZYejw6AAAAAEAAAAA2odvjwAAAADCW3B2AAAAANwHUKF42mNgZGBg4AFiMSBmYmAEwntAzALmMQAADSgBDQAAAHjaJZC9S0NBEMR/Fy1CqoD5QoOgBJUgCkGNiQYsHopdqoSENBZWiqIIYmGRQhsbg2ApqVMEESsLwU4REQQLwU6w8i+weOu8Z7F7Mzs3u3uHA2KMMo3b3jjYIcqgKpgRKG5rcz+o8c+kRcIzinPj4c0MZVZYpUqNFqecc0mXPrfc88gbn3zzw6/DxVzcpVxW7qx1lYesr25JeyFtu+Jpu1BO2rv2iVuCCTthzuIs2A1F36fkH1P2W1TslbpFafgf8ufsiLZ5cubtTrxgTyzaFwNSrsUq8j9ILdih1KJdUbZ06OuodhaimlAnRFWhXoA0z7Mx+ZbtWb3q4g1F0++pFsyLSK/R9oPenjXDXA1zInxLsFGGlGKYEbLkmGSKPDPMUmCeIiX93BIea6xTp0GTvT+bqme6AAEAAAAKABwAHgABbGF0bgAIAAQAAAAA//8AAAAAAAB42mNgZtFj/MLAysDCasxqzMDAaAyhWRgY0hjPMiCBBgaG9QEMCh4MqEDhNxNb2r80Bga2XYzfFBgYBUGCLIdZroLkGJgA+r0L/wAAeNpjYGBgZoBgGQZGBhB4A+QxgvksDBeAtAGDApAlwFDHsJRhI8MOht0M1xj+MwYzVjAdY7qjwKUgoiClIKegpKCmoK9gpRCvqKT65zfT//9AnQoMCxiWM2xh2MWwn+EGYxBUB4OCgIKEggxUhyVUB+P///8f/z/0/+D//f/3/d/9f9f/jP8uf7//ffRg/4NdD7Y/2PZg84MND1Y8mP+g+v7OWw9Y70BdSxJgZGOAa2NkAhJM6AqAQcHCysbOwcnFzcPLxy8gKCQsIiomLiEpJS0jKyevoKikrKKqpq6hqaWto6unb2BoZGxiamZuYWllbWNrZ+/g6OTs4urm7uHp5e3j6+cfEBgUHBIaFh4RGRUdExsXn5DIUN/Q1NIzcdrsWXPmzZ2/cPGiJUuXL1uxcvXaNes2rN+yees2hsKU1IyrpTPzs24XZzI0TmIoYmBILwG7LruCYcGmquRcEDun8lpSdd2EXbvPnrt0+fyFjQw79zAw3Lh59x5D2cUrDLWtNW3NHZ1d7X39DL1Tpk5m2LuvAKipHIgBmbGSMwBEBREAAQAB//8AD3jadL15jGzZeR/WZ1/uuefu99a+dlV1VW+vu5but/Vb5q2zvNk4Q3JEDjkUKZLarMWiQkmRoggQYcWhJRkibCcITFhRgsQwLMJw/rBiBJaYBLFkRbYkR4ECJUhgREFkJHG0UeR7+c69Vd39hsx0vVpu3brLOd/y+33LmS28dW9rC3+SvbVFtsTWwS+jrcMbXxF064+Of5mz37/xFYLh7dYvE7eZuc1fERx9/cZXkNs+j/rRqB/17+He0230N55+hr31tf/8Hv2NLTjk1uGz30Wfp7+59crWZ7a2kEUCHlzwVJRvi5wXHQJvxgOLJuOTxXh5hhaTk/HJGT5ZwafFeHWyGsNjOV6NJwd4ebLKT1ZFTnLuDjOBbWi1dDufHK86uMjR53GGEcIBwpQSagOCLcbdpolUYxpeOyYJo0gK6hGECSWEI4IIZgJhqdm2yWrv1rMfT4ZSpmN2fQE/RxzJGPsD0Y6KkNfpfzb++Ym6bj8RmXtptIgW/95I7Wg/N7kvCeMM6aPoRnD4euPBR/K6zELNfZ/oa3GbhEy8TvPJnhXahBmFs3L8Fz+VrLwcqY7ctyIjIihwQjGivrcPY/dddIx/lP2rrWRrCmOXcrhX94DhgCHowAZ2sW1VbcQW4R++uqpJT+xR2+nPH/cYoU9/o9zE95hkSX/+YEAoDBH7xA989aj4dG4X+YPxHiErndqG+cu/dpx/JvfneWdV2yP8qrSRzrfKuXxr66+QP6ZTNEMvw/Xkoo3dJKzntLqOAywsyTPeQfDVYLyLB5MBTBL8Lcdn6MQ98GQ84MNDZLE4342My5uAp0u7HSA+dEcGKQABWMBEl1KRz49LMbmFhgdoIM73gANU+yDYp1guVuXRQFbm+Wp+DJs6rMhh72J1DIPnHs/vc7w6rvbhIuVuyxnOC7hJlOZO1AL03F1y2Fp+YVEKIlzuPdpFg0OUuu0WwwlW1xGc5biDSlGG6yL/DyGUMQ9LDJNPlaayLoNJJ2QcZBbFEUmZCVjUy0wjkwGlHCEGgoxpyigOmuLJPay425GWO4b9/sDnFnMCu7k9GaYFo8QOsFf3iymGEyHKRC3OihckIYgibERTB17N1OFbkG33vddpN940gpEerqdU6p5QvdwTWnAi4Cc+nvCp0V0t21Iw2lnvZOs2UeudZI4YEY1gNuhnhBCMKePaYAH3qKhoSN3MNAVFI0ghuEbrFazc9+mX5O3obELdF4Tyoouvw3mIgcGh7mJpnMT9ftf6HtwackJLy5uMJcXS6ozGy3GfY4wF86g0iLFqSPeSXMClin4zWO9BKTWIcyQw557bJ1wWXYk16WDSyDnVg7DwY+WHgvGQeyQ4DJeI4s3XRsMBC7jhOBQiA0HY57puG3ugrDAz8HMVyoy2kisGLqYcdTQUB1Q3zXofwtb7NN4McQZz5QdahqYZ9VAHdy182NwenNQIhJQhZI68HRIwSmFqkW+1/A8pFgfomLJYCYYJVjAYRIS5CA8Cp6No651n34H/PvsE8i9b2/IlAF0rzS7Pnf11z3kGEp7llRldm5YbyFncpbMnkwOy2X6IDpD7B0J8vJqfOIUCZaz0aA4HWc3BLINeuCPRQzS+OOLmQ2mjKw0+Wa4W1TnOsPtyAQpYHopWBwTLUCqRu0q35bj8Nneaub6lSgknY7jy4cDdYZE547/eDfQR/z03nJJYTwl1kNWIqccaBhEjJ50w0Io2AhSI6RMKDiGhCtwBQkRihqjs2LYwBaUhRVqrgDIDxwbhQtxIWofB10bfyWSTsx2e0d2+CYkpSD/FuZ9GUmhuEtEW3A88mMus3aRwSo70KM+YgUmMMAYdYc6xaAtnDvdxzkCjdINjgxnMNYfvmNuLHfrhytBU9Hwee/6ekVO/1qctwdIWJxHTiaU1QsJ459BvhsXH0kHEMhIqhv6l6Aq6K1u+svmhUkSHLNxXXSW2KegICbjs4ig3dePR4CrxQTopvJUUxD+iJ/VjhZGhBqMaJhKsC/gNQv0s9UD5uIecGvOrHKXIA507tSMV5XQU4tQLPbBwPFCsYOCdiKA06y5llNoam49ySXwJnpaKkKM6Kq6Ko3zbDw85x7IJhogKAa4ZKyKjut+l6IDuI6bAYiIfxZokxOt4cEEpwSHCbWa0VMLNJsXGtBrcdLZhQLJbYcenI9GMGlts62NbP0mXdLH1fVu/gx6in0C/4jxpKUNZpRYbkVrryOpkOFgbebTxSZUDc2+WlXNyTuYWKl3uyWqzwcGS87/KwThxzPIUPHV5uo0mrk8JgnuyOBkcrR3k5b8lQCH4q87instzrE91+TxOf6sTjZwvBc2pjn2h9+5BUqcTxVDMd9H8KtqVAzGZ58PyxMvFydrjbh4XdwVfOnBVOkOn+HlyE9DZeHk+JGNnVNZ/bQQX00WVCl46FOg4GtxEq8lisrj46cVguLFJ3S/X97MxEiUIGNOldD4qy8Go6ogEhMc8cSKimhNEOVOaMHCfCZho6kmmUYHBEwmnzeWDONOZgV6L0G0Fo9JjEdseeLUGtsEopImz1uWuGH3j/watxCSsge0NOM4Y2AbLJX2Tg4OuFyiyKaKhFoESSMGOBEy7QFxq8OY+swxJXhOFKOh2P0hrzAaDhEVc0PXV/KhEGvHuvh/PE9nXIhNqu25UzOw7Hmi8s0wKJmvyEKUJ2vynMjNAUjatgq9xisA0mhcz99u+kn07/aIlA3AwWA/jhHIVpfBF2tLudhgiNkOjrvU0QAnuDmAo10SRQOyMHQLxMPgliuAKv/FHmPhwAjA7JpLbbS1CgB3gyqTTMKPhx0b7ownnoN9YIgDO7mfo+1UNBl/SaR3sBJg2gYgmtrxdBrvAboACYBM8pMcCvM24CLuw764bXAMYCK6jG4IDTwUMAGAeCxNiJPIkFqZRZwOYXrhiaqmOmI9+TWasBY583DIYDCB2dwNWE0cAgLRC3AsQCbVpGk3jJveylNd8kA3s65T4xNAI7oqH1KMK+QJrd5K8LQYqNJT6YNrZ76lsKBo7u3Hjwy1zGOmh9nf6ib+jiydjmsvIC6WKvQgEAubeQQlO4bZlUwZv9GDnYC/wF7Vrv5uzUaQ7yht7SDvsAp6d42+c4RjuFcQXSAm3DVQEFsZZShM2RaebFoFM3fCxaAyDwEOiALtRqzX6pzjqhhS8PyFgYIE+1CMmAlAJkNaoYYvYqO0spsR4IhxwwFyKGsITwgKtS1zw2tYv0v+VLre+s8IFTvcGYO7yDHxsf20IVifwdIbmx7CVO+swHDjNLKqP8IlXH+eg1sDMhg58Z+n6WwfB3V+JDJB7hS/o75CY2l2w6rXo7oP3fuHpb33k7X/nlQ88ni3e+Nyth59qBWzcq/3EMLjfnTW8pR32hu2T7/zSf/LeO9/2Zr/dHfSb4c5Mg8x6yz/67idFAqixlmbkl/SBmUqQMSw/8MM//wN/Px+/8sHve/WLce+7b350b2+WxJ787INeYFUvaqj5zu3TK9uPyHvv/Ogb3+X7s9QcBnHy1t6400x73i1hzUoU03oHxuhTdAc9ZP8b8K1vybbQvQti1Vs86gG/ZB//wa8eOwo1Lx5s73JyqjI1KMf7+tM/Jj/Jvrz1c1tbrEQs5wzHAZfzt2jjWcYbk1c+Fpc8y3qz8wHH82vOzVRMBfHJYDwYb2zouTkFExdXQKiDzwFR5YtgbuCVfL/Ypa8uWjx+kgx2VB2xVsxlS9h9mZPkhIai3yCg5h6gd4CY0gOzhHrE7zguTbLH4a6ce7xG7jO/oPzE705o5FlW+MMx3TXDtGWu+K+uBsQzCGw34CWhJMBUDtrqpZS1WZ7NahJgynW2s4pezYrwfwHT3HQ4GnOfg3hipZhMwU7wFEevsiS4/iNmx88wac9ivuP5V7logDES7cJzwKW1sBGNFVACzQFDOGYf7HeJw9I0Evt391i+EE0RPjFXvO7TsOtdDXb76fBQ+X0xjMcCw4X6yM8of+jm7tnPPP0j/BX2N7e+5Fhu/LwvhVd6abBLFLpyQYlj57XO6MZxnVRxC/ft+YSvYQR2zNf9aA6eHNB0vqrc5vpxadKyi8/4l4hyA5R3Wcjn4FbkFSNaJm6whursxS/Hppi/weoRD22evhYdHspB3avFCYx4I6ItQjIFo+L4pNDwjgSawOzIRDdPXw8PTSvtB2M+HnmFBnqua12lbMjv04L7c8n2Pb3f9YgB3NUFd4PA9MK9K0o1+XzrG18vzNT7/E1Tl69ENGd9q3IDZj3ELBSAJwkrwAsz84DzCAUgT8xyTye00RZ9Xx0N051xMI9jrGI7C9S4G4iGGI7S5u19CTYZlJwi1t0LOXcEFlw+l5jKkOBUiE49AEtOddYSY1/XwPPVlLcjQtC/t7d+mp7Sf7T1M87eYVEGGwDIrMrBrOYN2M2YrzWjmksAKWMXn1hPtpuukzNSzmbFNip7UM4JHGytuevQC+JZXtJ+94s1GgTkHvd486c/3/a7D+8Oo0dhf8dP8/5tm9VV8fDG69u5TmsBmBS/3Tp9uc0cmq3XVBh/4oqsRY29zrXGdMgCU3cHadnuw3tD+5I/3PGyonPXzxqy9fFPXjkahnU4hGRRf/m4w2GYajUZ8lqnM6wDSQ6XR8eDGblrrE+j/pVx3I40aLL0uo3jKy8A846Zf+/WCcWzB7d6wXFxd7pHxHWTd7zmx1//ZG/y7gP/dlADcLF7c6V84ZGovz9OOgDIkS9Nq7k8uEuQTqn95BuUf8+VhV1UsSNxzeRDAcf4VNfSrLnbT+xZuMfIwU2Yn3soIBH5n8qo4HO0jsNkpPx5Szk+Abw4PECXwHY5wisgkhVePrtk7+BQATp2qnVyfMZKT0R0+12SAYkRUQwm2mvVqM+yF1lXcBMyOZEFSpJ7w+4dIbB3QJUQLeELwBy9+9hBmGmCGvrhZ2nmM9ZkljpoZGgoe5xpoHsAeIJp6uE/vP6DdCBgD58RTO7OOneFIPoKkUJ6HvhrEePtO6KRIp8WDwGIih6cGhBomlLuey3Z7iXbqS+HbwNvFTzkua9yDTzQwS3w+xbFdedbvuNZBz3a+h+dnxp9k58C7HXup/y281OMIvK281Pf4fzU3Wnpp1LTKv3UPfT7MA8W8AHoCbs8EeNKSVyM75uG/qyC+e7p2CnV82Mt0rBlBpSn1YCLwgNQ7F+ZRPpBf5F88yDbWf0aq+/xpScsZwX/5nEN+rVxOOPAacvBhTkBrEi0BDGm0n7TeCrCYiQk0Fbw0WDs3jd+bz77c/Tm1u9v9WH8wJpb5uIcuLwvUo4heoQD6VsJdCFTiQ49n/F2wEIv5s2w5s1Xhr1Gch15xMWTMDgcIMgC5ix5xaepMtg7C3areMwbz36M7LO3t77X+ZJzbvbcAwOqAtHl42FJCgFmwWMdS8GTEpK9j5/BU1xFSGEfGPnraLcMjjqWl5JdXN/VYd/KNoXbEA1OCgD/VC0mHV2fSn6FZWfJsKgBPMWHSDUTnWhnd7hwkJGb+5EIiKgLPwRU+8EujZTz4to+7lI/QKJ5zdtOmwbGBNN/Obr1Yvvgr06br3viLIsXVi6T7GY8eunhzmunSXtbAioH9XHBTUyZCsFtYKVhaLnd8Zv/7pX0JljBYvRC40kdmc/6260oueKB1gDOhZFlSsaNeLiOPXP6q/S/Ah7/D88jW5eG8JJ/5mJ4gazGzzvfk8UldnvLxaTOSerJGbrg7ueRJPhjLvewHAN93RwO/Mb5KSvklV4Qf1Iy2I22AIH9VfA/mAO0wen+Ds84byY+eNt9K7Yt6/zgzSTcEWZmdrYHUS+SPvDIkQl4mMGAMQ1cKwZ+0JUJ/MtiAxxlv2df17XEzB/N29ev1NLjK1c7zRbJgYdQCoDr6VMCFLjDuQAVClIuMj/3v/9dHSRsDzAVqesmGDAq+7xeC0yfpyYxP/I5U6gxiVlkSKQRfiNZeHIeAR1aPZwC1+SdUIZWFpI2gTWmCtUJMyyuF2E9VzFoyVmU2d5rYrBYkof9UG3LNDwMhrqrGqkCRjNM5ZD6ksZcA0Yxut9b7Y5u82mom/7ONZseAq0ZilceoDyN+rGf1qVsB5l6ac78mI27qkOn2dWX049dHy3eCpYHWQSXDQK4+gGv493lbT06tdPG0OnbB599A3+B/s7W33R+peCpgIvL3RtgIwVgY3DT5dzyogyAuoeLNLro/pBPnN8pExDkFioTCg6+AY6bLMtXeAd/5RZ4Lt8sD+ha9rAYu03lvI/L+c/X5rI4Q4APy7QD/kID5tXDDOgtBv4gJSmjA2CjuUdUxIEZYx71eHSX9JtXhxFBXk5poDRQfBfhB0KuXXicMbBsHPmBcr939hBJAdBIC2PlIk0OMpZ2ZIwYkMjU+A0UYz7V0jJ7L+cHJjo4BfcCp+P0H3fqvM+vdEK1L3WjJ058+4IvioFMnxjzcU9f0d6O8Q589dflmHB30eDUfE+BFfbAfvNm49RYygdEgO39TtmX8nF6qBctOqJ6pvVIkxrG1xiJAc5hMjMPfU8Doxd2bPTSaxTSZ4DeUILBDIML4ogi8K8BzOUXn/0p+TL93a3/1tlO0JwiD9BmrM+feZG6oNH8GBD4Oja2+QZQNviuGbwDg+oAxQV0uGRQN8SrQm3j503t5IA6ZV/reSU5YoMDF5ewPrg+mGg4Sn6Jc1UvKfmPXJTF0ZKOf6xY5nM+4v6N/cTcCXJA4nvi5OgNPIxSU8SYCJJ5Ln8gwVtH6Z79kd7RT9mTvVRaxAMCw98WPhGRH9S0PwiktcxYdSJppCMlTQDO3kuYNIy4ZAdSxzIqgja3lNXwdm9v4A9oRIN69/jxaI+BBIF7rIOHNKT3Zl6PrNm1gs3TSccCyW5lOx7wtbYmMbjRr5IROWrSWn3csYeKp6GngR4s9wr7QtZuqxiEQxo5rRGqmrlejRM91MexBsxOuYurhareYjWuj4MO4R2hFsrc9IGrcpPF8KYZAqLvExSCIDF1ACcg4X32+BSOSV2WFoaEJ/UPje7Imjd+vbVX6Js7wbFs5Nrb9XUQ8uXtKNcocfu54BM1ItZpoNpqVuNNqv3SH7/59Mvki/QPtv4O+P6SxuFL5LlMO2/m08U4yokuicABdpvyE75cnEdj1wkPFxi5JB8l1x+XDB7ooHuUe4NBeV/c1ok0WKW8kuINAQQpJ/8+noKHrQ297GP7/nDe/lRx1Fvo+4dReLQddyVrhDTwsrOFbgeeoC73R+svENAuxupMBQpZgmgSjW9yIzIyD1/waI0kpPvo5N6DELkfEBHzSOikFm4r0jM6S+b85Q/0hvXaEVHtKI/ckJd5igYtCjHjJCDgjJD413de2euFRUcnL3ZFXgtue/VipW8dJvF8Wt8LvKsjc+Wls971BxJLolRH1P1M3y7nDwvPa5noMBfjRW9wADYcMxToncf7V1Vdfej6Xlb/UGha6hr3kx64jrBeDzoStzlzcbY01YEOB0SOarO6DgLV4PQ+wUc4mNrX7hUnmmUym56GN6pc9Y9tYfLj9KtbX9z6Lx3KwyW2cjO1LhmAP6fqk+UB4gC4+GRYzfP4UuD6IvpS0flK7RdndA7U/Ti/jsCmV3PmMsbgYfIyu5alwATbyM1r5javs27lnsjJjEMhZT3DeGOoXMbLMUd0Ha06ZQIOTks+T70c+yMRLmJ1zcsBfFkMpN2FirNJ3NGL1SqY5cWtQCU3lR6IsQLzfuQbLR/RAUy5BzRFiJy3WARmm1OFeNRe3gETVjdJIALmgSRQlzhGRLocLHNZp1J9gJ+j5Olvwwfh0iuA3oCPqJCpnMkH3n4dcbW9vYgBSyQxxbAPS7mLtCMOB1JmcByYJLmRsK5KDJUgR3BQnhw3ZzdNMJa7JtPJPMyMfpvNApZHHs3bVyMquQ0qaE8ccBfC7y6MhbtvySIdm9r9IL+XbQfTTpttG/UauU+OurIuk/44YC3023LkX4laIrV1VgOPJFRERZPpj4Szcb2rE24jBP5Wi4YkobMFP/XsGfle+htbv7XG5ps42gDmY01AaYn2Jou1MMzBhzNeWCJKd3Se51g/yOXUyNq4uIjChlqU0rQsI6zz41vIEaeT6t8xSAtxvyBV3JVXv0cOTlZ2YVWBy014qMIx5Dup6dK43T+6+7CwOmWhoR8chMdS2pCD81egOAPi8IHHZ7NhC7ucniyzEYxFdJifHs9wjlBAwUDgECONBHgYEuy1ZTF7a3uoVdEV7ZAx7mHqCYASQHdYE4AHLmLV1f34qj7Quk/b9hMqDUHAjWyS9tIf1g90jXVv0oYwAAjLJJ1E8ZHYczUD8o0RK0zIVbeQfAbTbqhwNOGnavu3vGl/PFtGEmQPBM83vEUJyGqGqKdDvn+na+ixKWinBdwvYIGQPFAeT/vjq0OprhK45VT7U1/1FJuIicqi2+GHB4nIgK4FjAmG1TZL/ZTpuRfebMxEaE57suFnE6ctAGqcEgDMicAU+SN60BEg3a7CAina51p61McdcNACKD5OYIap4qqeW309sVkwu2HDY2d/vvTsz2lOf2vr17b+oqyVuZSW2yTpytwZ0OwhML8qIFxSlVLgyqcSYy4X48XzcKVCKhVugScXP1yLxfq5ioHAYyj4cszXPLLKBG6uYi27jrDPy9+crC7FijEcYTV5Pg+6FumqfmC9H8gj6qJVvvGYNKZAtLnLSdcoAHQDtqjQnOJReOP+HgiYHrNw6U8nZtQCpiyokYrqEJChcIlvcGFg26hKFCBSEmAW1JhZyIiyrhBRn97KRNzBj6ge94xopJ7akUwKQgqMNdJ9qQxpKqVwSLabWsb1770CakotzBnoFhggMGKTI9nk/g5vCTXQdi9UPtjMIZdiwJUxmDzzA1waIADiJKYNb/fJyRFQFw4GFIykzORAUF9kWGwDl2nIo8JFwREenbSjd2p2FaqObAQsVgT3CAqwl+RNz9V6oQgckK7VIj5RcLxAgVbUk54I9syb1g4EmKxU5R/J7BwgCzN5jwdXZEBlCDzO4EZU1paBGwVcJzk3nPqwKeIsEt2TwKPONRBw0GRsFxM5OBFNwSIdKtnXKpc8wbhOXG0JChFOQHp9opsstQde0DsU+unyI7yvWE2wgomGXoVnmr3K8vQDkbcw2f6PHCR3rE5kAfbMkUta6/PuCwEBG/qJZ1/DT+k/c3gKMPpFicYFG+eVMOKi/NpF9ypLh0pQ7vztovKyiwtwvoFga4IOAjjYSJ8ta8UqoFZ5a7E2zrl7lFxrdVyVCXYw/hoYPBojrBAJCfaBBHEWiwhj50kx+EWeIBS5ciPMPTUa6bEnlh1Rlv2FBinY2UgwlaDxqsCas56mRPqO/jb3TWfBd6+8eMAyJWI/i6zinLlknwe4mhsXwxBUCs0oI9ktfiy9le2Go0OfJyy8amVNK0b/mjdV4ZLJgoenVrRF+gO94Z3ODKaBtbQ3ixrBwgtOg6xHhqYeihyOClIR+C0ZJ/0pmxm0E9wMvVw2a2H7Css9+YFa5OVtaU/t20urkbTZLmtxmoUBFrLlyQD4QT33VJBwHPFAeEI64w/UAUiloKCuZeYZO5MXtR2eIls/u8Vpm/761s9v/aOtP7yIwOC12yo51vPWony34VaVcatCWs/VBqyn+IKLzSuYfGHK1nzOnelSWUWRA1qqPPTYlRhuTOs6Nt8pj59Ulg++H4zPk2RV7H6905oLjmnBegAWrJd3lbfId/PsBQAWO0ERmr62+z582PaZxwcyAVdapykFIwD4FXCIZoXlCRhzcBEFUYGrE/OYD0Yr9kFZiaizYC+Kh3uB9Pnhsj04qOVtXySwH8vAfxGTcJZZzlIlpThUgCVZIeCbp18JRdqqEY9pT9htwG+dWidS2jdIEwFo3Hiquxif7Xr3wiENrZe2OQUkhaddav0Quyy8tDRlbsfOcjw8zA1OpEFPwpHQi8CPcyGnYU3JwHFujC1hktGA5haY0168//LR9hXR0rIWJInywjCU3cxOrjPf4yoDOx6YYcsXnk+Zb+A2gP9h3gUNcMrFtDLtMGjGqq+8rtgOdocmypTsFYHXj4ZeWPP0QImu14330ZcHL9w7HbNE+4opgYkSjZpf689OWtIHkNDO9HiI2P346T+4MhedSHjc1V2YfdZrrdTIz7woc3aunevREJFhv8bGL9+qeMDPPfs68N1/sfXVrWdVFCG98MPkwh+WUuzccRUouEg+lI8KuwGDm7sojit2K2Vo449dfSdA9mElhJMq/FjWio4v1Q89F8Al50ldUiZ0566s9X1yX4ppzkeLdRmeez5EfHyJsL4/Wrmp2wFPHCJwjYkHE2IlNYDneew3GImIK02LdJ08snb3ZiAnXaMBLe1IcCvgtcF2wexhwVwFiTG05cFpMA7puKFF3PieQ9SQNPZpWfcAZxjOZYvl/QlwfTsDbxrQqKeE7AsbAxtl1HBAArggoQc4yUhReGALRyLzeuTlMUicnvBoqSe7ZrtlWCpRm1mjjSYODTz9fzkYLC6HcAMKkMWYaN5Q+3XDG66exA9cdJlQDX46SPdeuXokhAJYJijFv2i7epHG7xb+IqjHKvULBk85IFsmIxcNl6jnaaUcGaZGrP2pCDmPOSDCSMeudI+5yhIADaPSp65QT/I88VQPQI3kKXBtDJgCxQjFII9AkOsiDg692kv66FaWvJOHK6s7om2oFRLjPgY4oKXlFtU1aErs8EC9FoltiQfBtu+192Swb974S+RGtNcOottwETBtQiHncfPtIHtg/KVdfnQX05bQKWjm9uCWEK+qOH0zMisX4MBbbz/7c/Q2/vmtxtZpKe9VYtOJzhotAljME/6tkh4jqdKBd7pwuQJUVhSrkNh+7brfGneb78uFBCbmjbBm5itD8c1k5aXY61JfFcTKjIowYWB3asdPg1PzvhxJ/MSniee5HMms0tEPPOugl+Ca87LOPb8o7L90xd+U5+JoZEdDebpyNfrn13rTb4wvqjQGxy+1HJ28eTt1l6d2L1/b4dNwnRRb5A+3DwhZmXy7jBH91a1X6AP6pa0vl36uihGXoB1MwmB8uTCwqge/FO7/JndW5GlZP+PqZHjmsk3owuTYNZ4+V+K15xKp4PPj8wOuTgCkF7xIO4jeA4aCkHRFxmJ6vNu+O0T/cVe/KdJXUvI5aimJEnyc3bmTNrNHqW7eeeGjp8CvVXEFfq/jDECib3KDkCDAyUSkmiT/aMsTfnFXDHtkMFZh4uWiBsIPZwG9o6dAK8Wo3z6g326uEIcMWHtf28BVhiGqWe7y8aAIN7kJmH/qk45NaLOQ8W74HkMLzNoMbbuQglQo+o4fADPNTzjODie7PRAVTGcEA+Lu5VEE6NIV4wmZPY71ganPVaCZQupMABan+wBFbOYD9gIXDICfcRU4DKc0MNawEXhwLg1HwjSLmZdhr7HHfMKz6WPAS5Wc3URbpEbM1mtbf+N92c6qlBj0ZJ3svBQlXlXJzjUrWm2yna7SwyU7+ftTpmidMh2Mz/Frae3P7fSqPMImWWpEZrtyimguWSzjSPhGyVx9KlSr9t522H4BTIfehREQQS4C4Ytgt36N+fu+6hTSpUtr0vdaSvhWRCTcSQ3tvYNrCphBFsrcJV7V24V+OFgm/TsA3tUVrMMmHAgDGSJ2Vr/B9A16YrjV7kAd6wc8Rcl2avC/9lvxUE0xMHiAO4FL4zlgGALXoljrEGkWLDVtUp3zAY8IzGWACCBnRFzGGRQeu8CS4haH2dP//eQdDPCkoLosmwQfE2IEkMFEhtmbpGWaQPmwBLMPUmUR8DmAzmXuEARegzcL81I3v7R1hz6iXyjzO0AhLpXTlgixYs6ONzv6vFxNXLl65VWJqzFdjk+cA99E+0/KYrVNpIdeYrxssigrVlfL88re5/zyJggDaHngihPfy7NXEvmaLN58gw3utvaOZ0I5TQXBxwCMYD8NaE8xLLXCPvfFouAy9WL/E3R7KHsdFWvvOqibANeQYTK0rcL0ulp1O+Z2DiCr/V4GZjdwyAo5soJEq8bkSNYEqHY0Pv34C3ebJn2cme279yP0FWCbHA25G9MVpleWJDpIVNqgcdhg5tTS0OfYQ7cWmSRWTBsahwAok8A1e2C8QjrwckuZAJoK7EgBIyBtLzVEhb4tfLZLXHnidQH+OK4tjDzwhk8IMCSJU8qXC44MIjOKs/Z0dAAwYMmI7Xzfp0sd/IVnv0NO6a9ufWHrPy1tfVpWIIrSMGY5T9eoZ7WOo5dOquIRq00IbbXchN3XsO1S2P3kxnpXWu16OeruhIBetI4d8AsXU/WOkZOy6r7I796+Ofdx21WwCiW7neS2LKbzRw+mLPNDJrvg7g3CseHFk3uPMxpT6iEahv0lUMhIpF4grkuWAdaqnx3eOPNdi0gj4ioqTJ+3LQzhmD661+pmeScojPA86jw8UM5/Ah54KK/PCYfPoD2VY4tw2BWtKI9EnfwB7fojbyiT8fZhrX40Eas4aGQhzTN/DpBEZu0hQnss9RMVTPqZvhoc7aeqP2+ejPi+sr1pszUKWsR15oBMDq+OD3gmXzzcjpPH/BDIjDjqCD/LdIPVJSOA8QDQWe2HprAqygRcGOMk+Pp7zuEj03U+3eN+6fN5kJHivHftxrOvM0p/ZesXt/678wofvgbDi+EGv5ZzW+pixds2CdOyB4Sved860Eo2mgq4aa3z53zwIhoGHzYWYcgv1Viujzw/Ll1slo/Gm0wiL0WusvR8E26gf1gf965M+MQOk36jH/Z3ItdilPtycnW6//CoZz0SNw52u9f/0kvJNE18Lw0B9sruZ3NQcR676qCjUULDnBWxl5/esZ24K/p1TF58/c5PfPThZ872r4/ffpHgfNQ9O7n/w2+PHx0cvvRIJzXSayaUsQfJh4uXf+StD//brzx8c2//MIkJGh+tfujjb//Mex/98Z/90KRfw0+3BrM8mht12PWmExsP8saVNE2sF4caDDqhKfF908f1F2/sz1u0pTPgfsAK8kIMQpz7vNNCaPzo8dHOiw9v3ltt319q0s7yAAidljtq5E11knl1kurZD3/8xDa7atbyw/Edu9Oee6efeOEzXzpbbOPWduPk4NN/93Ovf/J0f9md1BgOgqg+ZUmHbGfBPD/rypYa1HHe7y4Ojj9w68br733x27793zo53ml/4IMPzj7z4qv/xks7xTuxf+eo9tqLrVaT8Ua93UmCVjefxEcqXJjRqNMHmXrp2f9F/2f6z4DL/ZnL6QD9L8Ong4tisappcOwEZHDeC8EdALPYpfjBZowreFnhs+U35YKf31Dm+C7KdsdnVfltWUd4HnHFl8MSlyMUz4VkL4gdukwuF5dk9DxCUTK59cNFVX+PJVZLNfyJ5lS2a8SCM3GlR1LEe7fMlxf+EafgPqgKFHia9IUCvDAHJlMj4r4eTbcB3qm5dq03YIoKoG3wJfaB6oMzKZiInHNn1G/COyl5k0ctdc134XhKiZp+N93B+iXBG4FrbHOxL6D8mO9TQGWsQQEJRkKFnPmY1NoNuLgEw2mmrr0ViRQAklDHKnpK5MhFYBFpEpyguus9JClmPtyFmrR7HAH9VDrh+55ZmubeKmsOPZ+7MJQOFoCIpcpqghTWnbVMUSHGgkeR19DdJg+ZULDZRe8JwIta6CutMfhmwEGjHTHS/nVLh0ZnDRnfjRq79k5MCl7/ZHTQHAP+t31wH8YVlLvD5AooA5Jwm55ItbY+18WIBvcy3dLhFdWNSUN6cy37XE6Ob4qhGtsE2WuxSHxlC8LHDIbfR5/NX/KJhrGfMd5Rfi5lTL0JcE6hWOsn7j+eqWaSCi1d5gOAAqLc2yJbH332p/RF+utbf2vrf0AJeMw0f65DaZ0wdCmDcRlhGLgeHCf0fB1icNjnsHw5c2hntX5U7TwHqEo9LsCxnpSRUsCgVS3lBca9yCFU0RFynhMow27rI94oOwI3AY7hhJcG1ZlWvon0loUZgL+OL5QqWZ3r6UbiM55X3YjOLvOyl3ZVRTKq1PmY3nPiqRNvW8Z73kJFk0MfBaQu/WN+dC2JhqoZPujReOdEJ7taxXxI6y6JQ7lyyXENBNRVX4CAIcxlWR4ATqzZTgjJ+8Lf9n+8q2f603fo7dgcGnM6Co/awhNUkZpVOgiMP/Bopj3E1Q3GTCQGjUShp78PF8UUiAwIImsUYzP3s06R9Pqau0ZbcOGAtw0hOmzN43tRPI7BCPGACzpIW8QD2uIbyXfDT433em3MXfsb4FyJPMoJoHEsOjK5efyCq0OEWQf3Q9HP2knNqLdi/0hnYx25+3N5dY0It5tOYRflp7EfC4bNOLgT2zeYZVSSe98LTIw0mZzlqWTfw3hL+816440HXRuJyILMA2539M6zrj9eU+L5ZtJVhRI5Xb2yYzspFzNBjPRDFQ2Bfnms3alPBPpXxGAcA69WEQW1Gw1jLoUrbBKGh36NhT+Z2FOrRkqOC0IpS4IkIWbPeDvf+MKTu3yQAVYKGR2TBiGg09+FvXbh6aYevcBfyeehi52UjVx4SL1Q50SPNN11XOAWYIyA/vOtf3Me6QCWnZZlPwNxKRHxXPMF+VbNF+clQBeNF+d1QS5Ih6+h+arK01aNFA6ibkgAAMZyc5nMc48BH5wH/g7w8IB8qx6N51s0XN/5ukVjHR7EZT7k2OmnOzMDti1R1qfGxwPmXxt1zZ4X3PDUhH/bTofFrySHTdfKkQIL5y3hH4mEJyfU172mi0ETKilS0oCsnHdyeM0jwZd0ZVwvh+vOCrFZqlEfT3T+sXwo066aNgkYaZGRQCXG1dsK15QVvOC72QRIqkJFUuKdyP12KLejXtYw+/Hri7Ysez9oTim4nsutH3EdB9xXQGPj8BofXT05S9s093yiUoEKrz4VcqyC20ETfYSlgL7NXTEpmpwyZMHHxExqp3NN6tArGEPXKyIAg7JU+gOW0OhVFqTXP2+mZnx1Fskdz1zXDe3viGbuMWpYUBtw2sSJq5SU1FXbu9YysPpAu4DREOv1dHfAmn4EFIuIjHEKt+wyReByh3akegXJVFnMQqlVx7f6Yb4Qddm6418xxS3vanjeWNKqY8s0d012wscmZCk2wsq8nTe7oWACAeJfxyWePPsz+hf0v976ZVTbSPL7SlvXVr8KMI838YaB61QYlADIWX8w+5WVX1voRflusar4cMmOKjSzqEqXXI/3vFhVTmDu3EC+CXCU8GadGD5vy74EdkjGFpeUap1mAbU7cBcNnM6tipDzLF8ni3lZZLneun6sz+DU7fj5apt1cJx+DaZXI1QjpAfWCNEMLH1X9ZrW37M7ZHWL1QWNWO0jYtBScR1gBGt8Uu94yc6IIhc/uCodHHBLK1T1J9gVSAWumZ4aly51zd4FH6bUREcpbwj/ZvFe9mLTrc4AeMOfe+CbTKOtDhA+8ViDy6SrMxZcof5YhLAdcBQ4eswBjDz9E99oDOD9Y7wjTFvlLdkQb80ALIRKuWo+LF1LACICKeQ6Krlr5gGldFIQNFhY54AF8mlX+vdZxnT/Q1MQa+DmIHq+C7o0vak8stGx0l0jYh63+l4nYbWQkgYGDl+uigCsDsyki9FJBNKteExDhhlYW4vit0LwIdHOkZ++nvORll2TvJV0bTp96bFOrPVafM9SP7QNKoD4g3hXCy7AtTpcBUNHneM0Ghig0AacoxoSNee2v+eJqCb9Pe73azP19qfnu1ftkffqbQramoMCwfXXsUvvR7bJaK59vStfrwWnQe9R8UFP3Q6i+940KtRU2iuenipQzLIGibpy0QHAPV6/fUt2FGhlBt7FqmtVne+fkN+m/wLBh1EJkcZVeVepDO517AJ5APczlzCZjKuVREoeSErtAOTtEs+gDZN1fW/1OEDLhavl3ACjKqt8UmqFq/iaV/GgtRSvO4k27KOq3HGnm2HLA9cdWZValBnpdTywKvxx5X8p6JJF1XXDZc5A3ou0jGjkVULbpZtcAMsliNxqOc6/lUVFw/E65VndWKlj5RGLUt9KCHV8uTypDIO4vchvCFOLZ3MrtnXyamY1+RxWIylyImYetqqvokZN6Y4XzwkKFAmlxgoQBuFuAQSQBvhQNTQzhieG8YyBEgWPUoBnqiVD1fvRdnBVfzdtiOAsCKxroNZYe3l3j0UeZUecuNVC/IT6U9aRqiaLKwgkj3nOjoPPKNFP195Li8muBbiBUYzqgOlCuAaKaBqPlDkJun+ny4V2FwI+hs9CFb6SqnHXspBGkwPjWkQwKLivJl3Zm/FcHzLV496xN2OGw81QLiWMwLB4tyabsjaIltbUPObT6ZGgEhAMejudM+chXHwbmBLwLeJYFWiAq56SqU7dYhKc6tfM9rae2k9N+bT+7dlu9Ll9GhIgva2/1vLaPiAzzVyVLXbV27is3EZl0Tduy4n0pqp51yanzHrK1mOhrAOCiLrycFwGDwFpseSvZJ9u6ISFBH4PPA9sDjgkVAOUKXNvwnHSC611mo/BMdZTCSgBlaSiPCdG/S4ZWVp4qQbvNdjJXWs3cs3aiDZutukATeTE7sxmKbhh33ErTy6lK+gu2I0Cy/CuDadl/PXRs0PycfobW09LblL6qE3ZUlluPRZZVfe2qa4vFz7YlMqVdNYtHJJX/XK8euXOcVRZUhBtd4y0XBnIpYJKPrGuWLrEo1lZ4zQW/PkqJafii029piud2hCgSkfhGhalgpfR4QN0To+AFW2a++YuHOhgmHODTpFcb9Om3u5dAANKBlb7NJ5HrAiaNn+Uq4lMpRtR4KCuEj/Eigjq8u+FWkW13cOgGXvDTuhJt8wIMGPQJJiMOGHNVrSUmewHHyzrpF103CoXMQY2XYCw05oSSU0EVynxuceBKgJHsGL+Af1tDQHmp3DhkbDVVZSzVgjSiFylOfg9HxB8Vdvpii/BO3BmwPVgA8adc+DGWuxwHfoHyfyzrm2qZ5v+adCVA1W87i/rFi4RzPCh6YWZEKC+EQ0fhKwVeKU/BdlxyaGEm5mIFpEcyDvdYSjHDGsns1SIsAmy4xMceXlP+o048LI+62AFGp0FxrlkpLBsJw2j/wvte5zXtZfV4W7kdCCPfB3F3DSdMAsQf2HhxhCfi7sBwFFSLgHCGA9YTFw83T8Jb/q8lkg1VcG+qR2nr6S8aayXNaK+kFmgeJ2KsfbH2hx5Epwf04zaLgNO4SKhrk7eFRTAFfd50Cjl/Mmzr9Nn9J+j2EUvvxWup0PXfX2pgLwM3JzjenoRdM7PU3nIrXC2IemgNsPSNh9XdKLkytdQXvbwVY4DHrxcpYcXFbNJx0N+OeHxHLNB35LZLDZkpop1lS+baGm5vsh8XSr1/09s6J/otr1t9USITlhTocQ5MUsOop949Dgat6xoJPrl63UdCDAvGVh4a8C6xBibVDdZ0pjVVM2rd/Xoxs6LSZ+0Q9e9gmD8wRA6OG2P3WpGVGYAP3pMn+qTOolVAGDfbcUly8Wwu0vXe2aCh6Nxz9tX4XVPxrn4tp2WiJ8ks55KGd9VoiGTGWCkdAGEaVQAzpKgDFgKR4lRn+huhj1gP0tCT2Wn0DwnD/TQLNR4wLKIFx9PW0E4VjtNSmKiYsD5sSGgupKQfyAdH8AKuVWzBsAHBhnopXQ1o8yVKuzfa2Wdva6KbteOVesGO4v2eun2rNFVnWIM3Nm1zpiQZjgMtOnWQ9Jhrc/WvQNv0Mqlhe3M1fC5RwkMQ5sRVnA25d6s5+Mu1jP1KbabtjgTxFehiCkQIvAoG0bku7UwwGXzROZ1x4deUmjw6Hu9HdO9PY2BD6liJHrKn8hGEaCSEI0IaRGtOTAirUo+VMbBJDcVIzI9NezwRsWIeO5048Gzr9G/R/8AhS4KS3aRs8GulL6ys3iTTh2Mq5cSk63LANewqdILYZ0SAYBxi8SVDRbjqvIdpPY8mHWyAWYni00UtopcFVUtTimv67WiLoWeqpOQ0u24amuw6J1yLZ3xJZu/qJwE+K6yc2jVddmiclELOIJzT+tWsbJLw7WQcVfXf+k8HUJ/iQS2Rms/fCcOynynS9C5QIyfU7bL5bhj+YgHoz09SF/1RUk5qVsSBp5CWhXH+4XtU71n9NWs2ypRN5EhKquOwUp6rngawArwXpdIAtjloQkjYGg594d7ZjHGbi0ay/h2zbF8xBSYN1zmWassbEmRl6Nwt730mGXmau8gieCADr2AfzBugScP7HZeT0Q6PCIR/2zabdDybKApZTWgQyOuQ8CFgDlx1hJuoVUDMw/KYA3p9A69evzhWJzqxXakJOitgPug7hncz57/wVAf2NznhzzeHnDMBGAzL+AuDkxRCKDMSPXE8B5r3HqSiMUMHBF7PB62Xmvr60oecnvjHZ8Dm+E0Bm0Gm+1Sda4njvqdG/7YxJnZM3Iowwdx/DiWrUwRD9iTJ8qImLuS0TTWXQ72JfyYVV1W/5ivZ1xlYRSrsIaAZxjjnZgRvR5xm/Dso3VvJsIPhKMb/F3ObcTjuyYDeKwn2n8AiBZ7HolKX3H47M/QL9Pf3PpsmZUYn9cClOtZVgZ/UurGel3LQ7RYC3q5+mBlqJdrqnGcVQLHs845iqrqZjfvOgT9bdFuB6ctPeLyAGChs48IV0R3vbKlWxeOlYsaudIbt7Yl5+Xilm8mqQsT8jK3TlwdFXxiREVMukMoQgYtG4JEuS48OGzA9VFwFtZ+YaZPY2mPTFGsV7bEYSQ/KWjAvGbc4eXKlkrwamlLgdrjv75zLecfzs1uXoSnYfxGVtfhUbKYqYkCwjj1/FRWOf3lswP8IfpPtv7WevzKXKFzdMMSz00uZ2hIuUAoDBiMX7n4gnuzWHdkXu7PPDkgZXnO2FG3ysWVpevnuuveX2w4f5NacMFptcEtj4ffsMv9uhkGrvKaMk5Wjx7eFDakHBAEeCrbE7SHyiCl63YGnOX6BcCGc8FcIFgYAcjYGX4Hi6hruFNSxzkjCaASNVSvfEdQqgkFWAJ6YxXMB3Am362FhrUUgI24i0xRt4gh50LodEdOC+aFZA/0EAAnxbtHR9ixk6AndGb5DvMOIhZrwFvDMJbzgLe5OovETa6G3s4e0A7RFuEja/zup3t8InMlOuBHMfNwO6RKKI9LyoYeTZgaC3Ok9UzDj6JYD1T6JJIHLHs5NcfGHCuaWXDmC5S8FbFGXchy7Ztn3yC/RX9967933Lwq2R6W2Ok89L/GKOUKsFX3G6uWAwVQA/uWNRwlJXd4aVFFtUpuvvERi3V1cV4tCVpUNHvtWtZ93ZsqcpdhnpfBLS6eXyLtYg3aSzm8Sw/ym9gklHuhKoi3aI2NBU9OuzAq17VZaL3kxtcWtE8j7koJSzUEpqeJMt1kn7JOWLgyCjDAxtli0DPfJfqVa3JgwgOzi1FL4BqI0o4ZPKAq4xnosJbgHKK8GRUquFbYNIP5ayVyTLn1EjIb3skVU4ttlltKDxBectKi4lDibepW8GvtanLkqTMldqRcKrEvAEAgr++qOOBawEgYG06u+HzaCdPbYXI7CMEO+izV1muw3rfzsT+IOmmjMDxWUlQG3CgyIuFj/+AxehfJK4OAASf/+W3vXtpProb2DWDPE8FaRvvglkD/h9uLPTPE0WeidLKrJUqSBtc3NC+GcsAa17IzC5AMWBA1oi4m4BQio21QXAM0RdUsYYEXHvnZ9Miyl/LkcRGdBtFRaA5jf+ZhVuLzZ+SH2H+w9btOxiqc7IgjHwj3MigXhhy7tj6HLqqKLlcONL54OMtcLjF8hko2uDhZbL5blMJXpgpKrHHedLNBG+s6vk33HqpsC9CxUgjdYlFtNFhH+UsckRfPp8WKrMoi55sKMbDqnHw/+DXGbLHInqRqILv21LKW9K/LnvjQvZi3PCuBYM5cRAKDiMB7AxTJY4yV5NHVTxnY6ETNLdxku2CHqeq0ItWt+yo3mai/Gb18lSQBBbopPAlEdW65q03JWEpQylDmUkjCrZks3GHB07t1yMCgeRhcnnWLaZTrwlFeAKMKP2hty6/j8ChikZeB5QAV+Lv3ct6vsXJB03I5U4cnXUoM1ZVlrsRcyrHwD43e8fRUkAJ4aKb0OO/6ZElfnC5T/yCQUymzOje37fVQCURSbp09davg1XhGg9veVXfTDOywVqB8vOEBeNf2SI3HahGR/UD7bm0QOIP0GmGf45PrpH6owrpKnqS9PdmX/g1fjS0HDMYVdevnUmJMH0cvRrTQwmN+Ypqlf7qztcU+Tb+KPrG1lRSr62hVLim8KiuXSqhZ/a1XMLyFzhtYzruJK5Far+24cIulwtxfx7krRst4eZwyQO4kJnUhQFcuepy5w4tqYxngS8sO+CKrsk1u5dMq4gjG1aV6l1U9L5xpuYnvl7hiOV7D6JtocbJcVJ005GLVS+EqKJYXkfx1MJ8X6fkFVEGcMryYVq2P7qVcFG4sXCoa0P+yiqqW2TRA1jeR0yl3BWUZXYXhy+twTZCryU2ndkPYWgYr/zaO8pG9qkUNLIILWSAmfJgOrn/o/rDoN9rSNyxs0QSBnWr0FUsjVcs81xbeDKVy60AKv/H5pss8TlPuAYECmSsrq5grdECuGABcuGugYm49DpDLbfe7LNGhyu57N2MQACVK+O5QE/wQpB9Qr3bBb+LUDT4XnVGQmsI2mD0JihYDQ2Ux9RUvcMoYoM+MqH7L9clmHe3q3x3UAtV07AzErJVHxK/LiTJ3skzGzRElkjFe5ifK4KDTLVpWWEr4kXBxeMMalEtw9Dr3avQfY7dwLMGuYn0y5XXeBhTizZT+y48P+mnQ1rrupTVax7oIu2OPt1JZG8aRTGtiz0pXH+G7sJ+roWAqaWwXy65vicJ5txU1u3pf7m9nGgZGBVbBb5tK8Vc52wdOqe4nvndtB7gzUyW3gDGa3jOZtwu30hHSAJiZyGYO4DzSrpDE6zQnNjIkxpZzQHzqIIu8droj0jeyfosVLGZeA/BMgSPOcpa0qd7tGmLzML6t0sKGh81iuzNoqEbAO80QgG2Et0OvcAt6urNzHuLUHzSiBU646zPQWo48kye6bmy7H+MAFx7v+nzvzTem47Y5xq/PsM00zIPnvGCp25Nnf0J/hf6Oy7yNnCKVK5i7wApI7cnl0OL7Fu4jVZ4L9FKk87VhB71Mz7svnVq67Nuy8ipLl42bVB8dLThZrLNmVZw/r1Yofx8YYZeqMlbnpHVT6HFOLsrFyVbr63JLUMxL5wKMl2VphYnyyhOV1ZYVr3WGJr/ELPLCBTnpP+wsREeLnrXSxuIIcItfF7WHsUuoDTFvERFHnmrQCfUXGfV1yKUsmQdgG+KqikFejwlPWp8M7Dt1GTvuRavIpku3wfcJoCJKAzP4sW3WgFkLqWs5lsgtQMQLGe37tSe2FdaN7Pk8oXq2HXNHrV1JBbz4rIxos0pJ4ZVxE4MbwICTEfbTsE7lMkhfNMhyF5px8IUwFZU0qGosL5eScECtXKyUBOB+GBo5mapWYQU8N7x5a4blTGTvxgBS7DZRbSJriZY7bI+aR5bEFih5PRly+0Y9zdJbafFWcgf3357ligCbd53wOAKnZoqD+KXwrNX47sa334EL+MjRh2NgsDcetpscbIunI6JpuWI6+ER5VclxXYq+DG74tU+Hw7SpgeDxJvWORq4qr3gr430JJIu+OzIDo7KG4ICumpJmuqDp9sRzq68roSnYw4r5OU7IJQsfJkp5Ut2xtr4NqDJ4cfcofilODsfAyvxjP34QdqXfcJAgYmGVl7737E/ZO/S3tn566/+o8tLpxmuc1zKsN4AhLwvoL637fbnSYjFenXyrRayeW+Vy839wuLx0ykV3ExeTMqF9eWknp0AC/E/Z3bf2ZsPBpZWgNhGci9WcqjdnaL46XtcSr84L/9jb4F3KGD7hqPFym9ZmozDYjf2hLZhuyte+8CoCBJTtshvXYt2XfCRjcIXAf3BAkrDMMPNyqVeMXWAay6FblTKn4Uybne34rrGL8Xu23vJOvBVr3TjOwwPx6ul2CvgfKAEQOQx/z5zzU6lLWGPpy5EZb6tuK2agGepK39KQ+Lk6sGFdR0DjAjBou25NCGCcIzhVW2a1w0JkYpom+a4RDZ6PX+8Ph0ZaJjXQFI4/EF9ntObFPucJeeflNt9u1AntMdyBC4ALB9QBR0u0i4KZWImebjZlL2lbkdPBa7zJxbwb+kvptbTXgiug4SlvhyKWo7qUvQJMuiwiA5ZAYR+JosbINp2/dnTEZpEsZDgyB0buJFxEuSgO7/jMElOf6sPkesbaFmXE1R0Tt1wFycdEnEjeJensQ/v54zy4Gxx9yO7pU69WO9SwV8xYWWAfda7soGuJbgnTPGT5h0F2bz/7NPka/W+2fm7r91wEP3//Wt+DavVrse7vKS3iheA4vFZipnIh7jI9VCaLSiNchh/WZRVuNeyLFT5XFVtwcfRVvo5SXmaULuyZATsQi/L/O3GpRqhc8KHkEVVWrEoPb8zzptnw+KIqjvwZYZwLHKai8M3DvPVyOLjKb3ZvFgEHduJABYAGeNJ54XXF3lFsPI3cKh8Kux4LB+idZQSjV/pSXJlT1+JhUopzgC3gwKeSjU0cxK/GzQdXB7eadt8Ldv1w32tc9/PMlXPSP05JAwWNmq5zOvXqU0abYjdSISJl7AkYDXGlay41ZaMOr92WI/DTuk5qKtSOr87IoZn79pq8Vog9Ja/7KaiW9F1MpNsO+I46+i45bds44GTImtuxVc2R99o0aow/OEY7ZuqlQ++tzLexZrfkvvGmGicg4Cx5KdJ59loqPYcSuYqIcGZZOafhyhJcfCsmtKBkxu0HTXqXeIrpnn/3xufCbSvzPUlcBoC7MnwKxNVEw4VX3zlK6nPVFvwmtjM7vO+HjGEpXcWFjHDIrVUg5e+U9vPx0wfs5+g/3fo/0UeBQaQButz7BfYS3pQ9ZKXwrDaycnLGXE+7A+8rZ1cnrmzZiSWduAXK3C/c1gtUIjdx8cUEzCOAC5CPaiGycZXtQZPK5uarSy1JLiZ2XPr8efmoTi7ydB0Ku9zLT8RzNczYxcV4GYIbT1aXi5jLWxFglSeDA+fO3XWDbd4sqBpUZf3VemzPt3nD1TgFcbzo7LmlkMsFU9jPbQvcJnAA3dZ20loqMfD8haRHHshR7f9j702AJE3T8rD6v/v47zPvszKz7vvoa7q6q7tneqZn59yLnZ3d2cMLCwu77C7YGOQFYbRBABIGhQwGJLBkYweHwqDAROCAMBivMEYSEmEs2xgIWyYIy/IGxjLi6PH7fn9mVXXv7CIsQsKa2umdqerKyj8z/++9n+d56WSb0a0Hz5EBJU9WfBh10lJ5hminiwbloTSNK9ebt7mOSLCllx/+wf5uX2u9raKZ5U/xVe6PGetxgjgEw7A7rxTLLAqQaA+nPYzGHAI+5AptQ1qeThnfIzIgey1/sGb0lrVr7VksOvwrjrZX/a2Qbyfpqw25Jr0hpjcREoAgNMeeZ1E5nBXBDLd30JKatKIihdJaQh3KH/49p23Zwba49UhMdcvnzYmyhyVJpUn0sOj6LGNNHm2apCPSVQ7BnUvfZ91QJCj6pYa6oH5GecdX15jKlNpUtwe8w0U7l/u34GNkE2GkIW1L1o8+xMKJD/kz69GwHTaZVyA4HMlXjGgvvDa7uzUZ+JHyNpFrK1WoPEstM1JzXgby2vZTiCNHHbHuisDGvPI1g/Qw8n2+wuxIo02owIS+pG1qt6aZ6LJgu1HQblhIDUXSSKiIBweBalnapOk69WJvS/uhz2WsaKjAxUOk6pE2Xcne1o5vpXQzZl2hB77ZM/1GesXw4xBCX7JSHCCsQoWMx10mppI3Mp0sBzvkQ0ot67ff5FwR3RBibNSuRgAX3eVehNohcIMNJpclIStUXOfcDwIsme6dFs/kZb6pT5+a9izUe2yVpsuUZBRhSg66zSUPb5kGV4cpH3J1mpXvRttfff0hW2G/tPTbXmcxFRi7gdjonBS+GNM6ghPY0Ahtruvlorw4xprD7vI53AHzLCyka6wSGv3o0KkRni1smGIV7nYm1fhpsEUyO5gd7h3VVPO9BcbPLXVwEtT1Uq16+HyWLF3I8cQZLpycKb+cG693npG5HhxqLfS8IiSLdlht0XSuic3GLO+IoxdVk4Wb06iFMpNlOBSkSf1umTkIQcMzKN8kFE6JITD5OKoQtf5zNyNBNN0OZ+3gncaGHPeD1IgkF9GIAz0YUguPRgLiG21aVvq+BxU56z3AVQK3I3WgRArFzFjtWRGkAnJgeMuJDQW/E9MxDdJWVN1v3LwCBaxikdJINYvphsYNYipgwUDkggUqhpNDkyGz20aShx8jGaGtuKLDLLYzYxtt5JDhS8G1LpBe9boTfX2VhUozq+HFmomFQ+Rj+0mFB0FL7oRr237PDpc7KyyNFG8ZGXlSsSG7pzZ7oe6FZmii7VBvap5F8N6MzZQmbiCmDB1LNf4GnkPs5I3XmmnCEvC4AWm8lPgbYXgz5iW7PUxeqURH2xzDIVRGLCapxhSgXo3jtkLhq8U2IqNFRKyqWrO7H/noeNRlmDdgo0KWfile7Jm2r3ET1TV/w8oizE3VMIFPuKK0oH87gLc/Ka0XKAQSUqriYkWHh+32QZ6epkmMbXM6ZRbK92RDr8ueq8mfeP2f0a9mv7L0M+e7Ch5J38biDPZzEdjtosbFxURzIuHx0VxT6UwJtv528QTk4KbrlZ1vdkEVRwhH+3uP7x06i3IXNw9dLC8o/QSRePiUx9dEeks0hTlK96sbZStTO1at2igP+rJN2a5EpVVdTWnb6pESlQ2i94z1cmgPVVfcvRqXNAkbbBXO5zCjXZm384IHQjPRl4aSbdvJsFvsyXin21HDsNlSE9rgw7hVmFDdTbsnwczfiGho05M8uhKBdw/VTJjemuVtlvZys05kdW8rebG6dnPyUdOEmkB732s2zLRJMxltRdub4M/5hEcMVdytoAHXlAyhAqE9JAwnpvK9KPU832P6ZU3angeZp8ff1r3uV2HFdgZyHWKML5uxSbmGmBEGJCZ0N15ZkVEWVLpF7u53Q9oj2Dxzg2APcSFpi09FOoIiiHWhCiDE+qGKbRRanHQK1qg2J/7mLLyWH0wa79abaorEfW+p8/ofQeT+O0u/4DTfF60NcU7ProdOCxflRPvOB6vFhVkr+l1s5UDF6zTZQuKc6NzlzsX75j63nkLW3JqDE28+qALHPEWxDjHnqNa6BfN2D+rIwcl0YkX7RzVaE11z3dfNS/rQeQzJ0PchEJf2sKavDO/EQSN/tcFQsRlH6wihUZDtK4YAdhmgCKznwWMPKCWI+zces1yL7PnZBHt4TgKKua04CKaUtbG7XS4OpezWrmHiLk0a39rLi2m+zIOR9hNNKQ/Aw8RXowG/v1p9rCnezWVO41M/uZuZqYmeOmjqCOlX3wiH2fpTA5VD0bQ0IH6oV/W6L65rU48CmPY37cjq97FwNX0Qh5sbG/eW9ThoPRCQm6yLYGM5FHmCME0msF8pnTohakiK8ArqUqs7sppsp3IEyUFA2p2jUO/4cCCfbE66IaumyY1IdZUeN6AKAseop50bqhERBW6mN3nNbyA2QqPaEfZnMX9xNTQlnOQaknjnh/Ze/yN+i/360u/XMyYnM+QOj4MTnnFLIKyvueVoC99QixLhXrP6uCzkYueDSyclORXYBsSIfAyZF+Li80W497C37ohURV6e8a4uLEI7HxudkRSnC+3auiSdV6dzNiuthXH3Haqx7Ho1yXpOfHUGMO8FFm74jZrXx7qY3qrg4/XvWb/ASNDKr2f2dnxjOz7eyGnBb4ON6jXJbMCGlY4iFZMtiI/UDUBdHKEIhzEOTsTiSGZQEsrgmz42JolA0J2TCHB1p8J1YphlK8IhARyV4Cy8QagyFr4Us0QkTHZMsmntRLR8HLLDgYgY/Bp1fUNsVqBYTZMWReRxuXprWfvpYTeI3etADgBz2QFBNBlH8QzsGgbN/jN9P0XADhGC5v6gbaS/oliuOg5CIYwnfKj8wPm1NAtyv8teTFaHfM2P3lIER5HcC2djXenZ988EZO8i7BvIUQxrB15IUQFBh6MgVaexvwLFaBYehcVzmd2PqwdJtKviRk+35PLWBnhI1ELAep24PUGkAHtnkD3n07Qfm45M35bLro1W/e66PQihfHp+T5fmiVcho4miBs99hJ7m/nM3A9PoqOY7J3HYWVHZM/Fsv3P6dKUGUm+otebQlpTjfpM/fP3/Yv8D+8zSr82VCRcY8rNNJ+QxuULx+N6aOoU9PHicV3VR62jP0Uog2dxzDBJ6gR/b9xbfzg/0uezbI+vI5upvCxkAd66PkU5Y62EeXVyWQtgva8uzMReb8ZV0FdM+XUIiVATYioPUXPSor0SnW3We8jnKIyulNckYpBMMbgZJNzwvo2aMvAsthEcn1AuIODgULIVSzTM0f5CqLXtYmchwSXhmQwYVixjzgrMGi6jkRigfSsdiAs5bJ46HEUB5RNMM/h7hI1q4dgREzLhMqBExsZ2pjqVXfiVBSkiQ8OCKFcOcBxOZ5O0GTSz93QQyUNdG77+8Izvh9pq56m9OEt3VyVuK5tvMcho8t6kD1jabluexUtt8Fuf3S785fk224+JGFjTU7ESvaJ7YSDaeLyV8z3ijqRHLjrkp5BF+gwVbnZXUn4bL982yMdvhpij8SKgVnXXurcG5JBp1vvYLpX2key0HG5CgKtmFk76jxbK90upvSoS842I+qKQLnPY64BhxDX5dPBfMNHJvONRI7SUi/w/2y0vc+1bcuDQeHed8Lq+NXCcXOnNxRoFykfhRvPfFlUr4ZyzO9/pd1AVB4vcWn+s5P/KL9CJY9kJO6IoZF/L3HQ8DIb3F4/v9Hvt60bi4oFxYj2fYbEsuhj1uMIMh/4z650Rd87oB2FsI2F0U9jqTOIA8daEFWq+dWcjXXbC90fRw5jqQzgT3Lj4Ffw9yNr7di/TKsvQTuj2rOnAGV/D++xm7lzEbswGlcVHpzZCMfVb4cKc11Du9ANwglFrWSpPkjJgwinUf5WSZibYsBVfbD7kJwfOMsd/CcEmryHWTQZykvhgwlKOTMoISAJ4S6RyMFKLFZWYTzuDqysAZGTUkM2r5Y8vycBQpizgaeP4KasGYBROoxKiMVSYlnXkk8XRDRxanjRAvIJB0sBZX4K8VFPXgfxPZJLjC1YHy7fGIgUdffydk5P5O6LdaZYqvjUmW2SpUk9ILo5aVkPj4CHqgNgxoi5IuSugFKgDjYrSlfARLClp64ME8XD/i0UxUUMV4sefz1Noki2ljS1pi1kr4HN9R0VFQinBZshxH2y+wX4Sk+tdlRuEZIQ7dnL2khvHLDduV8XjV/sI9/PxetcZCNOyy91TqRqBXjdqSwZ0EPqp13wxbNh5taz5Lae/LSNjVy6Zx8Bc2ghUlvqRl17tOewfCMgs8su3fCKepaVAx1Ts9G0MWbRLm7wfRXnVdNTS/bqcquBN3iqi9rHIEMKnApALnYJyaXPe8FVWVrdUiHcjGBxqipZPNpGXX7F4StMzIQhVog+capi99RT4omrk0O9Z06cSPRtVKsAWuF14LrhjkMi11RZUD2yOmJGBdE0s+CDOIzyYKG5Ac6CxPKsUtHILWqjw1dhzMCtnU4aZ/LTeW8wo+R1+zaDuODgJZCKiiZ9vJzaRD5cEwlKtGXzWKJNQqlsFpdVMVGV7XfBg0RIq4oRJi30P2X3k/WvPGxiOx7jmE8uiRbbXz/555hxHmVYdbVIxCEpE58KfIL+7YPBP5XghDuB6+HC/8GU6XXQitn3s0xzFj9+Xiystz7fGz6Iqv4vAIfu3wYJs8UvTC9+65HGAO2Wn4/2q/Nvo5HqXvlY+yONnx/gKb4nbLHD0Sbg+O3IqTbSd2hins8d4J9ocdTGNvHr7nblDW5DXHtl5QIOYbPeeuES9a5D2Cv5L3SVmc+6O8LOon2mO/zyLDwJV8pdk0+812KjYlURBH+QiCnpZN3iCKK6F9qELTmefEEhz+ANmOiFnXYMbxkGCtIIjlAiEKKEIkmnCMjUTx+u5EpZ5sfBXjyOGn4bGlmZ8EzIyN8JN22YL6WzT7zK4HV8KZwic3FcRnMuKmGUoOhuVTPuY0MqnMUEQ3V7VItafG3NKcsWVMfDWhO17hJ7iZURMWsI+JHf/Zfig2Ubgi9viIcpFGIuMITZFcQxJhCQ+KvGncbmp8S1aYlEmBo0gf53aQiUDsFaEgGlKI3LRXGSTFXvvLce0p5LD+FZ8NKmEhaIZhOhgIE7I0arB47zBegazUFjqmVcB4L2QjL8gi1AH1oXDyMqjFCOTuAvPdMVMo3Tymboe13LjWNQmOhNr+nQJ+xONsAzyD5n2xQQOOzEwWRtO2W+/jwI9YP6G0VwFmygqTzLivScxoxkViKk6hqs5KuFXWsV8RgwJRRaCOKk6LEC+GSg9bRkGcINZG3O3Ejnfb3Cg+rGSH0Z1wMCjCcGgCFmi7FopIlWaZ8MTYWAS4PBR3qyfrvMVyP9yOcKilRYyQNcXhU6Uebdq7uYGnFekGVM9pIYdQJ8P5QjkTyBhN3vZ5kKQIFGHEGh5mhQohSeQ0YzLrCVrI0EcNLxoKDb8puOdTH6WR5++Cc7ujcH87HLYA/RDLNoaZ6bZMl/VKU6w17H14TeUE6oYgM21GMh9OMK78xJ1WcIzzGYdTb4OtyM3llMhpvU9q8Pq38yXI3X/10dz9MVTrfHzo4Fq1QcLDwLkdHU7nIEfn6R7hb/+xGfzZIJPOkSmQtx8sch3qiObwyNItSlok7NOjw+OylgB5w5z995TPsxEL1vzrET3eZ+SA8p4Q3Vr6zRE1N+PEP4QPfowbjlDtQjjGFo3A+SdUXIEbsz3d6ELOzj12nUJM17vHDBW6Iat5LGdXT0jSIHxdJO0oD6g1qangzEoVU+3BS2GUBqWJ9BEBZwGnGRJ3ZmRMTHtFw8eaxys7FnMoEUQ8vGrFIAejMVXcLlni09+N8kWeLp57qTIvqej5qvGyz0ImovLFQLcK0zl4Fu5JvBp6AYuPg4FuysanKpVYvh5Hal2thcWTRVSenr7viKcmktXzlcvVWbNhHs3Vi9c6dhYWN4PxgI2mpogbtslICR+QpAE5zKQOZW+gxxPvg+FejRBo7kNyHpA6OecFfpyPpufps+mqrNNzOGt3Xv9/2Cn7jaX/s96V4oS3xojjHk1HF5QIavryfHHZurdf1cJtx/P2x8UlphezY4r7L7w6NxejBR4cro4LuHFw6fhE8xiJeXOxN5ZzRZmjOZsUu73I1b45p81dgORe/G/IenVj2Jur3ZN5/HPzzzqOl+yqUnE+CUhHd4q9sLy124Bb6d8JwYSKG2F+K/eHpq37WmRNyvOBAauHu52Du6PMNli33Iv8vo22wmA5qK5/zYrqJZgrQi0kbMDzyW4Ub4xT5pPrr0xvlCKJjE0Zh0QLhZ9texKoJlt7Rno2kHfvdj3uBbciWUj/Sb9x1x8Ge4nd6wUQ3EKiN0+zYAQ5ERuGwSac76Cr9LGmoTKU+FYVIp+Ve7a8U0U77VnWXR6VIobLabdLneb7feXYXXCYfB8OBippCpRqrJmdSMqjGqMol5CVRWI0fKJKrsbl0yV8CtNXfvLUH3ZT2UxSS1DRAPuJ2L4drcQfyXhl/aQvRVNVL7f7yuIeNw+Se5QcpSESQJHEp1HYzjMssN1yxa7eutctTvIv6ojbWX5oT5LiVhSetOUg72WZVjjBcVNYOKHBzknGC98THFJS1RTlW51ffP23XyfkB/jPLX0nfDOaF4mOgO8mzYVIF0h/3KVanTPl3cly7tHpBiCetd4bhWoWTlXp4KJkQE0prkUD6OEcAfJ5RQPQ44FHlOSunCjZp+UrH8Bl4NR6huLA0RFzEXDGhTF8yD5T5Td2CLvX/8EbsqJmZiB5po6RXxnTN+keDTQL9ZyQ7za2ICE/8hzTp+bj84qzUthnkY+vejJRndtvb53084R/QymgUIFIXKXfDHV9Ippr9uGvJKMfzzUkx0+l0cPfiNVV7q/ujktIyo2usjD2AjgwCj2CROo7XE7lukBorGO+j6Z2LZA/+zdKPW18sFhPvI848nuPd769Y3vYCcA7Td2iKazE8D0PMlXHsuuvfxM95c8sfRrREWfp43qxv7sejHZHiMbEtPixhcmLPuvhDW+xiRKqXDRr4TbuPCrDdpHNcYqVRqqzrk6783khqf/nFj5QtZC9r3+gj6uX6D5V04aCYm/1imVGmLboCoV7ZXS4mtjNDgl8v5NPTLLjD/PbORzvhgdZxp1bbKRlJnlP8USmz+Kyd5JvepGvI1+4rAZey7ifX3/L6pPPLMc3885BtJvmV4PsfmvlW7a6T51M42GrbbSo91kRb3Pf382S7sj/zA+bd3azkzx8th0dp7v/bh6sQnXqbECQ7+efme+cntX4cDE7QD0MxMnhsa5bwUdzZiVSIBwp/hi/BYecHjr+5eGWa2iLeofaqIbKgQOd62DUWz9RsHzPkWpQxhM1vArkSCZIk0TTSrGPXTeWcfPd99Pd9FA22im40IjaFckq1f6FzgtC3FgP2z8LSRiq5XDUO6FO8Imhd6S2zqmY/OArxVioiYQIN+5Omm8/7SjX4p/o8lktCwYH3xfeFE6r51RSPRSdhvJf41BDGj5S0d8tFMetiAIPAha70qNFlkfI4C2z2fY41ltR4i2beLzhZxnNfxY8+C2+2lFpW1bvLvMyUCIQvPDCLIYwyeCJ6sEu4tWVlwZDPfsLHZGGnCZcRAl/+B12O/myop+2Hv5Q7q/4O039sjaMFnj+f8RL2e+yX0DeG6LQRnK+ZX18sZ86/5o5ZL04j2rUOTSwijMcDalpg9LRX2ptRFcZbnkXdanxVtZLrs53XZKLXSz2WYYyzMwUz6AMs78X+Im0RN0QVFO6zpNOlEO6i+3wRZMTSixOQ0icjHdIIJhgKVDEzIAptKc6FvnKA7gNIvQ1FCq08iFXahcqW0/owQ7zDnBrAB+hXKD20i/++MBn4pizdGuy0Yeqag1SOiL2j7zXOhgDiJtOhyGkoO9to3D1iVkestHMlq1owLwK8x8oPo4jA65gpMbL8r3BrpPB8IbrOkjr1qRGkR2GW2cQL1BrFoi1vY3O6Ui++NbKvCiz5/Lig1AuxCnZy++c9lLXT719+tqVSdzcnjdQ690Yaw9/nw5e/ztLy0tPL30UbO/A9Q4p3AbcTVh/sPs1BxkFaeHP5F/wIaiKDo/xFJgYY7GJxMYzXhYSqGpanJhCZ1C9Ej8EP+XJz/eYHG3Dj5hou+fhFx5jCWteeIwHCWznuxobPtTXUECdrmdrPhS6ODlDeA7YXXvl//tPO3D8vR7PyLPiR5fa8E2vPtiuAyNrIkrP8073vv5wTLxuwETiWSiEjQ7k0fopVQX/7Mtfq8WkeHWtcTgkFU8FFmZlY3A7yLs1lvlSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/TNrR2a/RnXDp23LstaD3SuIOqdKYjW7RVUBPUeUQStx7HVuXrVv1pZ0In805AFBZfqdhM3qlF4p0BpUJJ7JIVib4o3GzVz/OWRGGzwhlkXeqC2qw1ct+PwiOCHKf//meCn69BWG+EVv3Abzpzsp4V3QZqQH8qGWdaNI96KM4uCnoXLv/CKrHW30vDJP1WEm5E+En+sqifi7b+Nfgf7zNKv1Bt5LqY8WCqMnNrJmTsuqwL72vtnThdh8kS4h7g24Hzzoauwx9hNd3/nzqKbSbqJy7zZiztgHxtL1gZWQ1oPUJdijmZdAGdn0xPX861XvC6g0/sLFv18zOiw+7mg38Z5mPYzOZThUBzlcfb+OySVEeQCFiHPOO7A/mKyeRIPWUPu5d0GG0Ul1gCQGeNog9Iw7i/bdh6tXQvDU7/JqOOkMKfPBl9s5oFKJwSSzdGjI0oh58BTRBeTWhwIM+0I8o1IltEHqii3W/ZeEE61eRUCDlGryoC3GkqVxdYs2zIwmrA/N/pA2qOyo7s6Ldi6QCkK5LSLZH3aUF21ckc0MjHMtDsDNi1C0oY34+cm6kDh2qtsQqlfMj+HWhdeTuAHh3L/pq3aunrBTSX91rJ4trSxTdoktjQ+hlymqaqvr2Ti8/vZFxeTpjejw/GdOFixve6h2g7UUFURZCttqPR9ZAG47WDcMfMR/QWfoHbCjXBaWRI2LjU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1/0xpaj54/Q/pJ9gvLv0wnDGs6D6PqmbN0Jl7jqM5jXGKKmTzbMWr5TVnBzfnucUiiZm6fgj8fx/OE6QQ83nPIs1ArGqtTPaIYKY7SGeCBXO1TIicH/XcGgEUzDzMn8v1WPXCo5i3dXA9f/9Tg5UM7I2tCXAjkJVhIU4ttvEw4BpVT82cYgCmDxLrlRbPAlZVyXFaxE9kRqVB5fuIeJJQ/gs4cAFkvCH+pl+LYaL3QoFLqNgbIx2/I8xaUy/Yy3hsCm0giP+w7sYN/3PUMD3kQTgxTJHaBu18skUTX4o+It0Y8Q/i3ZkOlFYftyd9RFTn6wfhtGt2zLFAPnAn0vUTUbdfWa0KdU3db1zpmVXVPXkmOZnoLAnT5woncxldifQ0lFWM9EoEfLJw04sepE7kUpT+8qXG5aXG5Z9ZjcuVlX9JGpd0+197jcv8T6JxSWZvdoFLs7w/ffOJW5qt/da/1sKWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qW/1J0LZcOHn4Wnva7lz6ztJTBsULIK7K6booTTyx4iBeP49HnpFuLb8taEgRLJ3SwW2fIWIEDfOe76mIUKR0XcHmiKi/+Ay4PHZ07kY941se+rsEj/NO2G/kcoa44c9GhKlSbKsEla3ExCghpIbmKRBIyhg5kwQGjhl6bDtt6K06jcNPKjonXYt0LU5boQPTuRtPxRp6vrx3PygjyftohpIdI2pixrlijbIWinTcYSyFNyQgfBI123JyJVn/7ykq43BjYMgxE2hJ63+5rBR7umcZ+VQa7SreEndimaB5CGk8RIEEp1EhJMSIxkVRxP2eibXOjI18aZnC66gW2p/Ssl/nD0CSlOirbYTnelIj18dlxlfgslRpn4/X4yeEFq5MQ4irjSb69UTaj66vmRhmtxGErhgN87F8pey8UdhokG0pPWknjqeLqUbM3C5s5CwIdBZbYfLuSCMkKCA718YhbZcA+RMlN1xSy80C1OycHM93IbHQy3Gk34Sx95PUV76v49y69srRU/bFsqi3vnE4Ff7V3gUd1RqNKH6dRleIPvzB/itXwGWym2m6jUOyP505lB79Yc6bsbvxEtOBM/VFwkTOl/+Mvm0Ae40hTt18camz0z9lSX/uZBVnq4W8+zpa657Dvr3/44WfpFbCxX4JvjrAj4YFhsQM8v/ICAIQ6TPdFlJ538Yv58Rc1eG/kwOQ3vfPxct/reYtaaoH9Oycdl2elRp3WCKeG4pIKerz3iMSJdxFi6EIJJ79lepF19G+vHhaDjUW8ZG3M21CNw8RcVD44m6YHiTGEUGdu1KcxPVzfiKItW/jhmjUdGa+lYG0JT7XPh092prfK/mDj6jImt9qZm9cjHhTVcQzWJlYp3rWmszaaEN5jwxVardFef/t4NdltVY04FVFHmJ0AMS0qvd/c7HQkW/FNi/tTmwbtHROETHOmma+SHG1NgZf2oX72hRFaQj6kQm3B1ox7fzHREdhUJ+lEc6MbbJwZXcwOm5WQCVQuF20OkRDF7VRG4GmLnTWRhjq8gWYXr0RpZ0VPemh1L+ZmFiRrBq2ueqp8Yk9t79GqJBFYnZcpGx8WzupCgiRPMDoN9QhJlKgYWF0U9O/bBlpda5LcGG93kPPehRfyv4rx0gM3uzsTlZqbH5wVvNmjMxWp8/HHBWC00+yo7zkkroL+enZrtC27VjVkJ7O9WA/MqyfpO/futVffFWLO8ySUJzaKpU4NT2R+tHInSG6m/krf6lyogU6TZTvZrA7S3BOkfas3413JKh5CFob01EgSSNuD1FJiH/COwDAvJ5ImVHkQpSmSZzAyMuqEVsly4oc1rvbXvG9nv7r08tJXLC2dH9Xav9ysJ0ZOOs6lzagWUeBcRpbOAhC6PRf7cbjz2kYiT9Tkz4PMdQaPnO2IYi4egcn4XZI7lxIhcZXyIML+Num3bapaq1Jd3yU5x6mKEj7yrd1UDCEAFFVhl6HSyRuvtot/R+uR0vlYXd9HvQ3hqZTEfdlJyli0yOTfWw2PA/+lQr5NxQfp4bcsq6kNK1sFUP0KRvROciPaembv6N1pF32SCAJqrqVdksigP9HyiUkoDZ49JHIKLxDsy7Ijm3t+X22GsqAyqkgFZhrYWR33/42ln6Fvpc8s/S3sIJe5U+VwjYiz1s10+wI+xaUCh0d1G/WEoDjoPjryveOb8/KmFgM70xFFpz2XYED8zgE8mXRO7DzJnAuizSH/dT+378Q5XaYLmWwFT7p3jLkmnIp18C15dOgfBNHuYDeyGzpoyaQLuUxfNEzlF2GjAbmZKD1VQmTe7R4Ly9KMBOtBsBtHB5aGlLdlOGbE9xiEhhYEyiBRY8VKXjbbQrjggdBLFkfpnSiNimOjAsj2IbOQhgpqQwbFv2LKMqV6fP32KoGqwTtZbrIo4C0oqW0ces8ycGN5wyNW5h5qWQpHZfa04anIRO63s+Vrb53lhrUgEw4LklhL2HqQChRNQEkZhjh7NACRshQxdqRRaU7dnN9LGkwLlFRyuFN4dihEhNlIgiu64dFAQF098qeyLZshD5VF0UkPkdlBFCoehmqUI01GRlEYwzn4wOt/wP4J+2VPfj7NDPKoOlxdjbph/Jk4i0MAo3XldWBZiLOMZqOLBP95bw1+fflsEOuYdkWOT3GRDThic410FCrAbtmcEHh0fDA7U0OaIhrApYII2tryLkSvC1J59IJU3tzlvbFgxm99rnhcMdmenRyPnz8aUd/i3LRqDaLpFpwM0RRHcbtFRlHDATDQWVGtkv6yaZbx+nEUHUQ5wbaxV5P4PALxkahlbb3vqcJ2CN5wN+NJzeNzRDtIzR3RsAA/UTz8z1V0HI5kerT94f1UdGyIZMNVKRgjSKNiApHi2KUXWNx6WkEcIFpZFLoYUL/vVPR0M14WkOXtW5TRU/9Wr3hvwZNQn6nn6axWz9OKSUJ/7HFFuZs6NCzNN083eLUHJ6q6/86BcKMBCJRxUPlepy+Hfhq3J77uNaAssyUzTWQCQlVc7Tb+fYrswFnIu0I4qTEPcnU/7PHo6ZRVVhpZhiOuugmSGCvMeD2HQoPqDmHG7jfaUPpA5AWLm8pg29dr/pBTk8VywJ5drZ46vpGLFRtcFbJlgqnsVJYzy/wqaLMwQR4BgcQ1UFJLqCnPhPSm7XMhPaexfIGz4a2+GVgbs/KRaZ94tMBC9P6JNy/45liKPim78s1B9vhJ5vkk4MyIREDJePdp0/dyyFOo8DMoHphMc6VNKw6u3VZhJFpQHgqoBd8EFBHwNKWA0hoSP3yyzSaJPcPhAxdxpwzTZlhB1SVMBH6jxZRPC4+Hvmo2HCuZqHkv9qPYi/XWXH9s3npaFDcoG7xFR1OEfyEB8NyW4DxWRzhLcpDgx7oP1cG/4pZs9QW7ysV+uXc0T7AvADJRYU9e+BF92H83+CcpEpmkujSsK+IXipjRtm7aMsjDRA5uS0ifd6iSpuQykvn4HpcH5Wo/6t8VktotZqTfFIFkEWttyD9TnV72BbvWJLRd2Zxk09yX/XezSvEMx6MkDGxXNybpJA9eOnw3zeC4VSxER4BDiRDTG0TnESZZzuDc3WAtrgomh/Bq4r0YO2BaJz5Pr3H4QVMMBY1JIHEI8mejZ8y/UP/blPgyhnGpD9/N2gLeuhIlb4fgfskwyrEuKl7/J/R72E8t/ToycL1H1IUltgWYrFGbj0CT3lB+7Bx+MYcC7895+mdYYDob4Sx1Xhu4zsXBharyxLswBK5zrvOGQnU8rxHII+Dg+vIupCIKpU/OwCJU3vTmmMARPKlrfSwcxSiqMc75fE5bOpE++l2SYS3Gp8ze6JJoTSessFh4QgYOfz3h9olO1evcernsZOAu9UyLHT9PaUDJvuF5A27sRMq+LLmqoMR9X09DcrGuVVvcXbcFTcImna6Y9cYkUaFdht9tQlryBCQaPiTiKMlobs/EKA7XQ4FUCiY7/UMuHJGXmjsrsh+Fm0HRerEb+bfS8pmMZZHcTlWUpE/k/pV4eSZWdfi0x9t8pT9mJfnoV0Q3rx9+MGqwbmB/AhNFKEE9eWSg/BS6ykyEUc48J2lDQ6Gh+3JMCrJ2N3lrY+VEduVt8mPrUQtOUjDS1Y71eAGfSOZnmR3ZVsQiGgxsY9NAPhXjO5hT2YQMHDMgUdzEhQ5CyuC5Pc8QyjeIF6EsBr0WDISvAtIoWGGgoBcCf4+0SNUSE8ttaBKZk9m9CBwKFJ+EQZAEx5gcchvpnPn+7G5M4e9LSlEEDQzDKKIFwlM6YIOMFpRVVCqrsCQykd/J2PqGbGfxNriMZtT6S1QooSFrtD2ehijpxix4OEyoPd9z+yAivxuLsCv7Ni8EAVt5md8m/1gsLw2XTrFjwmTInYNf1AoI98E073P+1rtPItQ7J6UsdGZiG3DRjXgMt6EN7mDv2OfeXySZyfTne8SRz/l30dIkuB/B7XQhXHEJ7j57NmCZ9Yk9idZy0vNT9gUeUO8E+beX1viQfefS9tIrSz+CNTyYk7xo+qPQm54r97gWa1WmcoFHHIf0PAweO9TTI9mqzMFLYJ8k5CO33wc3VR1joXWOeoCIelTz2nIsGqH0w/wYR6jY5GRg6nwYesyqQg/Nhry9A47fztLwgzfsyWA7S166Xfq3g+efpd5H/uZvfuVHv/Ev/2cP6Jd/Ea1infzg/vv/6+95r0fedSJ2dfG1uRl9ePXthb+sg6nJrgeiPL75k8K3WBMTSQ3zyeQ/3fjOv0eVooH/l3Z4n7P1bTb81NBvtEIaifshz9gA/OX1vbd8xNP0k1+5uR+bVqf1AfKJ8im/uTlYydbCQ/WMTzuMDghZBncslWr0GuF29uG/+iWf/O+/+z3k+ImH//SvfvnfvQq3mbKb3ls//dMffNvfPhZj0xgm4NXh16CqajG2BbH7+IffhSsrAtFEXJfDW9zz6C/95bUY5cYP1z+OzBHCmdfyNq/A3VYqRtfVGI5Kz/uO53VLfPV3e15nMm15VOI9Z0tPeDfYL7PNpR/0nvV+3Ps1d9dr/HHdThlfROuP3A4G8I+yVsVzewwKxI+cd9NdxeBg9k4BxRXVT3jzEvuwVknF9v3B0eH+/AfTbe9MQXM0R2fDwTiqlyks0PnIkERMTQXZDmJ4xvNVKAcuNNTQIXFeu5Ru3l6vQBnjIw/OGIyHb1xLLaqoxRvexkZ1BZmUYwrTN1h2cqHEcmCavpcvvufnCdl05GILPu24lqet/zOqATrTw4uQH/fH8cAQ37PntudUc0oofhRzqph7oeXEvdKDOf730BWKs7EThZGOuYbyyyXOQdgztQKBWxVmBWpnY6taSr5iCHf4nVpUiNSbq5xUHtbKnGgoMKjVQu0EQc1MRmVg6jYvUNcvQlyI4p1MmRjlkBnDZWGQjbAGxCfWjfWmJhNiid+A4FEd+ZBmPPw01VC0H5iYhEpDAU922dtZylHCkNVeKtQ+PAaB35XIEX5CCyRLcyYcsIVg6e2hhIQmc8p0LCAgw3WkhYwGavRkLaNtTnxsLygkWWfYCPAc8x6bE/AYAxmt54I7SVFxiVKaM+n9gX9EoOY3XEcqUSITx08GV6Jpci95/2a1HpxGh+v6anslaGyDMy0xlEAcwiYfOI7sqabBwLD6wmz2ntN0Fqnt/C1psGfGRBiTCBnlPC90Lwr/6BjbhxBWkCSCyHsmwgjqQY8KSK9Nwbd9A1UQPCahTNHc6ctAoskSSSvKnDov3AOoi3wmRjxCNTeo0mQ7ZCH3O6gxlrMpbopDBR0Bla0ooeAcrivqQ93kxUMoyZgVMx9ZpNHEFzTE9QCQPkbLcEqYSBBptBvWiH08EHizkY1KH85QJJQ3Uy9oxPUuPyq6gluqfLiDyjEFmdIMAf/wEiRJA3jlvOQk5jymsi0TXzQFrjo7skmkeMVDhW1KgQNpXM4BN01BWOvwjuJwZgria+KzgglfG8im4HPx4XzxhohZTCIs4dn+9ItoQ9CM+m6CQuoD74Sx4WtrS+opFmxznjMO6QWH64dQ9jqZK4+R+eOdALaH03TZCRkN/gv4XA0VCVY2XMOHnThp7q1BO6UppAjOCjzmcBrfuvSUvM6+1ztwfDk3Zcxd6XZR8246wyjoRmuPPcK7UGSKWufuDI+/2BOw0LQrHUmlqAkqonCK1xcQkOdT8f1zeujxkRTHO2dSWEgNf+wq567QJSmLS6DoaTFfkHN2CXo+eF8wUetLSHG+1+PQlcmVU9K6incWUadEydW99c6dsXj5ba44eaEcjdCusVWNrJD6Ad3TMfmPevBzqFjpV/vG9PeK27fHfvFUEcMXrx3zGGusnUpWOi3gNge+LlDFH+7zvMzK3tvFjWuncjygo6mOM1tKyB3Ls51ryoRyunNVvs8eW/Ro3U0TRoimpklG8HJ5O79fBI3Tk/cfDovGDliYnmDv1eqmQWUZuFLoD2n5agcvdEu7C4WjdMVVcxrxAVdCk8neWC8vy9fstlvZ6PHmzhyer+DEl6jgLry7PIh5cOyzTpzxdqnStZjubzCyT3lHKN+saBSUF0Es7JWA9oKMtSuVrsfee4W3R6Dw9ZYpp3nyoY8PodDDKn1nttWnBqp0vk49sJJhmSSQHStMFaQqHqRyxzb354X6icMAbLKkGxYBVYHKRAWfo1QRuE2tOXLvJxFcyRRoKEXKbUGgFJDKw0saLa5wnu5Mt3olY+vMC4neiUzDEreeT6j8QWq2THvHz2Tg6SfgaoRvcnc1VkTL7IyqARbOsCkQariYCtG406rmaDR3CG7ne5pYrFOXIYkZs19a+k0vAYtzZ3Q8R4bM5VPdpkfU73BS2gUKBOf1uS3egM1da7kfzGWBca3k7GDfiTyNXRq6QNWei7TBP6Op65vO15Jc2KbjatVz66IXeK/TR2bj17xaF37/aL9HznahoeG46sEJO9z0zjYk1rzbcyHleWm74HQbz/cL5jfB9+JC2XqmDLHU0cBqXrETchPdlPjRdCecdv13GGNQhBg1i3yn44RTaMVZqqX2mhjPSVZ2DWsTMQwLnvKkFc62QtZULx7xdgGZgjTblg0TqKBYwvCTHwSV4ClVWxQ3wFBdMZkw/8rNxv0qakE8GNPklIvQJrKswp1wPdhR4yTFHW27Ojo1UGE+26Hy4U/h64ecj3ca1kxtnC17VZwakhFUPPPgmPZXr5tJF94NZgLsP2Ek0VBZktzqjqheSYa3Wcnjm2G44UdvbRAIpDmBrKL5WoP3JcaCB/cgdmtTyovk7Wt6Q8GrMkNjRyrsbSpIaLtCSS+SpsVVlLKVzmRge/72WritWsEB6iN43AeDsboAE4PUIzCdzORybDf8a3E79Num9TZR+qV0OZchrDsaf/Qjd2etSlkSFa77hJvkFsRv4nh5OiXx77Xbh6FeKWKFnD7pqdCWrYS3g0FHruu1zG9PUV7Di5P0NM1dT/Su9z/RhIZLL2As4o/N8V08wix9y3u07enG+LVPr3W1946O927yupdoZB53/BETOXbSklRWFhKOYGeWmCeHB1kfG4l2C7IN2ZGBhBsYrjWv8eaGOLQQkXglYjUQ3Bjh09CLVnNLfjsaNqbxmoCIzts84E5zg+DuJRIyFeZewKqnxIDLgZopcCOa8hSqKI8rcEZIY/dwiIobX5pYz3zN0hbUsN+3tLX0rqW/vvTjb1TFikcoS+nyMRacf6IyFk3dhXPhxv+lRBkWrHcgnKIaxMEMl9POjopt73jsursu/iKrWY5qIilK4TpgsIPKfL6atn38IMq/tVVXtOSnvNF3TV/dPf6T1bR/68vfbfR34SgQWcpwa1geea2QH69sxprjztlugJ0BReSyeO3Gh+7cCtvr9MPtNvkrgq91/m/yLcKrRTvv3fy8hS0mS9msU9e1/4GX/jXqVVn1Jypt/3ACZUMSQuBnex2xG+Xrw8hqP4yoLLO9nzz6h0etSJAC0fCqABMQkCq/f/SBq75g+mGLBlBJvJimVy0fdvupdw/O/yt8Rn5aZEtf4vZz5k7GM3dgDQePdTtrUSRzJnARjbt/2HJwSvXTxQ6qeeG64J7t478Wmh3n6zzgq5uM/Jijmnoo7dTEPdZPQQzXbGJxRUHJIR8UjQxePRVxymlsQuMUKLVxzFgIs/lTmeyISc7WmGorCPaWq5aGYjIVImKZgQIBASEo/ttsgX9lI6rq8otiM6123k55A9wLVAh+fCXlJ0q5TBglN93KbUx0CQrmuAV6goVRQJxG0sfIXyQ/z35uaXXp5bndkAt2M5duno9BDqe1SJKc6w2Rxc5XcrbzdZ6wosmQnweDLdJusy8KOH+aHfZFL660HOQtzUdiNqM/+9Ubb3n6iz66MvB8rkft8Ok/5w0rt4JtXfJ4HPUUUr+4KKkGQ6I/ZsdyuFuNRhoxNKHn5a4ukZERlT548eCTP0RIt/9NL608XXoW8kLpffSp/v0c3hAUKOCjsO9oCGQSENVuwln5xtf/O/rt7B8v/SPELJyLBS94fOORG8AIt77oYuV/NildYBnynnIAgAsfwGLnnutQQwISskeEXrHp/LkIvXongcugZwdnjF+nWHlR1NqlFfWrcU3rxb6Rkn6zuX/r+nIjoCkDE7H3mhsefPZxpxiFwkgETXmQg5HYZmn0oGUkFs5PGDbqMxlDKhpgKwCZ10oL00zGGj62AkzRT/V4DCYXspx27x/cezpAAQN3Lk3o99NtTQe+KfRWKJP19jV/sFx0umVWmkqEjn1G4d0H1G51vA6kC4l2y4zh1UCZ6/uqGQSTpLdV2M3GuBsyEu6YvlrVy3Ert1HYgSeQdP/tndZG4/k101Sj8fJTk1CjIHsSCT8yqapEh26vk1yuFIM8Hk/CUlc871u+syGDTWHStR3a4IXEvSI+knMcBx1KZMgID2adtYFqmleP14vmO+SBVK0sz4JCQh00SlYU6eLGDa6kD58kkYnKkjzpBOu6CHWpB/GO3cihwODZaNhur6xnupUHdlk8y3q6IVQhkHUw9oOWTXJOQ/gUjSMpWTaQvbDRjIrGXmoPtpc8b8Az8hbxQ0utue4KDs/xXgs8RlAwemR1+xsPR14ngI+dGK6lDdX+9h2qM/7Zl75Oi3HxymbzepuXOjFW06wY3gqKlssLbj78R+x32K96Gs+6a92FBDVI8YSzCxYfeWJ8YayDLNwu6quWj69CwvVG9RGv1/AdzL88PpdqP1M+uO7dJPUejflGsRF+Nxf8mGutUikudtsgRB6V53Jp5Az1gNaAqt1wxfF0sfz1gqTDwVzTAV6rM9qFpkPJPrvoD9CIxyX2PcJY5yOGOz81n7LbvJFvXIn2ria3guwJIxNNCNsOUpUPRcbksOTCLcRgjiOGaTOCDxBi4lbvoU8OKloWCQTc1dtxexgedCLqVilQJ3eMm5OI2+QESRIK8kAuawd84uudFEIHi2XMkhdiUxjIM6lmJmmTtYiiNIPSnrIYZpwIk4frYZyggzZ//pNjGiBzwG2Jok5X1a06+0V/3waHYfF8Y53PxvFgzRfNKIOj06ZWGekLArEFAWIUqkkuZ5wetr5bUUixT+5DoDFpg4cBjY+jHk/T6//z9VVf9nXcnwRXJzc62dPJF0FZqNdEWzbllQ/4kMnGJSstosny0N+J95tm0wxfGw6Jf+Sv9IM1KNMzmb8thTSyEL18nLMppz3iZa5Zg90V7PJZ4lnK4z690pOtO4HejYr7eXxg8ucKHxOS2Q+sWBvqoK8Zaj3k1nqBm5gZJbsNG9yI/FWefyrTTb1R76v5OP1n7BeWfru2qRrCXPewoRjszIspxx8o5iIcdXvG6T5exLMgPmy+4OtMSh5VZw7rkvHAyWnLcbF4fgdjq2vPxSXgBXyBS5DzS9SaJRcllmqp+sdWeXvHCzUxhL3vu2049HcgX2KFRWS5621J5hyw63RpJ7GCy7UQG4gKfbbc3eSjoCohGGCblQnpKJ1I28bGK/E4p7yTrYnF8zn5D6Sx1DtCXB8QdT0WT2pxW976Ph8GSRRLSetnpUrH98PqgQ6asokCmRLRYWAXcWWvtux6HKxHejMcXQn+Rpg8lySxHeu4O7Ip+16c0BuryheyyiQPsgEEIbHuB5vqhJs418WL0Tg362bFO7yvCpM1Vl60szzWwXILik0epEFvVX/prp7J+K8psz2M/U3LbgrR0zvt5egZZV9TZeKrVvV81sTnp6GhIqcoM7K4RFlt+k+adbXMj/ESUcddIrTBoMuQThr6YXdFf9muXuXqCgtaKrgu1JrsHtpjP96M2HWFnceTyn9HLDdwJElywgXK1zkmHZXS+eiXyWvey/R0afj5JorefS+WUfD5Zof7Rz4nP0Ea6o0ng7n2ib0ZreO1PPnwQ+TO0k8sdZeWeFpLH3g1dBJn41VZg2e9KTlhm41Jm7Ugl4WXFG2u7iTTrc3TceNOBbXYZ72DZ1Y2By/efe8s3B9GsWkHQW9rI4C89m7Qypfe9DnmX1m6JlfZt3n7zv+ML5LikJhUa6EdYaNn6mZlh2/441rv6hDJ4A56NJeoKA/3IOruOQEXeqGed58cRxmk87KXzVVz3QKA+cTpIlrwguRFTVeNvBrV2ncr1t01SP2npvItnvXiRfjZFeCfx5//HJgoxG+BaUIQfF+ZPlfIF3T18ot8dNrdOFgTOKTH9Xw4hhKkVRRvydQLqnr5JXhAe2NvXWL7x0HKqEBVT8NK3J+pjKZRqHdbqKVV2sR/jS+P1aCncp0cMhSF8dAvtoJGXJr+wOh+z79VBtJ231ewhp84sA2CRdGbFbbB5VQ1sMucTI/ff3ra9vOni2F0ei/ZXebwwuF0oLS5XB9CimfS4H1sqzNYVr5WOp9BeKdKUg+MvB+3K38wsLrftbfLUNje+3I2QGWkGplq2vMrlTuNeHbltTunvKHKB3nch0t5P+kl8E7HQvQFPSZs55Amm5nJWyyNm8JeiZivLKLQ44nhYijIoXtMuplr95g296+ELA4EHMuTg1x5kVxtW5r6LM0YoisJ/IaJbIl7anyNyvKRxpZBaVIDxzgOwyrg6w7teh0X2RjIng98tWXHz1EI1IpoRdnhgcAV1auMFN21yWZK+SG3ovexL85S3BQWpmAMhsYFcughUBx5QdxOMWBAlaE9EmvcjgSfr091HEZwwVW8oLyOGI60AZfbtqPnmO8xkTNxuKdQV2CV0rK7OtmiMYGr0aD3lV8MfuYHXv/79C77maVPL/3A0tJxzRlzhuEYUQdHC10ZMS/MFrue61KOztu8RW1ae3PBzPM6ruMtdoTWmnJoy5Enzoq4Glr7ufQP8GD4HP+hO9WS+6T9zqfvx7SDwEipVb+XnahyZf/+vVXWz4Tqp1ikkUzqxnP3nslxexTHzdBxPDwUZSShJoIPhxc0oc2bO9dPApTy8tqhts102XRDnvDOkN2/2xjPWKOofL+IMKL/l440cnPnjDQSjMRK2lLNnxDdYBoMIT7rjK0fFsfb+jANO1lCqzzYV5iudSbE22DdwkYrw0JfDXe2wmi03z6c6KSQxh+stTvjsIc9TOwtjK9Nt+C3ntleTvL7ga0kX/bZfgNue9zRTQWPMZwFEYtyAvc7jHABjtL0u5FoQnRXbYaqJppAEkyCcMPhVB68/ln2G+JHl35+6ffcfggsn8VsDgc4VyBywkUj+MjPOUxOVg3N1cEC5lqArqY4fCydIo+2RC/iAtzJcfjQvQuIzfNl4d4FmZ+LvQJSPaLcDD/wzur6i8LNbsfLYpHovMnkJvnHR641uzhest4F0/PYP+RZaJQef6q9qroNGoInxKivZLpx4v/AQbArWGos02DRROR3KipxSXDaoPKemawuWxnofUMDBWeNV0xxlB0OlEv4Ki4TFglcr9eWCD4RbZF09LUA5whQMejVj7AVYh5I0YqwNUdVQKUNiNhkWOO0WBiRROpY8IDQRrcFLy4jcJlVPCGehPRNSr2nk4dUTQSKmNM2JZnXdCRocJoBvAs96w7gmAqocDKxaf1Dv71xVLQfvmvv6w/HxOsGTCSQampudCCP1k+pKsY2EDjUNdHBkcyVLhqSViG+IsSFoipEdD+xLdNvi5hLTXHnN4rTUdaIAw0OD8UOEzFZkRMTXA/Z2DdFS6WnSWs9vJ3SSjQ/mGy1p2V4EA4hc/fdrkx4mlJDJehBQmGtzI0JA2GqCYvuFqZj4h3dT2lL2X2jIFTM9p6QYz0NMy+8BnWl1WFFxZTDrQm8D5cPAshzZbDGITcNSqVSZmdGa6l551P3nl7T7SyXxoke11uhLHvXy1+rxaR4da1xOCQVTwUKYpSNwe0g7y5dsJsfcXaTvqnshl5sofBFC+VNajc7Z42jiFpuTayPN06pzt6MNnPWKbvSE02bwc0uKrAYbJQt7OUFZy933lz2ci7Eh19F3vm426mMuNd1Qb3hqHz8tbgUavomtbC3MUFUN90WM4tIO6s8zZnQQ9nFrCi8q0S1bUhXmqxwkvqzT/Yo1IwzeF32hZz4xPPKqC3lOG68+YySfgVUcX43Xxd9H5FASpMSyoNopqcWiqmq301bHZ/0bDAdx8bzxSTbZnCRGbXUf6FPQ6kNatoSg8o553Y8dnZ8982VL/4p0fffpHbsffoR1YL+QrVg91579ZW5akFwploQy/x4djeI30C14DDNvTdheP3IP7dOA4u/oE4DW3rh9d9l/6NoL7WXriz9ytLrS0vI3yaH7uAyOKI4voJCfPi5f8uk8EbTubLkOZ/PKWXViomLJhuKIxZ5/bfwbydM8LhdnyMkneIyisA6FmC9Wn6hIPsGlNnzaRZewxvNZ8b5/Bfn/75GbtLD8xU+Hnmpn9NGTmySsFZUFXZ0VzlCyNHD+4//5J6q2SRH9H9nEdtvf7zbNM0OSUgYo6WW/XAvbLxWTb+UNkNuYsmEqjrVIEhuR8mTyfrTnPrKAwNVOdPM7ZoWaKBmW2Qmun7akNujZ1rRzUhUQrZldoNSLdKFKbaeAwuUATIGWMBSQq9RqZtgemq9G//RC5HvLMwPLUuZbAlecDVU3qix1u3F1xnbJV6D8Ak/zWkYUBG96NNMB+LWOAscdyX/3L+vWS/57/+3TEWrt2XFixWUVbSca4+L6JlI9WMZpioyQUuoXtbgaEE0k9OZmqrwWiiWNVrQ6jfEr5SDn261P5GDC0niCEJ0Mw4apsvmhvKJd4N9+OOk139BjdWyjl9OJ+kQDYP4uS3pZPKpe8+sytUyFY5fDgE/+KoofibyK1W9o+ZZ1DHo0y4GTbzn3lRRKMtFEYpHiESLLeDefFfb3rzNjzrPiN/Mz1U/9h3+DN9OLc76Zi3bNhiyUX2W0LxgEWeh5OOK50Eiea+SvMG6Hc/71retbx7dfE8zV4xXqd55ARJJhBn2GTGVzhjlNRIUDnkQvQkj0qaspEkSnYiCNdxaL4s7U+ABRFsFb2Z6dfry15G8fO/15q6viObkqa18BxX6uGS4/QIn6iRizF9186zrr/+O+G/YP/C+2fubtYoxYonnAaTGlCFPacsDwy3EVK57bjn04XQXrWB2XkjN6iXNT3jMZWmjyJstJBRrhIZXP7MTL97yFvMX71yPpFYMPjP9w7FbjngM8QkVVcr9oz7uQNyv7bI6Lufq53sIanN+YSGqIsXCNMkiUNY7dtZIKCLPYTeche8583YXPnEaLDWg0ZtLETvhlTXU6XONcqfugug55HHt15uuFgtwcwczGddLIFHFcg6mKkVRz+Lx6/15WnrBvc1XrufeQb1J+/hw27sgB1RjrPbdToOp+DnpN9K1/VAum+z5IjL03/T0spLgHlYtCfVUC6GQ1ylM3+zIHAqzzKOx6KBsFmUP/zfUQ0D0DlErkfADXE3nGbAIybJYijZvfGfDxowlHU4/8efTqsvzfas6YHbRMosDRvuUCq84zVUTF8aQqWcgDEpPkrQKGz2TmqnSHRWrwdd1o6vGX5tAYJfhSRSFLBTK4Ch9sMETy/gO+IYCnEXGghXeU7qhql0vZBj8FOZOCGgxjX54N69m6yGEdeKlXhOF3nH3IyFZNtP+cdT/630hEaUBni1cj3T8llxP+yGPWDLb9rmjHkMeBinurK8Ga6IyW1wPhL9r17jv9GCFUvBpjqv3NFRbVaPkMPSblgdsFVywSoX6w5/BTQq4aoGQWHafYpnwe9pvRB1uZuZLR993HTzg2/N9juMQZEA4qo6Ep5Zu6bdj5CDuzsaIK0i3l+Xysl0N2nzORSL6aijinOv2RJsjJVYVc7g137DEWAs+91u/Ly6eYNHTvhr7qzra4nEk+SRAWb/itUKtKiJOx6YX8cAzxEpkKnm1DBLjqN8+xwl11UzZVd0+DfOrPAQ/1Eyl8Z1uMgLIGHFTSC40z765+OKWyXiMcy0IQrjTXBiv4QmuSjsTXj6Iw9Bx1+DDAU8NR4nVcCT3nro9FReBxyoUbfToaKVEqBBCOKjHWk902cibqVm4sraW5xLnaB636lDJmYI0+0ZFVHwaxpvey4Ho316+spqZ54TUrPEKawu7qU03n8ngKMQ9LzqqdbtOHm7DPf/7Xlbrdok6w0CL6pFarq8mHlxc0nBOU6pnYnM/dEEkiVwQSSLXvHqv3XwHwhuqJck31ooab9FHFXPEYkns2Si5RMWN+ulwAn7OPXISY3u1jJjzcG6oV7/HqZNKP0eFo1RZSX4XPHx+9+D+E7jJfmdlMwzhRPnHrD+Ittu66fHcj7joyGBXZiI7ZoEZtCkud2KKeVr5xHgDGvScVJJt70pxyI58VEqiyvKY+Id6MiQzU763HKszySRZ1JJJiEQg8nM1o+yx2uzGuOWjaPmb6YsHXWV9T4GhM6ilNKEi4cgA5l2eNkkkAh3IKI2viY5OFG8f38y7rLQB1XBgKttclWqqo1tR25fwJMWQgU8b8eDapO9v2OiG1TOh19pElQ//F9n0C3O3iFeG0yoOgraJo+ly40Pf5HuSh4iJIBJdTq6CEc9Y8jyP8utf46/606triVqx/nXTMsGKbJeWM59HjZFgbZIphjs9uZOLpxBVtTRnKkr90bmKEn9cPGpQ0UKjTYKnCPXeyTAuD2RTdW4HO351Yq/G68N8vK2Doew0CRQ5kNgxSBCIBtuKeU58GaqyW7b7yEdBCTYmOBRj0j+Vs6qNAokh5G4pV4Y5aon09/9BjVt5x+v/lP6K+FHvmvf2f544j+Fy3imtiXR1eMcRhNsKdTw7nJ6juw4XQXouenseoHGHwJ9ydK7eMDpXbxCeQ+Q1/wsHZ/HGQ0v6S4+E49DQryZ6AmUqlWsYjoc6aTW06dl0n3qRpjFEQG1wf7pDNBKuzf/b3pcHWXad9fU9+zn33H15+979Xu893f369YxmH0kz2jUaS/ImC8uWLWwcyrHBBmyHBNsscYJxqKIqoRIgEP4hpAoSGypFqgAHCAmuGEjihBBSlSJUCIQYYogCaCbnO/e91697esYjMxos9ZRmNN33vnfX8+3f9/uNmSaN8RhoyjJKSix4IHUXOJhR2f4QmNH3GBtqYtYZG9oqbOgmwwKmlY0NXRrb0GNgQ+kt2FCga0vjhakNVYUN5Ww5nBrR0BjRdTCiFsJjYkJztQEm1N063ISWrQktFyaUWxPqvPRNNy5zHmo6GdMKWlCpSFUKbaCMqMt6fl4t+e9YYkuVt2cr0QfWIONSl/VP1t0GTCEqasnC6IzlO2D3kuMTuyd95yuweyi5zu4VRAUTw9dp4QV/xuwh8rLN3hL9rptWQSdy/JNGjl93V45fphzPFlHJpIh6V45vUY6v/tJM3dXjfuTurEPZ9a4MH5ThT85WZZteqmmat8/7WWUqv5eN/H78rvy+TPm9TUXduxJ/qxL/y7evDnxXSxzQEuTv38YyMR7rlXmjV55xPnJXs7xcz+DWMc/uao9b9fs/f3NwuJFmXx4c7q7aOOhcbN4OtDx07U+uvej8BPuFuXfNfZut5fX3OixuzE/S36MnGQ8F74yVwZilJJ3SlOQHaUqauIijh4UNJxbY0gi784O80QiO12/OYcLpmMLEQQIIBFhWfrby5XlMcLfuX33nzrduj/1WFDDjt25tnpVpKAFqgxQ0J2ozOBNOaE429SzNiXiek6BgOckHq0brchZaRoEJ2Ql7Yz5hO7lykOzES0VOf/fJbxm7g7st2nIzl5ZKLeMO1iGe2zDv4XfYj5v38LE79R6SQ+dxX/H3EG98bBI+TOZ9R7Zv8869iV+dccwng8XTfkl07X9cexGts8vmXXz6Tr2LwxoVZ/jGbt2pfcVf3+IBX1AiDkNNU2fwXsnyDUXqY2cQqcH7m4BRv+cMYhbHVXAGS3fsjZP/PuNkSXPT5n0D2soBL4s0VOFlCWW8LOzPellCW3ziohkPX/t2s0ZabN6skU/M/eM7pjlfDibrK65P//VtAH29czL/zbfHXv7gtRfJn5FfnPt558zcXDLojxtThrZDBe1An2EJXqjl4wa+nQnGSsEUsD3hy53pRikaUnDDyff1lkwoygvszRluRHNCcOT52KHvW7Qvi89h2Q0L6IJR/yzgGczgIk3L7CM6exYHEFLTGSaS4iotC8PuPu4rPOkXGxxg+QR/u2s5s9LJwcY4CC0HUJdg7Zvn8Q+NF6V9O63tGFe3lxIdbaasyr3Tpeeyh2pAs8pT4W27LGO62pDrDtp1aZWJpKUyGhwjXp+HZjtlDDPPuF1m1fhATFXGuE1gnizryVpLtmu+t+ov4tFZWuEkouVneLcu4wqXA1p9Xi26yeICgclAfkJAH0ghFAXcwdfsdM4W2E+Kc6Up9zgOaBfN1d7CMsCKQhFwvgHSh1F3gkDtJajSsMJSrvKllvDupxlVnTcsmQUEasNBxoULPa1QGbe/hjW5bsi8Lqr8qWXZikNpqT+Q+WzBbRPIFtNlFYaD1EVfDNOlhx9Uie+7dbZqnPvQrxJOKEB+UksAwgEmFxAYgESHOcYfptRcNpFY9rDcZn5n1eVGCLxV5nXKy/Ld7pLY9KMtqVqaxyyud9xmQsshwVUksO8Adw7igIgJ/qtwBNS8YxJSRJMEwKmeCnnEo8VNL30iJ9SpzmdGKRXAVtpEKBbaKl3b/SBrAwyWcZ+9Sle5S1FJLgn/mKuWpBBA+cIcognCXQyMv+fOiqakNS9TasGX9wQvbK+c8Dfdx8+R2LjUwPHkORVzWZRGfo2SXHlqRTxRDo4HjU2EhdEdMkwqtr41uPYn5GfYkvHG3w0MCoOuBUa3caFZuLuzkFnT9q9xQbhYvykr8XQ7n4AAjxmYimYv4FwYjnYKEGALYTMofgWFvzscS0MRnUK/15iwZKb5jM6QO47hFiwpd3/Mzj02GyN7nPF1ATBOAYmwvdWkmcU1zkvTnpMs5QW7CbBF5TM2I7dMpPi61ml732yWQaLQDOR6yDRAK4YUuVEIjHymOeRNxdu+L/yYb1JNvAovX4pBknqI1TGPI1dWyYB4w4x4KjShoTU4xnRgo1UJ0XQLs6T+fOC/qSJiC/wOa14B4ggx+xPaDI0I6O6H543YY7MsOcHUUgIYEyiiNa/8mF8PK1q0PZYQtTwfswC+C6Bg1PEsni6iY+xT6lCmYxPIIteoCuSlYYWInSB9SMOYMxOYA+oIlZG1fsbOAXCIY/kWzPU6xurhQIUZdb4/OTtYge7pkqhmftM3QX393Zn7/PIDtfWnlMKlXeJPuqexEUCG0xOdxxl/o3tfIBPOW24ULbgiciOW4jIwvy1kxA58A0Kco3qnzy4jscyzZ2PzmP15LBtYlBMlFukq0Q/4OPZNkF1Jesy/Ukmz9Gxaeio5jzpPL+cS+x2wngxFUvV1aT1+ODxTr76n+vbz5pae2XxjTGJy6lKjxhBTroqwIgCtRUSfixNS9CuCd0Rwyiu/EPbSmjKeAqsRd3PBeOei9FTGOsIYWvLsgu5qmVU5W1EmyieZKpF0fuACTJfkikhVYCgL0KNM0PBSIqUr5Hnfr8zL4J7goZXN+OE42egby+xtefHF0CjKqitCFNGQ/lbtXGce2qvLxAM9CAfzsRNg4aXEpY1d2mTU9SnvcfN4ieW6iR3HhZYlwM6DpkOzioiHYkd7c3ucReyfz33n3O9bfKBb4SyypuxVS1p0fXk6a+JbpiTysjJ/FZMSvfTzW39jXFymMZJEMCgub26edbg52q1yD2Eu8auWfQj/yrRkvLpMEh4KzQXO8/Y5N3XzPZn4Z1Ym6JGQCXx9qddHR0UmPjNJtLgaBzyI3M3NC+aE8RERh1+cQY9jDS/RNM+7Z/20NmMfLltZOHE0ZOEvXDYFwEcf9Y+K/HzxkEzX/qrnbKKLsesSXY6SkR8xyHQdDZlDv3awlomz62uZ0yybrWXuz7IxyezE3CTPNpbTnpXT40dCTpMbz7pel8q52azrURHTLxxk5O6ot54cM3Jz5Tj7ZlvHjNww27rUcmXCREfG4XS29YiYxs/feJ4Vcl+3zjtO9sknc9pHI9Kyd9M/JAt/3cYjIoNXN3CkEtVu70as4bNAxbwaVvRo0yPOJ3HkJqrTGu3btbPp0SMibe+k1SAkWpEYCgrxwx5JtMbqTLiUkroXXbdHng6XrO176NqL9DL5t3OfnvuSc7KQrFnWjn1ZfD7GYW1ifrAUddrpQk/MzLjLTOazP5G50Y1EbrytP1ux2hpXrPwx3esEbHFWIkEStzac0T4uICv6vcOqXNtT+QIBWoBiGQBE7hdUnxY0QTPnsxwH2zv7a230MRRbfcVx/VGj5cJjKypcDr2epGUmqhIYuiC/16370YEyWSTiYDNcYruZ7EiyIFiFAVErCpw0oBaeEZigjF4EQL+20AEpkXApomut6JynNyluYSam1bTK21JbTZNYkLzJsntX6jqvigdO12u4hGHA28rn/wPxRjKzNPbCiUgt3azJRiNC19XgXP50nZfJILSyh43swXcBAVflLKzyaKCMAKcBCplrPg7sVV3iergu2x7NdaZ4wsWBSiC64C9hWomY1CdP4JDFFaO1yhilFoXfsqUJuSyhjhZcV7ATSAmskZtAqaTEeYWzRq5piCq7OiTzJVf0zBNnCVBEy77UMfWoed+44ouYMuDkYs48mlT1/Izaol7pkfUFaZQWjn2GZIA7J+rLrO6WSJCJruBVY8qjoLVqeX4iUidZuuwaHeT4e4XA5ImiELg8X6myGK/6CeVJjfn3/HsoKC7WNSWygsg8pTlKM5SLxI14sO7TDTU/4kFIF4yKwL5xYs3DervaTaAomVWKoiTUGrauvUTPsU/P/amTQ6cdtzSBUKVjRVlwyh7e7Q+WC1rY8fz6YMzcOhyNgZCL4TNL1zMsoMbH0N9j5G9bVUv3kL8LsixoaptKghW68VwapO7R/vF5OzPft0wAQyheFD19xczuBNN8ewQjZ3kD6P+Q7ZazINL2pzGQdOo79mSHD8PQXZn1z5Vi3tX3uzoDq1NNTybu+fDURri7muKMnqd9Jpe5WZKkU5JBIEK0zkOb8y04Hyy5j1nu0D5FwsBCgnPv4+/tIRNKIWJLdQVRHsz+AZA4EYjieKWbU0mcti8S4l8JScQiwusqWnPdBVbVwGnDHRwAQR22RQWwLOYwuoKzLHAoXzo3b1bnTgOQTC2TBQi6ZYyj0OnliKKk4FVaf/656SiLkbVptnHjXiyyh1ra2GmHAsNdqts1xfWiIKmo25I70ABqohin2GghL9UN8kS01AFg5kczbxTwLX/QkyU5+MEB87lmfstoKaZIzTNOB5BySL/rxeJCqBdp8nDij/zsscTdDksPR8GmCMtNWeXz66suAKhCWpwBrwZ0h2YObhK6SNJ+3AqNbYqfSo3PHCzpxoo7NNaUPb4lc3X6LVo7QVCmqYaetFQ/dsZT5bqovGEh9OuLInkoHGzXLzxYEm0uV8VypePmRsv+0DTzOGpPM4+lUuecn9ancvJDRk6yoycnNgM5mkHsy3x8RMTk6s7Gt40mE19IM9cN5Rak5EVwFKXkuyEhOR7pogDSp0mat8+pxMuK2cxCTi4bObl09OTktmUnj4hskUl2sq9vnJ3EjVvKTh5BaSQ/fptTlSZeK+R3zchv6qwfQUt3y1mRI+IlXrVJkWZ3mvlgNUiKHJsmRQ7u2jW7jqJlfHhfhiR6TEPLJVanw+X9GZLZPcZetq99D51j/2TuC3NfhOyIJUkvLAbalxcp5olYapnUbUrSfAz4nnb6Yz73PnCv7+tpnHB3jDlOoRFqDG8HXVVkltRp3NWVjwrUkILhGKQJiM7tnIPtzR1YjqddS4l+Zpw3GU2BP0Borc3rF4Aj07lk8qLQNOkSb1mfDPDuNkFDTJuMNWyjErIzOGthpHcSwns5I7BkFUOWhCUQkkTY0udu9FcbWDLqkJPYnEdu7hKeAf2NxunDsVh3d0pj7tzTHJURXWFRLUg97KpYlTCiXIRYOuZSCAY+20COkIAUC8JxQhQPkaotSnP9abh4zIWRJuYF1D/hQu5E9VQprOUk0ldPrn90lAcqTPFkCGO0Clxf+EtBKojtB2uxx65YKuXHS+XXaeITFuRPeMA4Vh8+Yh5JuOQ7Hgl3vbas8PK3lkTk0pUwECti2c8uZkF+4cJzIxoDn/LjJV4WA0IqZQVjQpYL1pIpZ2+tuwM/O+P12qTbV1lYdiuk4FLGHtpJuPR5sy17C87z/laRCK1sc495xk5wRBXN4DlTgmxPuG1Qk/Ej8RKH9lbq/NmVjyhc3ty5NzveLiY90tQEQ1nF+nnXfuTaC/hPyUtzT869aLN6ljMJFRNpW8XLtyp6aLljCtuwjnq2/7DHzBo2Xyn6duEvLO/AMRt5licWHmZvbRaJMmMYJthbM6k0p2sR+/rmmo3hAIaUaToc+pkHw/4OCIexEOa/gpQMft0ZjklX+sV8IEwHDrehc3E/73fRBWnOvzWRlpHzzWa5MOL4UZOVz8l5pYSq4LIMFSGCLOMUV5FfqaiK9hPmVpYoqXESkXKgOAeIOcivEugmNCqf0Sj+SHS25q+5wYoXrrnVk16eAWE2fJAZGxCmvOTpS3n9kbB7gp1tnC4FDNh0QW6Yyktui69uxtpV0FwIbWfcOFBWlUN2jEzMhx0TA25sJDhqEaM65AnRMqvSmSenLj22iTnl5pegq93akvOit+j17vdCIwBCQP+siFDIfF+KknjTI6c+EM77Ml+WuC44wwxYxJGKqzS5nLOkRlliCSdSr8RJomoa5UgRy7YWY1IieJn5T+v0ghFKqtpepLc9/4Q4WeKrUpz00o5gwsOEkFKvOkBiqeHHAcM9WpuPfVlbcJ37IiIXZP5Nuaf91mKmOoz12P1YaHdJoZSSEo0fiVQpvZxyeNI1L6bmwdJFFmaCt8GuOps7A4w5kQ5axpLQAnfpbVffRu4nv2J7itKmJUPaG12ZdLCD08PWEQAZ5bt7lJLgh+z5QM5ZtDXamslGjztkTxlPacOZKuheF9Zs4fj4zrjX3PyJzWLnBXCbiSAAgpKNlfcZcgpGLjYcPBqC4zMh2TN/7IkmXGfgoRRTrHuF1YkkjYtYPs6ne+AncgFGD81r1D03W3SHMlrYUk6EK6K6wkpZJQoxqS7JHRPoqRjJ0Nh1J6pFGldcVsn1s+sex1gl93cX4tRHLGKAbEYxh/50h1KakmRVb/mdam+rrGH6UTDr/0gHCNeJpARWvYtFcMyo22hxV8armgV8npiFiQueVGZUK2UCeNOA1hU6XB2z5o0+bPfvbzU4VsvqhfPkfKQ3tD7eDzYbQptgAtUiqfzA87ouyZRrxOYEpzrilW4mkO98FyvpOBD89bE+pmttFTEprAApcMAQdWNPIxhxpLGuY3dB0iV6+dwowAuclAJcIU5Juzs0CZIE61WzCo2/Z5wGzENpVqqSLV6vMMH9yvrauYWad4/HHr3yBK48KU8yVVP9qw8P1Gon4peWPQnr1dwrobGbcoqAx1MR7cTng8D5PawJJQKf+gBtUFyjYjlPRTM+x+kxsioee99utyB9c31HcGIEzvX0oKWqnGd495FFvwlkihxr4Znr6hi/36jzQW2B5Xc5XO5yuNzlcPmLcLj8qJWb/AhyuIwzwmKcET6iYrOw9rHdSde2AzVSyZXLdtZs2/YRlJvXPfFhVcjNxgAnLGSam2eWlSBLrPO7XC53uVzucrm8lrhcFqwcP3bEuVzGA4k+XUY363EtphKLHtfxSPGRJXR563gkUZag6bUdyLaqvasUvenYxRr3Qp2onFcQkwe7X5lldknOefTBUMWcNzyYTAxbYXJUqV2+fjJ7uNcKi0OMNObaqD9zVQcaYicELwQyQhzyrNBU6WjXh4bYPX6X75/7xbn/NnfVSParlrMF3yozjdlKfu7VStXyw9fRz8iCmMb5sNlTMXvig5Q1/lc5UwsKDrLMRMGN2GeK7bPcLp8Yc7s8csS4XbgvJr3qRgSntC5oZ4bWxW7o+ZAu38/rYv+MzjqjI2qQ+sxBFAujNwMUl4wuoL5ayHErEbRdEqRM0iRyPvF0e7Rz9plqZlQ9qcRy/QmU+chFtEGRylWOjXuEJPY4rx5BS7TpzAvfkx4NjC4zD941ehB5UHxQriAxqzc3q09+qKB0OebBU1AUXTqWrmkkx6QuHKAFXVY1/iXwufws+bzzbuc9zqemOJA9NsGB7DJrlcyCNj8wa6MmUJCw+KfRlJHfV5jRpWQHl7Z2T5KtAkrSWiMohEHnwR6apNFF5EaAkuBTGkvUQClLzVcytgctOTltgSxZygvIjPzGSJFFYWGKFwl12q0bI0b28KFULeZb22NkEHOJPy10OV4aKbnIY2BsSRaP+bssp7yrmC8BPoFJ5jfKUrUUqSYsYWPOFu0C0OErR9rCiF8zdqwXd/KkjFwi6h+t6FpXOu9Gznx4JpQ+IcZwa6RkxjxPecJDNDKmeoNhNyHES6hcBfTJkixt+ryiPABTxK6RIKxls+7fm6k3xyhFTozKDMy0A90SxHMHTdlecmO9RmSHupu6gJN0GLTVA8qiJB0Weip/tiIaolZPhp4uu8wj6+uEiIgz56VPo987nI3l2OL3xIC8iOiTFjUSOxRQI4t6OSLSDpVAzSYe07HwShCXk1eUkAXcHEDU4tAxZDVYqAFwciDr9/rQ2O/CYPqEj8XFBNAuC9hJzHxldH2HvI1lOmKVZX87UikNzG1h82RdygSqAPZkye0zb+jRapC6gCuZEQKgHHC3pHqmQTqOfijz1kI5Yn5/az7J4Y401K59sT3Gl7wnm8DSvu2lPz2ccYU4XMVAynK+tjThXVmwvCv+DXlX+jvdGaCdr27mla+MdYXnuGfWdvnC9oOnFMuiY4vrAVCusE2s40eTVyHnysKJr4BvpSGyq/+JA5LThTQctBdKoa9rMvT7vdLWP2gao8xfRWwr+uVTrSjnQ/t5VhJn46schXnPYs5gMc9YzBQsIWArO/sspl3/bNx8OGswX3sUKmZVKYcTXC51jUEDOGWUOihGJdoHEDPzn6/nu6y9Sstqhcm22CitUgmGBwa3ONiz1w45ijVCpVX/uM58sEEWAXlqhHhZzcvyiFbDpLBBmNr3YkSvep9xElhwKfPXAjBBfzEGlD0Z+zEjY2t3ZewAvcnsxMmrgd7kDsjY1c9vfHTUdZyGT3gA51aR3Fn56qMuuXMSBgMp89kzq+UTDdzgudA4ywqCkhn5umzk69m78nXk6EfuhES+ZolF7pQM31b2kLkpf0gJbKpz8a7U76cG2T/Ikh8y3JLflWrnqmPu0/NFuzMKZ/G+d4YN59tsBeXgnuGwcURNcJ9kbqjwPggQV2N5ankeN/QBbJBiR2GbNyxvx0/OvWvu43eWt2M/wCh65WHmf34aGdF4GhnBGPGd5O74wjQY2RhMgxHL5mbxBIv38Rt/GfwdozvN30GnQ90w9UOlcH2xtfGXQOAxARzIZSRdiUulMbfetf9w7UXUZO8y7+Kn7yx/x974y775s0Mcw+Kfon7ZcsY5yDvE4HGccCIr/opUPQWDBhqGahjAvssu60AHRHhB0fyYS6tCxZn5psP44jc0BZEtGvnrnQh55gLiuMZZ906SeFwlGQ0rwaJUDQXpPQGTPCk1d2m2rTDj11h/p+HSugrme6E5subG4QmY22ZhsLFQxgEX7j4ej0+ZtbLESlZuf+jO8XjQWccBjUdl+fUbX3n1+muOJlp6bGKTAx3TfjUYDjVxvtuRWFLJFT2wd8fsvXPS/vUo5eAnTcdAH/Fw3SfyVLSYOQH1OGRsD9kJevn7rv1fs2qeMprgD6E6McuqsQcEZ+fqBv3989hTWYYyAJ7UNC1u/3gadLQ1pmofnYKZ6d4EWH9KuTH+nz3OaGaUaDyQvUeNAfUD8DRbzrhJB1YLHU3mwMee636lstfjY461R9AxIqkwkZQKJVERYRENz8jBotqJ8JLGHlp54J5ogTDqlrjS0JNDKojUiLFnzLxLThXDPV/IhjSvWgbLgey5rMZoFkteF+uLxpXyWko9WZKXOjvJDFVGnWtuvLN5Xo+j3voLzb7Lm4INXe4zWmazrBas93TQrOUdxVRJUeuo0at/CFQamCqF/M17eueSIDZenYnyLDWao33jm4YB0/V1UceaznMcSU1Ym8fO5+bLfL2h05YbJlT0RHlDznPjZSLklTLzKEIHtRCSCVV13pThMMjekDWPD1LeTeqaDruCl7lRC8gxbnBqfUYHlynjLl5dRIkJQonw9zgu2saJNPFVk1U7iqZn/AhcZuOfEgBGxFMqCn3xnW63vXz8mJe9OXPzeSI6Xn5xZVDT2zp4MqXlhzlZalTN3UhaoqxiQl763DFvx1/vlvxODtU/LDjJVCqDC8n6lNei55Sd5+/yWhzOazGFSR30XwZM6tGltfjEQeDUtnrL2TFwqm++q89fD5wanYn1YsuVKRNtGUcWOPUuocVBQov/eGN8VRej8OIt46tO8I9/dO7b5/6nw28RXbX/6qexGH6FNBb01KuZxOJzW986LKgRvb0a4JoFzLplrFQne/Uipf7UlQ+pArL/RGMaZRfTTwVG1kQefsrKAzoK8rCPwgK/XAqLV7U8/P7GR8dMoR42cYC/ufXy+CtezaLwr6bsFScadFGblzdOb0xl4IqVgdGRkIH9QVnfHm+m8HaD1MrMlRaplSMiNuBzugGNN9S8smU1io3HqWSH2+xOcK9g2YbN7iRFdoctfkOTMzFgwn0sB4bWaXLnKMga+nckYwKavVZM3IsUsDEymrAgGEBWyZ/JKkEVDRlPDspoPlMDKbzHW1CCmSGHncjnmpXPE0dBPpMpUenNKQahwHeAYRAmJyB5DQyDR0M837/yzTQOJCupauY1Pbcl619Xcp9fvlRbe72SuL9ItYm6Ii4TWXPSE93HhL7i3u8DkWBbJUFfMU/6zCeRU956OZQVr2Zr+BtnnqORT3H1UILAlaU9gsCSdGiIkCq4AQFvysGIYYlcZ0wOOOGsKFv5JE7zSERVt5+y4lUthFfvtdiMM6wU+7AZ93NZ0MZ415GQtTeTmh9eV3guwBgP7MGZGoMxFrHZ3C/hiHTnLs+9G6qgRZVjn1lAhyXIJwm668wCtRm6Q5ducthGrHga1nWXsBSYmqOYl1xe4t6xQaQudoZJ63yRrpaQrvY48Ym/XLmHVlbZjs1Tl1go2owqxbSJuoKl1L36x4cuk+GWR+btnlZ357o96HeDTrkfLjPeAg5kjyI7SQwd+jabnDreTDaZJEhiGpsYH9LI4ywyBnJ634krV5en0JjM1zx+ZNwGcNZfQm+3u1xFIvs6HvVIqoCoPFwy7+KpOUY+S3527r1zn5n7c3gX+6lCijLIRJfw3gGGjj01NI48i7cFcxhTNxt+OjBkPHa6qUW67E+SOBZMsz89ZaFf09LUQ8fQvTNdD6g/YDdK7Pb3K9hJWheGP2bWjV015LOOjxBjAKe3tsgyxmqJl3aCNZ/P+7T5/tNJuMj1stFI3agdCc/I0oIOWJhBy4giFMVEiJZIzN8s1sQja23/CVVO9PYD242Tx8rp1rETzVodA+ImIcaLvnoVI4qbjHGzfoKU8czLvb/6rAoSupryEFdUzSfmkx1WKQe6w1Kd6G/5gC7JvhHFSAN3xdPpGRIwY9Ckz33OAnKflmvlnp+vEI6M8jB+qQixSzVSjXBAeEvSPKRUEhwyyVMSVb2yJ9GVZOiK7YjGdHRpyShB1gxF6Bv9QcwhSCqdCqaaxpVSWMllnPPsTJT57cu8O9zBlzqhnBdpuBH0VEtWU4kV7qVGhXswgqhoJdKq0x6tLJxjS6GqeYv3+OkGxm6PP3rRydOoE3upUWWNIJMPb1Mvpv2WbJKl7MQj6decXBg+FeysZ5G5edejo/e5TfcCa6iF4/5StfeRlYdISnCC5XgCK0COxEx6CqslhTPKUlKlAWIOcW0FFJMCCpg4VS+awU//iaPJMzCbNmXj5pyjArT8dzb/+rDn1H3Im2rsctcXkDaVR5KM4wde9+FpEhVXeGLcJ5yVGvd5SWMqI585mpw1sw1TvEBeOyoy8tIfrX18PPzAwhmC7HPGyz6KUvLDT3xkPPuwNT9Dlg2UNbX9XBwX73Jx3KyT7WYjDkdFtn7JjjHoERlYLg4tEKfQTtfhNY7oZI7BUgUHHnWQC2Qcdo5BYnk5g3Y6FsdVfrS5OLwt0tHmHRZcHCYACgayG+BgHxlHpaoc7s5MMbhPtIjHZxKwEx6OhpHdMtRHjpr0ApKaZRyYzeocuvGIuId/0KohE+bIRIUm7hi3MbJqWNbbI02cv92q3mD3ltl9FI3jqV3tmIgTOmCooJPsQuK6yD0TLCc33Tvl5fj03Bfm/vi1w8txHWLva4qX48rax3Yn3uF1QLyvKXIO5Fz5iKLz2ZtXy8ebsxi7jQtu6mbg+52z/By/Pve9c79p1u91xBl4zJvB0nyGMgNsA3RR9ouVa9S4DcZ3B1ad75r1tjNeuNB4CFre2JS8mHjbshksH01bxLctScLhRB57rCBjdBMYi+OWiReKAjASZ8WqdAixCLVWBb94kCFDt/O+PNkBiow0kHvkGFWfK4mL7nLKbSuhJPBUHeCcrWGUI8KYP3CcWK8z1nerx1U5y1joNzoYu2YdGy3Oa2cfT65j6mBmNf3xlPGDkaUx4cdKJEOgxQDtahQkh/mt/ZwhpIVTHggFsCnL6DFgwbgHWDBWChYMZk4qgQdDXThV3mPAKD2xdXLxIbwrajSk/O2c+JqqtVr+plJZbXtCrTXWWACNhzLC6nl8Ge+6zLeQIUYEwozHnlqRTVc2zWKxfe/RhJLj9ZaSQwIlx4VTHwh7Y4YPgmNL8GGsQ0lHvaFbWdxMKtuywdkZ5C/5vYsTmhAjv9g4gVSbhQ08IZBLL3TovNGhLzqV14gWxYf5IIdufU0p15fadujxgI8xmX00PgZ1PnndJ5rmEzrmFfjErqavLX6kH7CokweciKSobSD3bLCc3uADNB5/wOZ777v2J/zHyK87f9P5A+Plv7JF25Yz7O/c5vnlPZA6O7mMppPLVqKN4PhOMXdtApdls35LaTG4vFt04o+2SuaUIHEjsw9A7dIbo9rd0pBz6abT3vyQae8zTh+/4sVr8lfkK1+CNoHDTcatcZ0FZ/2XP26dM+yrcsu/L4VRa6wFcmKnwnokhAEuh6TxgtS7QeuHW4wrGFMmhLPlUIaPprLf8qkJjAbrGiqIQPHuyUFLtJdZrjaobDN9bAybx8h4KLv8bOkGQ9l4PJbO+rIYS/+gI+cFL9mxdM85dC6dOqz0Ctfh/x5/xevniOX09k2GZy9UVUJDCDFhJpwxCAHLAL+XuwOGknbo+9jGoYxUUqE9mGWH8Qs7w+F0WnjBJyU3VcCLtJjb+SZjkYybUD3dIF1nIAZfbmg8usVRebe86PzTV7RXYEYHv8P55Rvp4NnOza8+JXwnQSRebfrVy8r8q13DTgEt8p5/X1bq3xjQoqRWbwZo8VrRnZhL/NWqPe8UrsZXkYq8G8vdjeXuxnJfJpZz5v6I/C88YpfnHjK/3CaANfS9tw9djJLbirPlzDWoi3+b9eYeht682zPJjP/rlxnoFRdta/ktDfQydNMZ1llKlC8zw+rM3ef8pvmMP3f5tvWE3v5Oz9vZtHn3nu/e82v9nv/Lje65P3+ze54gn1x301+Y3LRRxfH0prOrv33Tmw6+4Io3G5UEGCP77npx5q5Ze/aujT9xk5smZexoechdw32/l9zvPMLwXDI3l5yZGhs2Kf+8H41GFemyVWJuobPzUN2cjvybD/7cVulrM29Yagwrq5jfo/MeHOsdZNG5RH8bjuWkbAo1M7IuU8qc+06MysLlq8RvtocPtM0V0be+/xe2Si/k/nbp4vwKw8dlJrv2ut55rek8MPcbcKyF647lO3vH8hpwLPDcn4ZjvROOdWHJHivVdZtTNfeIvoNxc6z+4Xe5sLftwI3zFbjx9sjeuLONdnfKrsuXSdiaPIxfLh5GuJ2Zh7GO8Ujn8/43fnar/M4sGObnV1aLTXAdX0f66EP0d8x1LB3+hOjetlGxEfkO+uDeY+tsP9immFz9nN3EVo3nkXS2L3ax5aZ+2/t+YRMe5jC/2IfTqtSv6m/4l1v51+bedt4clVcxOyH8SOUF3p55xuhH7DMeHP6U6U3f4t6Td57Z29bdspd42Mvg0233GafcbEv8KrzrTzl19BJ+49xZiCNsUqJozwIXYjAbGfR3hnse0t48rP0P0gMp+pJUAY7cGoD9uB4598LFeIu0hGiwhDUZlbrB6imtLrSSk68/XtnoaSNmJo5qQNC3ydKoIgZ+VTQF4QIvRBGto4izjpHazVal2a/3F3k9JWkWmcNVda/kRy4zwfHWvPkd2XmR1137z+Tb535zrjN3fO4KYG+RQ4MKm0oyDwEUiZ0WKDZBl/MY8qiUOw+gQHi+uIFjvg2O+XfzWuWZFSmME+O4OtuuZOVGLiLnk7xWvfc+s1VSZtx+hyXaK/cqD7ajyzhXEbA37fddYdJCauh2WElLtXB7W/fEStYqywhxTFXid1fN5n7fRJ2McE50Ja55fjl38KgL7/BvzT1KLpLvA7wx8+4sqE1qX6CxF92ZVJkzYAV01N5wxKwnWGCEQeMRoI2lecYyC1I6w0RTeMwz/jHEcLsjCC4LmgtUsGyYcLFU0HffB5kR8HCR4EtbK40LPecftdTrePpoij9g1C6OErSVnT+f1rIHUlU7f+9bjtM8kqVj5vsqzkxI4OlcO+bWpYk/IlnD+VvqLvdKF3ivjbt9aWL7nJcRzsxZBNHkuK9SvtBprJO362OQOXVoY035ARKCO0TRHGJ4ipzTTAfUO+7hpp+QWknEK+Fz1BkCeZQzD6G3kE70zvd1lGS7DGUbg5U2NuuBLGMUINzOo6iEeIIE4iJ7MFbrurItTbwoHXmGQ5S/RqKGn3lYeCJhJYQok4FtWlKc4LAauOZcyhwJkSymbobc6ir1MMuWHnQ4KezD982dJw+Q75j7u/a99mYhu8zbxTa6LoJ4aBAYDSBQLwhIMEB/7fR3tyy6WLGogVHsTNGXRuyfKbgThe60IUA0TZKLMz0Ce+M4jDBitJ1PnsuzRxNxWZRed4V2L9RXt5a5RBaux4HCAqSwaQY5MaEkMoEfH5aYSN3YexuZ74l204QL7knzqrhCKEO459dLut1SstXU53KPu43nMiNsgXX6CeSEeL1MxYIJQ8yyiPrH33rvhZpOH8z0/IX7I+cnncicucdYh6ERIsd2cLSeyLRK4rBK9XGfhB5DrnN2mAkTNi1VFQq5IklAHM+sypGjAjf3iYnnA+k4kWQE4YabaixDzy95dAXSkewkx4rF5aEW627vMeyaN4lSwnaGzNEOXiYoaywtrMeY7lDsN9/7gn1/9zsbWJHfcv6F+SWboPZZupdsqtztH/NyWZ/3GEBUscy2/mU295vN4P010O4sKAG89WEPBqpGpa2dk87W7klnVEBd8XTva2necCa54uICMpjkAGNrU9c9S9w1sABbw93TaAQNgzu7FqZr2B/u7pjtp53RsNefzFrZmNkoEkgc7czAg21g+Eg+6RQpbiYv7gbWVODAmfo91rVW/ow1bEVny+C0Y85UpKRgHdt+xdHQXMLOsL+B+qOS0S6lkblB6GJpOMwi26EWMisTvtTr2+vcsZ/fhavvA2a0OWJ/w2FALGgMwZhDEHCkhzbLv33GOo/mwNujIr0FGHzb8BB5hr4IaUnsEGgcqdrsJEAtMdTpzTtqSwkL7OZgQhD4Uo5xAqiDkVEsynEkkk0e8xBZuK6SkQFC3oAQ0XUJfFDGROMC1QvOAF91bOsjgYOIsi8iEsPjqzIWGGlybJIRMp+2uGM+K13sYb+0lhKzpjn00xgZISExW6lUiNYkt0lVewPmDBQyxw4RzDf+LuJpTbYkUSSsUNsYAylVyMXY4SdM4TLgL4OOmVB6mTYS7ca8R1uQsBXGelHMhKrzAla6IJ0rLs08EEHTtndGc0+61DXLURgrbbS/FjWhWfie2B0GaI34skfZvKQJJWfSc2XovvmkZpSyFGuGNXcJEYSyHJOE4AaUvCC3poypN/4BXVSiSVtaRW23WcEJdfskRFwJBg42klT3VIlW/DgxT1tERjuZh+6JqIkbvpNi2qFpR/YljUjCMmL+YR0iKiysMHPOSkh8X9heynRBr7hG6SPlrUsLwuYyP0QBND+aC9RI4IAERC88kOMKNu/BhDgE8o+BeaSIKN+cijO7kHSKTFxHF6i7LBgRxlzRmAgjrj7nFDJDRBi5Utgtsx73jFmkrKSZFk1OExwy8yQeyqvGT6CD2HJ+Idayy8HYj4SRRlVkDJrEXSF7PBE4gj6nc7xkTiU3/TISmTkSXFagocHWYVjJUBiroxHT0KW1dga6XS36JsDDwTqwKJ/I4xugy2DQ/bPks8bLmos6UYd89s9Ow1/ryz537UvkMfIzcz8w9wXz0abDZrv7janqFqLHgUSr1w8AEXWC5GeEdwMA/SAHt9OfAP31C7Q/EObCvAG4H3SwmcgOKmq7xjcBJWT1zZ5qg8qbrddtj5rGyWEzfJ7FT4CAOSncjVFf9iBVM0BStcW23anN7JMHQKyJjL15Vu6rLRn1t4zfGkS1lf59abAgVi52SOuZaFWp0AhIyYLsgdA71AXWOpA+YdPSMDkKO3G9mWJcrnpyMbx4quwuu8877aTdURzKtgxz82rMQo90rS3UQ4le7S1IVT1lNII8yahOeLycSBRc/d9RLTfBpCdZJdfv7qy2GyB+jhRGsH1hIlLsu2WzSkR0avM+lcrUgRlQ4nxKDnSink68IW+2VGwiXPO+JQBjaoAIJFCJIbEXCoHUQnwh0lewxsZ7xw+/g1U5rlG1mCduPb9H8iXzT/XJ+1t+yEJfUTKhuovdKsbcOLYdmvy1xD8RGNst+iVYtsw4aVhylSElo47xiVzqreeLLPvE5XPHTQDtUVIKcBnSfmFyMVEnuarK3qUr2WbMhdVP5kIXWOI2zdUptGbX3+PXXmQh+VUndSCDwAY9817NO+eTSioYu/64hGzTvahgFSjMzOSnwhbZ+A+MydBYBwsm2QKUV1jPuS2kpGCgi6KKbZnnLfCZhhOAyhss2a1dwJ88uGT3r9hdBhUVZ+LAmR+zr1CWRjswUOCM9ihri+WeTle7JW6GiYLrVjz60EPogecBUJJZdYBstwFN2BbjC279OB9UReTXu2aNQk2AU6OPmFk+0MiJsA1soD5mdKYMn8zS90QpY/NUMdvgb6wlmEujvcibHsnljq2a2uLvrGzUXLkUXjpZdtf4OzpJu2u+zEA0QLszFepaR3gXE//cQoaDRqs+EQwVypiVqQnbQWRF7PVptae2rcgayxNVVwaFyN5vRXZNyYB3zResyFLMpZQEfWvSQFpxXHH5WviO/mq7jkghVIFAEqrD0ICDeFPEIFeJijAPjFyhHmHGF0yTElXxSC1/5yA4HW0KEVh8ZVCnMshl4qkl2adqQQx242GoKsmVNBzG6f1uONj0/HvU/PcuClAcRvXSJGRGiPz+8XjQ8qiUOOwf80w4RN0oY95QApOvMalu4tbKJ8bS+JSVxsiXhTAalZAYYSRc86RL4r+WWmEMJ7KojXsqlBtORJEHKmO1HkuFXNSJ+1Ti7bBOfaIkLNHnnpKgkZuCsupHhZIgOHZOfiONr/6fh+9nnUySBU7mcW5uhAa9hwpJXjynNtohK3sxmxXn2KsRI84YxPn/A9Q37RwAeNpjYGRgYADif6IX/8Xz23xlkOdgAIFD0QVlIPoOe8DC/5n/VNnfsh0FcjkYmECqAWatDNcAAAB42mNgZGBg2/WPi4GBQ+p/5n8X9rcMQBEUcB8AibUGa3janVPPS1RRFP7ePffOixYhoRJWwyyCfi0Ca1bT6wc+LRsya/IHWUgTBtUshmhTuBtyYRLNQiEkVHA2Qq7a1DL6G3IxtHAhGhRCoG6C13feOJAxLuzBx/feefee757vnmN+IAQfswB4n4kqzpglPLEF9Ekz7pCH3SH0etMYMavImNVo3E6iX9IIGXu4zTkp4ZZrQ59Zx4A9gdeywtg6RsklW8GUPEWe/IYoc30/cdvtxwT3B+Qprpt0N3HetSJrp3HPdeKiC9BjD2JAvuCqu873DXTF53uGtD2ADOM9roLLdhnH3QxCm8Ul9w3d5JNSQWDP4ogroN0uR7/3teGwa0IrtVKsqcO8jb7zzBllxt7LaZyST16yof4Kz9hYP/u/+nIF55irYEajR7KFo14p9j6UDxhxKTzQfLqWeVrkMXL8fuGSCPxFTDD/MfWdseeSxxDfi+ozz5+i3gX+74rv5KXn6z//VezvnNb2D3qVExvIaL1a69/wqtGm1kteI8ZcEM3Wa22Aa1rrDmit2Wiefub3rq26sfZXoqw9tJt27AV7r7E+74TsbyH0f9Y8Zf5f6rncBRIfgTqbgHewSCRrwBJ5kDzMNemaTh22Ke77os6FzgFnpqhzIynOxDuUbRU53as9rv2teSWHTssZox/3Ex248QcZj7l0AHjalZB9aM1xFMY/57pY2rzM2FprjaZumowWS1M38xaTxYgsLRbLW1cbUfePyeJi1mgymrrlsi1rjSYLMUyWl0wtr5PrJWR33NmVqTWe7C9/+tXT99c5z3nOcx74+635F1YFjlQY3g5RzyEmCGOcQi6Mi4bYDojzwIQGoR8mhiBecwl+SNRMkuaTP0OKeJMjMEVzrkyYmgJp0psuTroXZkhr5gfIqINZRZAp3pwAzPWBuxmyxVnYBEtcsGws5KbByizIU311jqyqty4J1svDhjgo1L7NebBVOjvKwdMGxarvkr89JeCVp33aVabagVbwqXZInCN6j0q3olTQrcdUqwrDyRY4rdkzA+AvhLPqn6+EWu2p160NyqRRkV3sgmbxrkj7qjzekN9b4t+pgbuqt0vvgfw+1s5OaTxV7UU1vNLtXdJ+o+yC84fwVvrv1fso/S/KpycfwsqjVzf1qd+vbAe093cKRhzm0DssF3PmYCO6sJGZ2Kh0LFr/MYuFZmx0ExabhI3vx+LVSyzAkl3YpBCW2oC5yrBp4qZvwzIysNkRLEt6bi82z4llV2ILpLNI3KWqL8/DVhRhq0qwtdLNv44VJGAbW7BNQWxLFLa9HdspL8VhbHcrtlccr3RL07D9eg8+xA77sAppHVf/RCd2SvyaasxfjgXk41wbVqvb6uXjQj7WmIpd0r7L0mjRHdc6sJse7LZ2tUnnnm64rxseVWFPNNep/jN5f6mcXkv7nTx8kr9u3dQtD6Hg/6FHHr9q1zfphJVpb50gne9uQZ77tKcvgEXkL6Ksf4SH8FMzv3xDGJTPQQ8OwjicrX8AjjPpxgABAAAA3wHvAAUAAAAAAAIAAAABAAEAAABAAC4AAAAAeNp1kb1OwzAcxH8mBQkJVUwMnTwxIAFJ+SjtjIpAYoEKBsRAmhQiCoUkDGw8ASOPw8zHE/AGPAEzF8diQKr+sn2+3N3fdoAFXggwjXlgpFFjQ0u7Gs/Q5MnjgJBnjxus8OrxrDTfHs/J++PxG0tm0eN3QrPs8QdNc+Lxp3BS46+AlsnZJ6Kr2sZyQMaN1kMuyBnyQME6e0zEZlxrtQx45I6UNeFdsQWltBmx1KX4RHwsjeVM2lXaSj53iYX8Q67EVb5cTLU7kudS3rHrOV3X0zkjOqoum2wptaP3ma63/5JDVaRTh66m+07livU/JtzqPtZ7BspJ3Y1Tqaxu1dYcau5p7GjeUFV86EYi3UiJVffSvVeufql70f5f9jH3Yqreub6NfwEhnk4IAAAAeNptzkVvlGEUBeDnRVooUtzdnZmB4lakuLs7bXErrsE1EBJYQbANEFwDARZAcAsSYAFrNPwCgsy35Gye5CzuPfL5l18/NfC/fCLkC/nlV0BBKVIVUliaIooqprh0JZRUSmlllFVOeRVUVEllVVRVTXU11FRLbXXUVU/9P38aaqSxJppqprmYuIQWWsrQSmtttNVOex101ElnXWTqqpvuesjSUy+99dFXP/0NMNAggw0x1DDDjTDSKKONMdY4400w0SSTQwHHbLTJTfttttsOB51wPBS03Qcb7LPLAVvd8dEhJx112kP3nTHFVHtM89h0Dzzy3BNPPfPZDK+88NJZ2fZ667U3cnz13TYz5ZpljtnmOmyeBeZbaJE8iy2x1BfLrLDcSqutcs0Ra62xznrf/HDdOefd8M77kBJSQ6FQOKSFIqFoKBaKh/RQIpQMpUJpF1x0xVV3XXLZPVucCmXccjuUtTOUC+VDhZTs2cvn58STJFLz5ubGYpmxyO5/TcRisch4ZCKyRWTLyIzIVpGtI9tEto3MTBqP7sbjaTNys/MWTp82eVFOskpkJc1ImpHV7a9ZXZMT/pj4DdRYi6kAAA==) format('woff');
    font-weight: normal;
    font-style: normal;

}
[[To Do]]
[[Missing Tiddlers]]
59.439,-3.833
7.6
2500
.tooltip {
    position: relative;
    display: inline;
}

.tooltip .tooltiptext {
    visibility: hidden;
    position: absolute;
    width: max-content;
    max-width: 300px;
    background-color: #555;
    color: #fff;
    display: inline;
    font-style: normal;
    font-size: 15px;
    line-height: 22px;
    font-weight: 400;
    text-align: left;
    padding: 5px 10px;
    border-radius: 6px;
    z-index: 1;
    opacity: 0;
    transition: opacity 0.3s;
}

.tooltip .tooltipwide {
    visibility: hidden;
    position: absolute;
    width: 350px;
    background-color: #555;
    color: #fff;
    font-style: normal;
    font-size: 15px;
    line-height: 22px;
    font-weight: 400;
    text-align: left;
    padding: 5px 10px;
    border-radius: 6px;
    z-index: 1;
    opacity: 0;
    transition: opacity 0.3s;
}

.tooltip:hover .tooltiptext {
    visibility: visible;
    opacity: 1;
    transition-delay: 1s;
    transition-property: opacity;
}

.tooltip:hover .tooltipwide {
    visibility: visible;
    opacity: 1;
}

.tooltip-right {
  top: -5px;
  left: 125%;  
}

.tooltip-right::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 100%;
    margin-top: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: transparent #555 transparent transparent;
}

table.manager-table
{
    table-layout: fixed;
    width: 620px;
}

.dice-roller {
    color: #007000;
    font-weight: 600;
    padding: 0;
}

.commas span:not(:last-child):after {content:", ";}

.lightweight {
    font-weight: 300;
}

.xlightweight {
    font-weight: 200;
    color: #808080;
}

.big-text {
    font-size: 1.1em;
}

.tc-site-subtitle, .tc-alert-subtitle {font-family: 'masoch-dirach'; font-size: 1.5em; font-variant: small-caps; font-weight:500;}

.tc-site-title, .tc-title {font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;}

h1 {
font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;
	font-size: 2em;
	border-bottom: 5px solid;
	border-image-slice: 1;
	border-width: 5px;
	border-image-source: linear-gradient(to right, #c0c0c0, #ffffff);
}

h2 {
font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;
	font-size: 1.7em;
	border-bottom: 3px solid;
	border-image-slice: 1;
	border-width: 3px;
	border-image-source: linear-gradient(to right, #c0c0c0, #ffffff);
}

.tc-title, .tc-site-title {
	border-bottom: none;
}

.alert-h1 {
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
	font-variant: normal;
	border-bottom: none;
}

.alert-h2 {
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
	font-variant: normal;
	border-image-source: linear-gradient(to right, #765f00, #ffe476);
}

.tc-sidebar-lists a.tc-tiddlylink {
    color: <<colour sidebar-tiddler-link-foreground>>;
}

div.sidebar-map a.tc-tiddlylink {
    color: black;
}
no
-58.18,11.47,38.5,64.6,-34.01,24.75,14.33,51.32

59.578,-3.719
{"tiddlers":{"$:/plugins/kookma/commander/buttons/pagecontrol":{"title":"$:/plugins/kookma/commander/buttons/pagecontrol","caption":"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}","created":"20190724145015836","description":"Open tiddler commander","list-after":"$:/core/ui/Buttons/advanced-search","modified":"20201002120203952","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define commander-button(class)\n<$button to=\"$:/Commander\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/kookma/commander/images/file-alt.svg}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Commander/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Commander]]\" emptyMessage=<<commander-button>>>\n<<commander-button \"tc-selected\">>\n</$list>\n"},"$:/plugins/kookma/commander/config/AutoFocus":{"title":"$:/plugins/kookma/commander/config/AutoFocus","created":"20190212055413944","modified":"20200324070652337","tags":"","type":"text/vnd.tiddlywiki","text":"yes"},"$:/plugins/kookma/commander/config/commonfields":{"title":"$:/plugins/kookma/commander/config/commonfields","created":"20200114192650891","modified":"20200324070652345","tags":"","type":"text/vnd.tiddlywiki","text":"created creator modified modifier revision bag"},"$:/plugins/kookma/commander/config/minlength":{"title":"$:/plugins/kookma/commander/config/minlength","created":"20200110122842113","modified":"20200324070652355","tags":"","type":"text/vnd.tiddlywiki","text":"3"},"$:/plugins/kookma/commander/config/relink":{"title":"$:/plugins/kookma/commander/config/relink","created":"20190911153159143","modified":"20200324070652362","tags":"","type":"text/vnd.tiddlywiki","text":"\\define relink-plugin-notExisted() Update title in //tags// and //list// fields of other tiddlers\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\">\n<$list filter=\"[[$:/plugins/flibbles/relink]] +[has[title]]\" emptyMessage=<<relink-plugin-notExisted>> >\nUse //Relink// to update title across all other tiddlers\n</$list>\n</$checkbox>"},"$:/plugins/kookma/commander/config/systemfields":{"title":"$:/plugins/kookma/commander/config/systemfields","created":"20200106164439016","modified":"20200324070652372","tags":"","type":"text/vnd.tiddlywiki","text":"title text tags \ncreated modified craetor modifier \ntype bag revision\nlist caption"},"$:/plugins/kookma/commander/field/macros/add":{"title":"$:/plugins/kookma/commander/field/macros/add","created":"20200112073000701","modified":"20200325055206697","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-new-field-bulk(datafieldsTid:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"add-new-field-bulk\">>\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"newTitle\">\n<<add-bulk-fields>>\n<$wikify name=newFields text=<<getFieldsname>> >\n<$macrocall $name=\"log-add-single-operation\" msg={{{[<newFields>addprefix[new fields:]addsuffix[added]]}}} tidItem=<<newTitle>> />\n</$wikify>\n</$list>\n</$vars>\n</$list>\n\\end\n\n\\define getFieldsname()\n<$list filter=\"[<__datafieldsTid__>indexes[]prefix[fldn]]\" variable=item>\n{{{ [<__datafieldsTid__>getindex<item>trim[]lowercase[]split[ ]join[_]]  }}} \n</$list>\n\\end"},"$:/plugins/kookma/commander/field/macros/bulkfields":{"title":"$:/plugins/kookma/commander/field/macros/bulkfields","created":"20200109104450902","modified":"20200913180532516","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define numfilter()     [range[1,$(flt)$]]\n\\define id_fldName()    fldn$(cnt)$\n\\define id_fldValue()   fldv$(cnt)$\n\n\\define add-bulk-fields()\n<$set name=\"flt\" tiddler=<<datafieldsTid>> field=\"counter\" emptyValue=\"1\"><!-- when the datafieldsTid is not exist, there is at least one field row -->\n<$list filter=<<numfilter>> variable=\"cnt\">\n<$list filter=\"[<datafieldsTid>getindex<id_fldName>]\" variable=\"newField\">\n<$action-setfield $tiddler=<<newTitle>> \n $field={{{ [<newField>trim[]lowercase[]split[ ]join[_]]  }}}\n $value={{{ [<datafieldsTid>getindex<id_fldValue>] }}} />\n</$list>\n</$list>\n</$set>\n\\end\n\n\\define getInputs()\n<$edit-text tiddler=<<datafieldsTid>> index=<<id_fldName>>  tag=input  default=\"\" placeholder=\"field name\" />\n<$edit-text tiddler=<<datafieldsTid>> index=<<id_fldValue>> tag=input  default=\"\" placeholder=\"field value\"/>\n\\end\n\n\\define add-reset()\n<$button>insert\n<$action-setfield $tiddler=<<datafieldsTid>> counter={{{[<datafieldsTid>get[counter]add[1]]~[[2]]}}}/>\n</$button>\n<$button>reset\n<$action-setfield $tiddler=<<datafieldsTid>> counter=\"1\"/>\n<$action-setfield $tiddler=<<datafieldsTid>> text=\"\"/>\n</$button>\n\\end\n\n\\define create-field-inputbox()\n<$wikify name=flt text={{{ [<datafieldsTid>get[counter]]~[[1]] }}} >\n<$list filter=<<numfilter>> variable=cnt>\n\n<<getInputs>>\n</$list>\n</$wikify>\n\\end\n\n\\define add-more-fields-ui(datafieldsTid:\"\")\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-reset>>\n<<create-field-inputbox>>\n</$vars>\n\\end\n\n\\define add-more-fields-selective-ui(datafieldsTid:\"\", stateTiddler:\"$:/state/commander/tiddler-addfields-status\")\n<$checkbox \n tiddler=<<__stateTiddler__>>\n field=\"text\" \n checked=\"addfields\"  unchecked=\"nofields\"\n default=\"nofields\" > \n Add fields\n</$checkbox>\n<$reveal type=\"match\" state=<<__stateTiddler__>> text=\"addfields\" default=\"nofields\" >\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-reset>>\n<div style=\"padding-left:88px;\">\n<<create-field-inputbox>>\n</div>\n</$vars>\n</$reveal>\n\\end"},"$:/plugins/kookma/commander/field/macros/remove":{"title":"$:/plugins/kookma/commander/field/macros/remove","created":"20200109083928203","modified":"20200325055328423","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define xx-add-new-field-bulk(newField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__newField__>!is[blank]]\">\n<<create-log-tiddler \"add-new-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]+[!is[missing]]-[has:field[$newField$]]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-field\" $param=<<__newField__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"new field `$newField$` added\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define remove-old-field-bulk(oldField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__oldField__>!is[blank]]\">\n<<create-log-tiddler \"remove-old-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]+[!is[missing]]+[has:field[$oldField$]]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-field\" $param=<<__oldField__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"old field `$oldField$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define set-field-value-bulk(fieldName:\"Empty\", fieldValue:\"Empty\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__fieldName__>!is[blank]]\"  variable=null>\n<$list filter=\"[<__fieldValue__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"set-field-value-create-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]-[$fieldName$[$fieldValue$]]\">\n<$list filter=\"[<currentTiddler>has:field[$fieldName$]]\" variable=ignore \nemptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not `$fieldName$` field. Operation ignored//\" tidItem=<<currentTiddler>> />\"\"\" >\n<$action-setfield $field=<<__fieldName__>> $value=<<__fieldValue__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"field `$fieldName$` got a value\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/field/macros/rename":{"title":"$:/plugins/kookma/commander/field/macros/rename","created":"20200107051937869","modified":"20200325055328448","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define rename-field-bulk(oldField:\"\", newField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldField__>!is[blank]]\" variable=null>\n<$list filter=\"[<__newField__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"rename-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"[<currentTiddler>has:field[$oldField$]]\" variable=ignore\n  emptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not field `$oldField$`. Operation ignored.//\" tidItem=<<currentTiddler>> /> \"\"\">\n<$set name=oldValue tiddler=<<currentTiddler>> field=<<__oldField__>> >\t\n<$action-setfield $tiddler=<<currentTiddler>> $field=<<__newField__>> $value=<<oldValue>>/>\n</$set>\n<$action-deletefield $tiddler=<<currentTiddler>> $field=<<__oldField__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"fied `$oldField$` renamed to `$newField$`\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/field/macros/set":{"title":"$:/plugins/kookma/commander/field/macros/set","created":"20190212101155537","modified":"20200325055328470","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define set-field-value-bulk(fieldName:\"\", fieldValue:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__fieldName__>!is[blank]]\"  variable=null>\n<$list filter=\"[<__fieldValue__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"set-field-value-create-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]-[$fieldName$[$fieldValue$]]\">\n<$list filter=\"[<currentTiddler>has:field[$fieldName$]]\" variable=ignore \nemptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not `$fieldName$` field. Operation ignored//\" tidItem=<<currentTiddler>> />\"\"\" >\n<$action-setfield $field=<<__fieldName__>> $value=<<__fieldValue__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"field `$fieldName$` got a value\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/field/ui":{"title":"$:/plugins/kookma/commander/field/ui","caption":"Field","created":"20190212061551615","list-after":"$:/plugins/kookma/commander/tag/ui","modified":"20200324070652439","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/FieldOps]!has[draft.of]]\"\ndefault:\"$:/plugins/kookma/commander/field/uicomp/add-fields\" \nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\"\n>>\n\n"},"$:/plugins/kookma/commander/field/uicomp/add-fields":{"title":"$:/plugins/kookma/commander/field/uicomp/add-fields","caption":"Add fields","created":"20200109083519146","modified":"20200325055328482","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<!-- create the interface-->\n<$macrocall $name=\"add-more-fields-ui\" datafieldsTid=\"$:/temp/commander/tiddler/datafields/addfield\" />\n\n\n<!-- call action macro -->\n<$button class=\"cmd-btn cmd-btn-wd\"> Add new fields\n<$macrocall $name=\"add-new-field-bulk\" \n  datafieldsTid=\"$:/temp/commander/tiddler/datafields/addfield\" />\n</$button><br>\n,,Note: This will overwrite the existing fileds!,,"},"$:/plugins/kookma/commander/field/uicomp/remove-fields":{"title":"$:/plugins/kookma/commander/field/uicomp/remove-fields","caption":"Remove fields","created":"20190314051054548","list-after":"$:/plugins/kookma/commander/field/uicomp/add-fields","modified":"20200325055328489","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old field</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/field-remove\" default=\"\">\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -title -tags\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove old field\n<$macrocall $name=\"remove-old-field-bulk\" oldField={{$:/temp/commander/field-remove}} />\n</$button>"},"$:/plugins/kookma/commander/field/uicomp/rename-fields":{"title":"$:/plugins/kookma/commander/field/uicomp/rename-fields","caption":"Rename fields","created":"20200107052908832","list-after":"$:/plugins/kookma/commander/field/uicomp/remove-fields","modified":"20200325055328499","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old field</label><$select class=\"cmd-select-wd\" \n tiddler=\"$:/temp/commander/rename-field/old\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -[<systemFieldsTid>get[text]split[ ]]\" > \n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">New field</label><$edit-text\ntiddler=\"$:/temp/commander/rename-field/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new field name\"\n/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Rename field\n<$macrocall $name=\"rename-field-bulk\" \noldField={{$:/temp/commander/rename-field/old}} \nnewField={{{ [[$:/temp/commander/rename-field/new]get[text]lowercase[]trim[]split[ ]join[_]] }}} />\n</$button>\n\n<!-- new field name is checked to be lowecase and leading and trailing spaces are removed and space between words replaced by underscore (_).\n-->"},"$:/plugins/kookma/commander/field/uicomp/set-field-value":{"title":"$:/plugins/kookma/commander/field/uicomp/set-field-value","caption":"Set field value","created":"20190212120609737","list-after":"$:/plugins/kookma/commander/field/uicomp/rename-fields","modified":"20200325055328506","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Field name</label><$select class=\"cmd-select-wd\" \n tiddler=\"$:/temp/commander/field-name\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -[<systemFieldsTid>get[text]split[ ]]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">Field value</label><$edit-text\ntiddler=\"$:/temp/commander/field-value\"\ntag=\"input\" default=\"\"\nclass=\"cmd-txt-area\" placeholder=\" field value\"/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Set field value\n<$macrocall \n $name=\"set-field-value-bulk\" \n fieldName={{$:/temp/commander/field-name}} \n fieldValue={{$:/temp/commander/field-value}} \n/>\n</$button>"},"$:/plugins/kookma/commander/filters/Drafts":{"title":"$:/plugins/kookma/commander/filters/Drafts","created":"20190214135512125","description":"{{$:/language/Filters/Drafts}}","filter":"[has[draft.of]sort[title]]","modified":"20200324070652476","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/geneal":{"title":"$:/plugins/kookma/commander/filters/geneal","created":"20190725091830350","description":"General filter","filter":"[all[shadows+tiddlers]search[your keywrods]]","modified":"20200324070652484","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/Missing":{"title":"$:/plugins/kookma/commander/filters/Missing","created":"20190214140029091","description":"{{$:/language/Filters/Missing}}","filter":"[all[missing]sort[title]]","modified":"20200324070652492","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/Orphans":{"title":"$:/plugins/kookma/commander/filters/Orphans","created":"20190214135426497","description":"{{$:/language/Filters/Orphans}}","filter":"[all[orphans]sort[title]]","modified":"20200324070652498","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/RecentSystemTiddlers":{"title":"$:/plugins/kookma/commander/filters/RecentSystemTiddlers","created":"20190214135950458","description":"{{$:/language/Filters/RecentSystemTiddlers}}","filter":"[has[modified]!sort[modified]limit[50]]","modified":"20200324070652508","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/RecentTiddlers":{"title":"$:/plugins/kookma/commander/filters/RecentTiddlers","created":"20190214135912493","description":"{{$:/language/Filters/RecentTiddlers}}","filter":"[!is[system]has[modified]!sort[modified]limit[50]]","modified":"20200324070652513","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/SessionTiddlers":{"title":"$:/plugins/kookma/commander/filters/SessionTiddlers","created":"20190214135831279","description":"Tiddlers modified since the wiki was loaded","filter":"[haschanged[]]","modified":"20200324070652525","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/StoryList":{"title":"$:/plugins/kookma/commander/filters/StoryList","created":"20190214135246552","description":"{{$:/language/Filters/StoryList}}","filter":"[list[$:/StoryList]] -$:/AdvancedSearch","modified":"20200324070652532","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/temp-and-state":{"title":"$:/plugins/kookma/commander/filters/temp-and-state","created":"20190214141452091","description":"Temporary and state tiddlers","filter":"[prefix[$:/temp]] [prefix[$:/state]]","modified":"20200324070652542","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/help/ui":{"title":"$:/plugins/kookma/commander/help/ui","caption":"Help","created":"20190314050052494","icon":"$:/core/images/help","list-after":"$:/plugins/kookma/commander/setting/ui","modified":"20200324070652550","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/Help]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n\n"},"$:/plugins/kookma/commander/help/uicomp/quick-tutorial":{"title":"$:/plugins/kookma/commander/help/uicomp/quick-tutorial","caption":"Quick tutorial","created":"20190314050138754","modified":"20200325092740142","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"# Use ''Combo search'' to list possible tiddlers\n#* example: `concept` performs a standard search and find all matches in title, text, and tags\n#* example: `[tag[xx]]` finds all tiddlers tagged with //xx//\n#* example: `[prefix[tt]` finds all tiddlers have title started with //tt//\n#* example: `[has[draft.of]sort[title]]` finds all draft tiddlers\n\n# Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a batch operation on\n#* this step lets you to do a batch operation on selected tiddlers NOT all items by ''Combo search''!\n#* it is possible to select/deselect all tiddlers from ''Combo search'' result at once! Note that, by default all tiddlers are considered for bulk operation until  selective operation is activated!\n# From ''Batch operations tabs'' select the batch operation you wish to perform on selected tiddlers\n#* example: title, tag, and field operations\n#* example: Snr operation\n#* Inspect tab can be used to inspect tiddlers before or after performing operations\n\n* Notes:\n** Multiple batch operations can be done on the same set (unless you change something in the search criteria)\n** Sometimes it is useful to use an intermediate batch to help, like tag tiddlers with a \"working\" tag, using multiple searches, then then use the \"working\" tag to apply a batch operation to\n\n<div class=\"commander-alert\">''Note'': For good operation a tiddler width of 800px is recommended. You can also use //Sidebar layout// as `Fluid story`.</div>\n\n\nFor detailed docummention go to [[Demo page|https://kookma.github.io/TW-Commander/]]\n\n!!! Footenote\n# [[Use filter expression|https://tiddlywiki.com/prerelease/#Filters:Filters%20%5B%5BFilter%20Expression%5D%5D%20%5B%5BFilter%20Syntax%5D%5D%20%5B%5BFilter%20Operators%5D%5D%20%5B%5BFilter%20Parameter%5D%5D%20%5B%5BFilter%20Run%5D%5D%20%5B%5BFilter%20Step%5D%5D%20%5B%5BFilter%20Whitespace%5D%5D]]"},"$:/plugins/kookma/commander/help/uicomp/regular-expression":{"title":"$:/plugins/kookma/commander/help/uicomp/regular-expression","caption":"Regular expressions","created":"20190314084511720","list-after":"$:/plugins/kookma/commander/help/uicomp/snr","modified":"20200325093450357","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Regular Expressions Quick Reference\n\n|''FLAGS'' |<|<|h\n| i |ignore case|case insensitive matching|\n|   |whole words|match strings of a-z, 0-9 and _|\n| g |global|field start=^, field end=$, all matches|\n| m |multi-line|line start=^, line end=$, first match|\n|   |first match|field start=^, field end=$, first match|\n|''MATCH'' |<|<|h\n|''Anchors''|<|<|\n| ^ |start of scope|see Flags, match is zero length|\n| $ |end of scope|see Flags, match is zero length|\n| \\b |word boundary|anchor to edge of word, zero length|\n| \\B |not word boundary|anchor inside word, zero length|\n|''Character Classes''|<|<|\n| [c] |class of characters|any one matches, e.g. [abc123]|\n| [^c] |negated class of characters|any one doesn't match, e.g. [^abc123]|\n|''Shorthand Character Classes''|<|<|\n| . |any character except newline|same as [^\\n]|\n| \\d |decimal|same as [0-9]|\n| \\D |not decimal|same as [^0-9]|\n| \\s |white-space|same as [\\ \\t\\n]|\n| \\S |not white-space|same as [^\\ \\t\\n]|\n| \\t |tab|same as [\\t]|\n| \\n |newline|same as [\\n]|\n| \\w |word character|same as [a-zA-Z0-9_]|\n| \\W |not word character|same as [^a-zA-Z0-9_]|\n|''Capturing Groups''|<|<|\n| (match) |match placed in variable $x|can be used in Replace|\n| (\\x) |repeats match pattern of $x|can be used in Replace|\n|''Quantifiers''|<|<|\n| ? |single match|match 0 or 1 time|\n| * |greedy match 0+|match 0 or as many times as possible|\n| *? |lazy match 0+|match 0 or as few times as possible|\n| + |greedy match 1+|match 1 or as many times as possible|\n| +? |lazy match 1+|match 1 or as few times as possible|\n| {x} |match x times|match x times|\n| {x,y} |match x to y times|match x times to exactly y times|\n| {x,} |match x or more times|match x times or as many as possible|\n|''Escapes''|<|<|\n| \\ |escape special characters|add to \\ [  ] ( ) { } ^ $ . ?  *  + for literals|\n|''REPLACE'' |<|<|h\n| $& |return the full match|<|\n| $x |return $x where x is the numeric index of a Capturing Group|<|\n|''NOTE'' |<|<|h\n|This Reference supports most ordinary uses of regular expressions.<br> For advanced options: [[MDN Reference|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Using_simple_patterns]]; examples: [[regular-expressions.info|https://www.regular-expressions.info/tutorial.html]].|<|<|\n\n"},"$:/plugins/kookma/commander/help/uicomp/relink":{"title":"$:/plugins/kookma/commander/help/uicomp/relink","caption":"Relink on rename","created":"20190912052826269","list-after":"$:/plugins/kookma/commander/help/uicomp/regular-expression","modified":"20200325093202388","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Relink on rename\nWhen Tiddler Commander is used to rename bulk tiddlers in operation like\n\n* Title operation\n** add/remove prefix\n** add/remove suffix\n** remove chars from the begining or end of title\n* ~SnR\n** Search and replace in tiddlers title\n\nIt is possible to update all links to title. This includes //tags// and //list//. If [[Relink|https://flibbles.github.io/tw5-relink/]] plugin is installed, then not only title will be updated in //tags// and //list// field, but also in all filters, transclusions, text field and evrywhere.\n\n<div class=\"commander-alert\"> ''Note'': Relink does not update all forms of title e.g those created from different segments, but it will update any occurances</div>\n\n\n!! How to integrate with ''Relink''?\n\nSimply install the [[Relink|https://flibbles.github.io/tw5-relink/]] plugin and it will be appeared as an option when Tiddler Commander title operations including ~SnR are performed!\n"},"$:/plugins/kookma/commander/help/uicomp/snr":{"title":"$:/plugins/kookma/commander/help/uicomp/snr","caption":"Search-n-Replace","created":"20190307104654008","list-after":"$:/plugins/kookma/commander/help/uicomp/quick-tutorial","modified":"20200925143424505","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Search and replace using Snr\nSnr stands for search and replace, is a powerful tool uses regular expression for searching all fields and lets replace chars, words, phrases with new values.\n\n!! How to use\n* Enter a search filter or keywords in ''Combo search'' box like `[tag[myTag]]` or `concept`\n* Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a Snr operation on\n** If selective operation is unchecked, all tiddlers from step one will be included in Snr operation.\n* From ''Tiddler title'' drop down menu select a tiddler\n* From ''Field name'' drop down menu select a tiddler field like `text`\n** all fileds even `title` can be selected\n* In the ''Search text'' type the search term for example `this`\n* In the ''Replace with'' type the term you want to replace with like `that`\n* Check the ''Differences'' and if you are satisfied with the result, press the `Replace?` button\n* You can press `Replace all?` if you want to search and replace in all selected tiddlers\n\n;Remarks\n: The `Replace all?` lets you to search and replace in all selected tiddlers at once! It is possible to search and replace even in `title` field!\n\n<$list filter=\"[[snr.png]is[tiddler]]\"><<image-pretty img:\"snr.png\" width:\"60%\" align:\"center\" caption:\"Fig 1. Search and replace using regular expression\">></$list>\n\n!! Special characters\n<<<\nAs `SNR` uses ''regexp'' pattern to make search and replace, when special characters are used in the ''Search text'' box, they shall be escaped among them are `*`, `+`, `[]`, `?` ...\nTo use these characters do like below\n\n```\n\\[ \\] \\( \\) \\{ \\} \\. \\* \\+ \\? \\^ \\$ \\\\ \\|\n```\n<<<\n\n!! Warning\n<<<\n* SNR replace the contents of tiddlers.<br> ''//The action can not be undone//''. So always make a backup before performing any replace action\n<<<"},"$:/plugins/kookma/commander/help/uicomp/warning":{"title":"$:/plugins/kookma/commander/help/uicomp/warning","caption":"Warning","created":"20200325092841002","list-after":"$:/plugins/kookma/commander/help/uicomp/relink","modified":"20200325093538187","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":";Note i\n:Tiddler Commander is a very powerful tool, it can change any field in any tiddler.// Make sure what you are doing//!\n\n;Note ii\n:Tiddler Commander uses two steps tiddler selection. It uses a combo search box to screen (using standard or filter search) possible tiddlers and then uses a selective list of tiddlers from first step for batch operation!\n:# If selective operation is unchecked, then all tiddlers from step one are used for batch operation\n:# If selective operation is checked, then user has to manually select among tiddlers, and the selected ones are used for batch operation \n\n;Note iii\n://Commander do not perform operation on shadow tiddlers//, unless they are overriden. Because shadow tiddlers aren’t stored as ''real'' tiddlers. They are intentionally excluded from most operations by default so that they don’t clutter filters made by users unless explicitly required. \n\n<div class=\"commander-alert\">''Warning''\nBefore using Tiddler commander for bulk operation on your own valuable, irreplaceable data, ''backup them''.\n</div>"},"$:/plugins/kookma/commander/history":{"title":"$:/plugins/kookma/commander/history","created":"20200324061906253","modified":"20200325105816374","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log  https://kookma.github.io/TW-Commander/#ChangeLog\n\n* ''2.1.0'' -- 2020.03.25 -- stable release\n* ''0.1.0'' -- 2019.02.12 -- mature public release\n"},"$:/plugins/kookma/commander/images/file-alt.svg":{"title":"$:/plugins/kookma/commander/images/file-alt.svg","caption":"file-alt (Regular)","created":"20190724144859943","modified":"20201002120229934","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-file-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 384 512\"><path d=\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"/></svg>"},"$:/plugins/kookma/commander/inspect/comp/edit-fileds":{"title":"$:/plugins/kookma/commander/inspect/comp/edit-fileds","created":"20190313061511585","modified":"20200325055328517","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}] \n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button class=\"cmd-btn\">\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button class=\"cmd-btn\">\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n\\define compInspect-edit-fileds(commonFields:\"\")\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n\n\n<$list filter=\"created creator modified modifier -[enlist<__commonFields__>]\" variable=\"currentField\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n\n\n\n\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/edit-preview":{"title":"$:/plugins/kookma/commander/inspect/comp/edit-preview","created":"20200115050859257","modified":"20200325055328524","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect-edit-preview(tiddler, commonFields:\"\")\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">title:</td>\n<td class=\"tc-edit-field-value\"><$link to=<<__tiddler__>> ><$text text=<<__tiddler__>> /></$link></td>\n</tr>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">tags:</td>\n<td class=\"tc-edit-field-value\">{{$tiddler$||$:/core/ui/EditTemplate/tags}}</td>\n</tr>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">text:</td>\n<td class=\"tc-edit-field-value\"><$macrocall $name=compInspect-get-field tiddler=<<__tiddler__>>  field=\"text\" tag=\"textarea\" /></td>\n</tr>\n</tbody>\n</table>\n</div>\n\n<$tiddler tiddler=<<__tiddler__>> >\n<$macrocall $name=\"compInspect-edit-fileds\" commonFields=<<__commonFields__>> />\n</$tiddler>\n\\end\n\n\\define compInspect-get-field(tiddler, field, tag:\"input\") \n<$edit-text class=\"tc-edit-texteditor\" tiddler=<<__tiddler__>> field=<<__field__>> tag=<<__tag__>> default=\"\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/main":{"title":"$:/plugins/kookma/commander/inspect/comp/main","created":"20190308151331101","modified":"20200325055328536","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect(filter, stateTiddler:\"thisTiddler\")\n<$set name=\"state\" \n      value={{{ [[$:/state/compInspect/]addsuffix<__stateTiddler__>]    }}} >\n<$vars\n   slStateTid={{{ [<state>addsuffix[/]addsuffix[selectState-tiddler]]   }}}\n   rvStateTid={{{ [<state>addsuffix[/]addsuffix[revealState-tiddler]]   }}}\n   chStateTid={{{ [<state>addsuffix[/]addsuffix[checkboxState-tiddler]] }}} >\n\nSelect tiddler &nbsp;<$macrocall $name=compSelect filter=<<__filter__>> stateTiddler=<<slStateTid>> />\n&nbsp;&nbsp;\n<$macrocall $name=\"check-common-fields\" stateTiddler=<<chStateTid>> />\n&nbsp;&nbsp;\n<$reveal stateTitle=<<rvStateTid>> type=\"nomatch\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<rvStateTid>> setTo=\"edit\" tooltip=\"edit tiddler\">{{$:/core/images/edit-button}}</$button>\n<$macrocall $name=compInspect-show-preview tiddler={{{ [<slStateTid>get[text]]+[subfilter<__filter__>] }}}  commonFields={{{ [<chStateTid>get[text]] }}}/>\n</$reveal>\n<$reveal stateTitle=<<rvStateTid>> type=\"match\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<rvStateTid>> setTo=\"\" tooltip=\"confirm changes\">{{$:/core/images/done-button}}</$button>\n<$macrocall $name=compInspect-edit-preview tiddler={{{ [<slStateTid>get[text]]+[subfilter<__filter__>] }}}  commonFields={{{ [<chStateTid>get[text]] }}}/>\n</$reveal>\n\n</$vars>\n</$set>\n\\end\n\n\\define check-common-fields(stateTiddler)\n<$vars commonFields={{{[<commonFieldsTid>get[text]]}}}>\n<$checkbox \n tiddler=<<__stateTiddler__>>\n field=\"text\" \n checked=<<commonFields>>\n unchecked=\"\"\n default=\"\"\n> Exclude common fields?</$checkbox>\n</$vars>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/select":{"title":"$:/plugins/kookma/commander/inspect/comp/select","created":"20190308070713468","modified":"20200325055328546","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compSelect(filter:\"\", stateTiddler:\"\", default:\"\", class:\"\", showButtons:\"show\")\n<$select tiddler=<<__stateTiddler__>> default=<<__default__>> class=<<__class__>> >\n<option value=\"\">None</option>\n<$list filter=<<__filter__>> variable=item>\n<option value=<<item>>><$text text=<<item>> /></option>\n</$list>\n</$select>\n<$reveal type=\"match\" text=\"show\" default=<<__showButtons__>> >\n<$vars myfilter=<<__filter__>> mystateTiddler=<<__stateTiddler__>> myitem={{{ [<__stateTiddler__>get[text]] }}} >\n<$button actions=<<cs-prev-item>> class=\"cmd-btn\"> prev </$button>\n<$button actions=<<cs-next-item>> class=\"cmd-btn\"> next </$button>\n</$vars>\n</$reveal>\n\\end\n\n\\define cs-prev-item()\n<$list filter=\"[subfilter<myfilter>] +[before<myitem>]\" variable=\"prev-item\" >\n<$action-setfield $tiddler=<<mystateTiddler>> text=<<prev-item>> />\n</$list>\n\\end\n\n\\define cs-next-item()\n<$list filter=\"[subfilter<myfilter>] +[after<myitem>]\" variable=\"next-item\" >\n<$action-setfield $tiddler=<<mystateTiddler>> text=<<next-item>> />\n</$list>\n\\end\n\n<!-- used by\n - $:/plugins/kookma/commander/compInspect/main\n-->"},"$:/plugins/kookma/commander/inspect/comp/show-preview":{"title":"$:/plugins/kookma/commander/inspect/comp/show-preview","created":"20190308070953891","modified":"20200325055328553","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect-show-preview(tiddler, commonFields:\"\")\n<$vars mainFields=\"title tags text\">\n<table class=\"cmd-ci-table\">\n<tr><td class=\"leftcol\">title</td>\n<td class=\"rightcol\"><$link to=<<__tiddler__>> ><$text text=<<__tiddler__>> /></$link></td>\n</tr>\n\n<tr><td class=\"leftcol\">tags</td>\n<td style=\"padding:3px;\"><$macrocall $name=showTags tiddler=<<__tiddler__>> /></td>\n</tr>\n<tr><td class=\"leftcol\">text</td>\n<td><$transclude tiddler=<<__tiddler__>> field=\"text\" mode=\"block\"/></td>\n</tr>\n<$list filter=\"[<__tiddler__>fields[]] -[enlist<mainFields>] -[enlist<__commonFields__>]\" variable=\"otherFld\">\n<tr><td class=\"leftcol\"><<otherFld>></td>\n<td class=\"rightcol\"><$transclude tiddler=<<__tiddler__>> field=<<otherFld>> mode=\"inline\"/></td>\n</tr>\n</$list>\n</table>\n</$vars>\n\\end\n\n\\define showTags(tiddler)\n<$list filter=\"[<__tiddler__>tags[]]\" variable=tagItem >\n<$macrocall $name=tag tag=<<tagItem>> />\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/inspect/ui":{"title":"$:/plugins/kookma/commander/inspect/ui","caption":"Inspect","created":"20190313075823496","list-after":"$:/plugins/kookma/commander/field/ui","modified":"20200325055328564","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/InspectOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\"\nclass:\"tc-vertical cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/inspect/uicomp/Inspection":{"title":"$:/plugins/kookma/commander/inspect/uicomp/Inspection","caption":"Inspect","created":"20190313080119081","modified":"20200325055328571","tags":"$:/tags/Commander/InspectOps","type":"text/vnd.tiddlywiki","text":"<$macrocall \n $name=compInspect\n filter=<<searchfilter>>\n stateTiddler=\"commander\"\n/>"},"$:/plugins/kookma/commander/license":{"title":"$:/plugins/kookma/commander/license","created":"20200324061906254","modified":"20200324061959559","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/commander/log/ui":{"title":"$:/plugins/kookma/commander/log/ui","caption":"Log status","created":"20190221152805807","modified":"20200324070652656","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"commander-alert\" style=\"padding:5px;font-size:0.90em;\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<<delete-all-log-tiddlers>>>Clear log</$button>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[tag[$:/tags/Commander/LogOps]]\" />\"\"\">\n<div class=\"tc-search-results\">\n<span class=\"kk-commander-log-note\">Recent number of operations: <<resultCount>></span><br>\n<$list filter=\"[tag[$:/tags/Commander/LogOps]] +[!sort[created]]\" variable=\"logTid\">\n<b><$view tiddler=<<logTid>> field=\"created\" format=\"date\" template=\"YYYY-0MM-0DD 0hh:0mm:0ss\"/>  \n<$view tiddler=<<logTid>> field=\"caption\">\n   <$view tiddler=<<logTid>> field=\"title\"></$view>\n</$view>\n</b>\n<ol><$list filter=\"[<logTid>indexes[]]\" variable=\"item\">\n<li><$link to=<<item>>><<item>></$link>\n<$set name=\"myItem\" tiddler=<<logTid>> index=<<item>> >\n<$list filter=\"[<myItem>!search[existed]]\" variable=\"ignore\" \n  emptyMessage=\"\"\"<span style=\"color:red;\"><<myItem>></span>\"\"\" >\n<span class=\"kk-commander-log-item\"><<myItem>></span>\n</$list>\n</$set>\n</li>\n</$list></ol>\n</$list>\n</div>\n</$set>\n</div>"},"$:/plugins/kookma/commander/macros/compConfirmAction":{"title":"$:/plugins/kookma/commander/macros/compConfirmAction","created":"20190301145916990","modified":"20200324070652662","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compConfirmAction(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\"\ncountFilter:\"\", \nactionMacro:\"\")\n<$set name=resultCount value={{{ [subfilter<__countFilter__>count[]] }}} >\n<$reveal type=\"gt\" text=\"0\" default=<<resultCount>> >\n<$button popup=<<qualify \"\"\"$stateTiddler$\"\"\">> class=\"cmd-btn\">$btnLabel$</$button>\n</$reveal>\n<$reveal state=<<qualify \"\"\"$stateTiddler$\"\"\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n$confirmMessage$ <<resultCount>> tiddler(s)?\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"cmd-btn\"> $btnLabel$\n<$macrocall $name=<<__actionMacro__>> />\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/commander/macros/definition":{"title":"$:/plugins/kookma/commander/macros/definition","created":"20200102195320611","description":"some macro are not used REMOVE THEM","modified":"20200325055328579","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define tempPath()        $:/temp/commander\n\n\\define searchboxTid()    $(tempPath)$/search-box\n\\define selectiveOpsTid() $(tempPath)$/selective-operation\n\n\n\\define workingTag()      $:/tags/Commander/Working\n\\define exportTagTid()    $:/temp/commander/exportTag\n\\define systemFieldsTid() $:/plugins/kookma/commander/config/systemfields\n\\define commonFieldsTid() $:/plugins/kookma/commander/config/commonfields"},"$:/plugins/kookma/commander/macros/logging":{"title":"$:/plugins/kookma/commander/macros/logging","created":"20190221163406469","modified":"20200325055356563","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define set-title() $:/temp/commander/logs/tid-{{{[tag[$:/tags/Commander/LogOps]count[]add[1]]}}}\n\n\\define create-log-tiddler(msg)\n<$wikify name=\"myTitle\" text=\"\"\"<<set-title>>\"\"\">\n<$wikify name=\"myCaption\" text=\"\"\"<$macrocall $name=\"set-caption\" msg=<<__msg__>> />\"\"\">\n<$action-createtiddler $basetitle=<<myTitle>>\n$savetitle=\"$:/state/commander/log-tiddler\"\ntags=\"$:/tags/Commander/LogOps\"\ntype=\"application/json\"\ncaption=<<__msg__>>\n/>\n</$wikify>\n</$wikify>\n\\end\n\n\\define log-add-single-operation(msg:\"commander operation\", tidItem:\"no item\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<__tidItem__>> $value=<<__msg__>> />\n\\end\n\n\n\\define delete-all-log-tiddlers()\n<$action-deletetiddler $filter=\"[tag[$:/tags/Commander/LogOps]]\" />\n\\end"},"$:/plugins/kookma/commander/macros/remove-workingtag":{"title":"$:/plugins/kookma/commander/macros/remove-workingtag","created":"20200103172259595","modified":"20200325055328597","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define remove-working-tag(oldTag)\n<$list filter=\"[all[shadows+tiddlers]tag<workingTag>limit[1]]\" variable=ignore>\n<<create-log-tiddler \"remove-workingTag\">>\n<$list filter=\"[all[shadows+tiddlers]tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"working tag `$oldTag$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n\\end\n\n\n"},"$:/plugins/kookma/commander/macros/slider":{"title":"$:/plugins/kookma/commander/macros/slider","created":"20200105085554618","modified":"20200325065829776","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define commander-slider(title, default:\"closed\")\n<$set name=\"revealState\" value=<<qualify \"$:/state/commander/reveal/$title$\">>>\n<h2>\n  <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$default$\">\n    <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n      {{$:/core/images/right-arrow}}\n    </$button>\n  </$reveal>\n  <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$default$\">\n    <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n      {{$:/core/images/down-arrow}}\n    </$button>\n  </$reveal>\n  <$view tiddler=\"$title$\" field=\"caption\">\n    <$view tiddler=\"$title$\" field=\"title\"></$view>\n  </$view>\n  \n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$default$\">\n<$transclude tiddler=\"$title$\" mode=\"block\" />\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/commander/macros/utility":{"title":"$:/plugins/kookma/commander/macros/utility","created":"20190315092752816","modified":"20200325055356631","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define display(label,text)\n<$set name=\"stateTid\" value=\"$:/temp/commander/display/popup/$label$\" >\n<$button popup=<<stateTid>> class=\"tc-btn-invisible\"><span style=\"text-decoration: underline\">$label$</span></$button>\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<stateTid>> animate=\"yes\">\n<span style=\"color:blue;\"><$text text=<<__text__>> /></span></$reveal>\n</$set>\n\\end\n\n\\define is-filterSeearch-newer-than-selectedTitles(TidA, TidB)\n<$set name=\"tidAMod\" value={{{ [[$TidA$]get[modified]] }}}>\n<$set name=\"tidBMod\" value={{{ [[$TidB$]get[modified]] }}}>\n<$set name=\"tidAText\" value={{{ [[$TidA$]get[text]] }}}>\n<$set name=\"tidBText\" value={{{ [[$TidB$]get[text]] }}}>\n<$list filter=\"[<__TidB__>get[text]minlength[1]]\" variable=ignore>\n<$reveal type=\"nomatch\" default=<<tidAText>> text=<<tidBText>>>\n<$list filter=\"[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidBMod>]\">\nA new filter search has been detected, click on the search button to apply it.\n</$list>\n</$reveal>\n</$list>\n</$set>\n</$set>\n</$set>\n</$set>\n\\end\n\n!!Remarks\n;is-filterSeearch-newer-than-selectedTitles\n* Checks `TidA` and `TidB` for modified date and text\n* If They are not empty, then\n** checks if the text of two are equal, if not\n** checks to see if `TidB` is newer or not\n** if newer shows a message, to apply the new search filter\n* Note\n** `TidA=\"$:/temp/commander\"`\n** `TidB=\"$:/temp/commander/search-box\"`\n* is-filterSeearch-newer-than-selectedTitles is called from $:/plugins/kookma/commander/search/ui\n\n;display\n* gets a label and a text\n* create an inline label\n* on click label, the text is displayed as temporary popup\n* losing focus, the text goes hidden\n* this macro is used in customized compSelective to show the active filter"},"$:/plugins/kookma/commander/readme":{"title":"$:/plugins/kookma/commander/readme","created":"20200324061906254","modified":"20201002120229880","tags":"","type":"text/vnd.tiddlywiki","text":"<style>\n.cmd-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n</style>\n; Tiddler Commander\nTiddler Commander, in short ''Commander'' is a unique tool for batch operations on tiddlers. Commander has the below features\n\n* Bulk tiddler creation/deletion\n* Combo search to filter and select tiddlers\n* Title operation: add, remove prefixes and suffixes, also remove cahras form begining and end of title (on renaming tiddlers, [[relink|$:/plugins/kookma/commander/help/uicomp/relink]] can be used to update title in other tiddlers)\n* Tag operation: add, remove, replace\n* Field operation: add, remove, rename, and set field value\n* SNR, search and replace in all fields including text, tags, //title//, and common fields\n* Inspect, to review and inspect tiddlers in one place, scroll among them and edit all fields (including common fields), tags, text (title is an exception!)\n* Log, create logs of all operations\n* Search, //save and load// any combination of filter search\n\n; Start Commander\n* Normally Commander adds its icon: <span class=\"cmd-doc\">{{$:/plugins/kookma/commander/images/file-alt.svg}}</span> to page controls.\n* Open the right sidebar and click on the  <span class=\"cmd-doc\">{{$:/plugins/kookma/commander/images/file-alt.svg}}</span> Commander is started\n*  In standard Tiddlywiki, control buttons are shown on the right sidebar under site title.\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Commander/\n* Code: https://github.com/kookma/TW-Commander\n"},"$:/plugins/kookma/commander/search/filter-button/clear":{"title":"$:/plugins/kookma/commander/search/filter-button/clear","created":"20190214132946159","list-after":"$:/plugins/kookma/commander/search/filter-button/search","modified":"20200325055356645","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<$reveal  type=\"nomatch\" stateTitle=<<searchboxTid>> stateField=\"text\" text=\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"clear search box and selected tiddlers\">\n<$action-setfield $tiddler=<<searchboxTid>> $field=\"text\" $value=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/commander\" $field=\"text\" $value=\"\"/>\n<$action-setfield $tiddler=\"$:/state/commander/snr/select-tiddler\" $field=\"text\" $value=\"\"/><!-- SNR selection -->\n<$action-setfield $tiddler=\"$:/state/compInspect/temp/commander/selectState-tiddler\" $field=\"text\" $value=\"\"/> <!-- Inspect selection -->\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<!--\nthere is extra action should be removed\n-->"},"$:/plugins/kookma/commander/search/filter-button/dropdown":{"title":"$:/plugins/kookma/commander/search/filter-button/dropdown","created":"20190214133424013","modified":"20200325055328632","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/commander/filterDropdown\">> class=\"tc-btn-invisible\" tooltip=\"select a search filter\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/commander/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<searchboxTid>> >\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Commander/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>"},"$:/plugins/kookma/commander/search/filter-button/save":{"title":"$:/plugins/kookma/commander/search/filter-button/save","created":"20190214141644228","list-after":"$:/plugins/kookma/commander/search/filter-button/clear","modified":"20200325055356657","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<$reveal  type=\"nomatch\" stateTitle=<<searchboxTid>> stateField=\"text\" text=\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"save current search\" popup=<<qualify \"$:/state/commander/SaveDropdown\">> >\n{{$:/core/images/file}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/commander/SaveDropdown\">> type=\"popup\" class=\"tc-popup-keep\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\nSave new search filter<br><br>\n<$edit-text\ntiddler=\"$:/temp/commander/save-new-filter\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\"description for new filter\"\n/> <br><br>\n\n<$button class=\"tc-btn\"> Save new filter\n<$macrocall $name=\"create-new-filter\" \n  description={{$:/temp/commander/save-new-filter}} \n\tbasetitle=\"$:/plugins/kookma/commander/filters/yourFilter\"  \n\tfilter={{{[<searchboxTid>get[text]]}}} \t/>\n<$action-deletetiddler $tiddler=\"$:/temp/commander/save-new-filter\"/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/commander/SaveDropdown\">> />\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\n<!-- ToDO\ncorrect classes for textbox\n-->"},"$:/plugins/kookma/commander/search/macros/create-new-filter":{"title":"$:/plugins/kookma/commander/search/macros/create-new-filter","created":"20190214142032323","modified":"20200325055356665","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define create-new-filter(description:\"\", basetitle:\"\", filter:\"\")\n<$list filter=\"[<__description__>!is[blank]]\" variable=\"ignore\">\n<$action-createtiddler \n    $basetitle=\"\"\"$basetitle$\"\"\"\n    tags=\"$:/tags/Commander/Filter\"\n    description=<<__description__>>\n    filter=\"\"\"$filter$\"\"\"\n  /> \n</$list>\n\\end\n"},"$:/plugins/kookma/commander/search/macros/select-deselect":{"title":"$:/plugins/kookma/commander/search/macros/select-deselect","created":"20200106121946448","modified":"20200325055328657","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define select-all()\n<$list filter=\"[subfilter<filtertext>!is[missing]!tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n\\end\n\n\\define deselect-all()\n<$list filter=\"[tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n\\end"},"$:/plugins/kookma/commander/search/macros/warning":{"title":"$:/plugins/kookma/commander/search/macros/warning","created":"20200106143244633","modified":"20200325055328672","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define warn-for-selectedTids-from-previous-operation()\n<$list filter=\"[tag<workingTag>]-[subfilter<filtertext>]+[count[]!match[0]] \">\n<span style=\"color:red;font-size:0.85em\">There are remained selected tiddlers from previous search! Remove them by pressing ''deselect all''!</span>\n</$list>\n\\end"},"$:/plugins/kookma/commander/search/selection":{"title":"$:/plugins/kookma/commander/search/selection","caption":"Select tiddlers","created":"20190725144912018","modified":"20200325055328684","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n<$checkbox tiddler=<<selectiveOpsTid>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\" uncheckactions=<<deselect-all>> > Selective operation?</$checkbox>\n\n<$reveal type=\"nomatch\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\" class=\"kk-commander-tiddler-list  kk-commander-columns3\">\n<$list filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\"><$link/><br></$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\">\n<$button actions=<<select-all>> > Select all</$button> <$button actions=<<deselect-all>> > Deselect all</$button>\n<small style=\"margin-left:10px;\">Number of tiddlers selected: <$count filter=\"[tag<workingTag>]\" /></small><br>\n<<warn-for-selectedTids-from-previous-operation>>\n</$reveal>\n\n\n<$reveal type=\"match\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\" class=\"kk-commander-tiddler-list  kk-commander-columns3\">\n<$list filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\">\n<$checkbox tag=<<workingTag>>> <$link/></$checkbox><br>\n</$list>\n</$reveal>\n\n<!-- Description\nThis tiddler implement interface to selectivly add tiddlers for commander operations.\nEach selected tiddler gets a working tag\n-->"},"$:/plugins/kookma/commander/search/ui":{"title":"$:/plugins/kookma/commander/search/ui","caption":"Commander filter search","created":"20190212055219117","modified":"20200325055356672","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n<!-- above statement is not required and only prevent this tiddler overwritten when this is opened by its own -->\n<div class=\"tc-search tc-advanced-search\" style=\"margin-bottom:-12px;\"><!-- negative margin for displaying matches -->\nCombo search &nbsp;<$edit-text tiddler=<<searchboxTid>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"enter keywords or make a filter search e.g. [tag[myTag]]\" focus={{$:/plugins/kookma/commander/config/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Commander/Search/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>"},"$:/plugins/kookma/commander/setting/ui":{"title":"$:/plugins/kookma/commander/setting/ui","caption":"Setting","created":"20190214140835173","icon":"$:/core/images/options-button","list-after":"$:/plugins/kookma/commander/inspect/ui","modified":"20200324070652760","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/Setting]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/setting/uicomp/snr\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers":{"title":"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers","caption":"Temporary tiddlers","created":"20190301184304348","list-after":"$:/plugins/kookma/commander/setting/uicomp/relink","modified":"20200325055328690","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"\\define delete-all-temps()\n<$action-deletetiddler $filter=\"[search:title[$:/temp/commander/]]\" />\n\\end\n\n<$set name=numTids value={{{ [search:title[$:/temp/commander/]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo temporary tiddlers is existed to delete!\n</$reveal>\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\nNumber of temporary tiddlers (including log tiddlers): <<numTids>><br>\n</$reveal>\n</$set>\n\n<$macrocall $name=\"compConfirmAction\"\nbtnLabel=\"Delete temp tiddlers\" \nconfirmMessage=\"Are you sure you wish to delete\"\nstateTiddler=\"$:/state/commander/setting/delete-temps\"\ncountFilter=\"[search:title[$:/temp/commander/]]\"\nactionMacro=\"delete-all-temps\"/>"},"$:/plugins/kookma/commander/setting/uicomp/minlength":{"title":"$:/plugins/kookma/commander/setting/uicomp/minlength","caption":"Search minimum length","created":"20200110132540295","modified":"20200324070652774","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"Controls the minimum length of a search string before results are displayed.\n\n<label class=\"kk-cmd-label\">Minlength</label><$edit-text tiddler=\"$:/plugins/kookma/commander/config/minlength\" field=text default=3 placeholder=\"enter a number\" tag=input/>"},"$:/plugins/kookma/commander/setting/uicomp/search-filters":{"title":"$:/plugins/kookma/commander/setting/uicomp/search-filters","caption":"Search filter","created":"20200116114041370","modified":"20200325055328703","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"The below list shows the Commander search filter. To edit click on the link and edit tiddler for filter syntax or description\n\n<details>\n<summary>Commander saved filter search</summary>\n<dl>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Commander/Filter]]\" >\n<dt><$link/></dt>\n<dd><span style=\"display:inline-block;font-weight:700;width:100px\">Description:</span><$view field=\"description\"/></dd>\n<dd><span style=\"display:inline-block;font-weight:700;width:100px\">Filter:</span><$view field=\"filter\"/></dd>\n</$list>\n</dl>\n</details>"},"$:/plugins/kookma/commander/setting/uicomp/snr":{"title":"$:/plugins/kookma/commander/setting/uicomp/snr","caption":"Snr setting","created":"20190324051157188","modified":"20200324070652789","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"<<snr-difftext-cleanup>>\n<div style=\"padding-left:25px;font-size:0.9em\">\n\nThe cleanup attribute determines which optional post-processing should be applied to the diffs:\n\n* none: no cleanup is performed\n* semantic (default): rewrites the diffs for human readability\n* efficient: rewrites the diffs to minimise the number of operations for subsequent processing\n</div>"},"$:/plugins/kookma/commander/snr/macros/actions":{"title":"$:/plugins/kookma/commander/snr/macros/actions","created":"20190307164924193","modified":"20200325055328711","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define regexp-flags()\n{{$:/state/commander/snr/gm}}{{$:/state/commander/snr/case-sensitive}}{{$:/state/commander/snr/unicode}}\n\\end\n\n\\define snr-ui-show-diffs()\n<form class=\"cmd-snr-form\" style=\"width:100%;\">\n  <fieldset>\n   <legend style=\"color:#FF0000;\">Differences</legend>\nTiddler: <$link to={{$:/state/commander/snr/select-tiddler}}><$text text={{$:/state/commander/snr/select-tiddler}}/></$link>\n\n<$wikify name=flags text=<<regexp-flags>> >\n\n<$macrocall $name=\"replace-text-diff\" \n tiddler={{$:/state/commander/snr/select-tiddler}} \n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\n\n</$wikify>\n</fieldset>\n</form>\n\\end\n\n\\define snr-check-diffs(tiddler:\"\", field:\"\")\n\\whitespace trim\n<$wikify name=flags text=<<regexp-flags>> >\n<$wikify name=\"result\" text=\"\"\"\n<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>>\n field=<<__field__>>\n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\"\"\">\n<$reveal type=\"match\" text={{{ [<__tiddler__>get<__field__>] }}} default=<<result>> >\nsame\n</$reveal>\n<$reveal type=\"nomatch\" text={{{ [<__tiddler__>get<__field__>] }}} default=<<result>> >\ndifferent\n</$reveal>\n</$wikify>\n</$wikify>\n\\end\n\n\\define search-replace-in-tiddler-field(tiddler:\"\",field:\"\",replace:\"\",replaceWith:\"\")\n<$wikify name=ss text=<<snr-check-diffs \"\"\"$tiddler$\"\"\" \"\"\"$field$\"\"\">> >\n<$list filter=\"[<ss>] -same\" variable=ignore>\n<$list filter=\"[<__tiddler__>has[title]]\" variable=\"ignore\">\n<$wikify name=flags text=<<regexp-flags>> >\n<$macrocall $name=\"replace-text-button\" \n tiddler=<<__tiddler__>> \n field=<<__field__>>\n replace=<<__replace__>>\n replaceWith=<<__replaceWith__>> \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"`$field$` field has been changed\"\"\" tidItem=<<__tiddler__>> />\n<$macrocall $name=\"clear-select-tiddler-if-field-is-title\" tiddler=<<__tiddler__>>  field=<<__field__>> />\n</$wikify>\n</$list>\n</$list>\n</$wikify>\n\\end\n\n\\define clear-select-tiddler-if-field-is-title(tiddler, field)\n<$list filter=\"[<__field__>] +[search[title]]\" variable=\"ignore\">\n<$action-setfield $tiddler=\"$:/state/commander/snr/select-tiddler\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/commander/selected-titles\" $index=<<__tiddler__>> />\n</$list>\n\\end\n\n\\define search-replace-in-field-bulk()\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"SNR operation\">>\n<$list filter=\"[subfilter<searchfilter>!is[missing]]\" >\n  <$macrocall \n    $name=\"search-replace-in-tiddler-field\"\n    tiddler=<<currentTiddler>> \n    field={{$:/state/commander/snr/select-tiddler/field}} \n    replace={{$:/state/commander/snr/replace-text}} \n    replaceWith={{$:/state/commander/snr/replace-text-with}}   \n  />\n</$list>\n</$list>\n\\end\n\n\\define search-replace-in-field-single-tiddler()\n<<create-log-tiddler \"SNR operation\">>\n  <$macrocall \n    $name=\"search-replace-in-tiddler-field\"\n    tiddler={{$:/state/commander/snr/select-tiddler}}\n    field={{$:/state/commander/snr/select-tiddler/field}} \n    replace={{$:/state/commander/snr/replace-text}} \n    replaceWith={{$:/state/commander/snr/replace-text-with}}   \n  />\n\\end\n\n\\define snr-actions()\n<$button actions=<<search-replace-in-field-single-tiddler>> tooltip=\"search and replace in a single tiddler\" class=\"cmd-btn\">\nReplace?\n</$button>&nbsp;\n<!-- replace in bulk tiddler with confirmation -->\n<$macrocall $name=\"compConfirmAction\"\ncountFilter=<<searchfilter>>\nactionMacro=\"search-replace-in-field-bulk\"\nstateTiddler=\"$:/state/commander/SelectiveReplaceAllDropdown\"\nconfirmMessage=\"Are you sure you wish to replace text in\" \nbtnLabel=\"Replace all?\"/>\n\\end"},"$:/plugins/kookma/commander/snr/macros/inputs":{"title":"$:/plugins/kookma/commander/snr/macros/inputs","created":"20190306203626597","modified":"20200325055328720","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define snr-ui-inputs()\n<form class=\"cmd-snr-form\">\n  <fieldset>\n   <legend>Search and Replace</legend>\n\n<div class=\"item\">\n<label>Tiddler title</label>\n<$select tiddler=\"$:/state/commander/snr/select-tiddler\" default=\"\" class=\"cmd-snr-textbox\">\n<option value=\"\">None</option>\n<$list filter=\"[subfilter<searchfilter>]\" >\n<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>\n</$list>\n</$select>\n</div>\n\n<div class=\"item\">\n<label>Field name</label>\n<$select tiddler=\"$:/state/commander/snr/select-tiddler/field\" default=\"text\">\n<$list filter=\"[subfilter<searchfilter>fields[]]\">\n<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>\n</$list>\n</$select>\n</div>\n\n<div class=\"item\">\n<label>Search text</label>\n<$edit-text \n   tiddler=\"$:/state/commander/snr/replace-text\" \n   tag=\"input\" \n   default=\"\" \n   placeholder=\" text to replace\"\n class=\"cmd-snr-textbox\"/>\n</div>\n\n<div class=\"item\">\n<label>Replace with </label>\n<$edit-text \n   tiddler=\"$:/state/commander/snr/replace-text-with\" \n   tag=\"input\" \n   default=\"\" \n   placeholder=\" new text\"\n   class=\"cmd-snr-textbox\"/>\n</div>\n<!-- Use relink to update titles -->\n<$list filter=\"[[$:/state/commander/snr/select-tiddler/field]get[text]match[title]]\" variable=ignore>\n<div class=\"item-relink\">{{$:/plugins/kookma/commander/config/relink}}</div>\n</$list>\n</fieldset>\n</form>\n\n\n\\end"},"$:/plugins/kookma/commander/snr/macros/regexp-flags":{"title":"$:/plugins/kookma/commander/snr/macros/regexp-flags","created":"20190306182052441","modified":"20200325055328730","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define snr-regexp-flags()\n\n<form class=\"cmd-snr-form\">\n<fieldset>\n<legend>Search flags</legend>\n\n<$checkbox \n  tiddler=\"$:/state/commander/snr/case-sensitive\" \n  field=\"text\" \n  checked=\"i\" \n  unchecked=\"\"\n/>&nbsp; ignore case<br>\n\n<$checkbox \n  tiddler=\"$:/state/commander/snr/whole-words\" \n  field=\"text\" \n  checked=\"words\" \n  unchecked=\"characters\"\n/>&nbsp; whole words<br>\n\n<$checkbox \n  tiddler=\"$:/state/commander/snr/unicode\" \n  field=\"text\" \n  checked=\"u\" \n  unchecked=\"\"\n/>&nbsp; unicode<br>\n\n<br>\n\n<$radio\n  tiddler=\"$:/state/commander/snr/gm\" \n  field=\"text\" \n  value=\"\">&nbsp; first match \n</$radio><br>\n\n<$radio\n  tiddler=\"$:/state/commander/snr/gm\" \n  field=\"text\" \n  value=\"g\">&nbsp; global match\n</$radio><br>\n\n<$radio\n  tiddler=\"$:/state/commander/snr/gm\" \n  field=\"text\" \n  value=\"m\">&nbsp; multiline mode\n</$radio><br>\n\n<$radio\n  tiddler=\"$:/state/commander/snr/gm\" \n  field=\"text\" \n  value=\"mg\">&nbsp; global multiline mode\n</$radio>\n\n</fieldset>\n</form>\n\\end"},"$:/plugins/kookma/commander/snr/macros/regexpsub.js":{"title":"$:/plugins/kookma/commander/snr/macros/regexpsub.js","text":"/*\\\ncreated: 20190214160253135\ntype: application/javascript\ntitle: $:/plugins/kookma/commander/snr/macros/regexpsub.js\nmodified: 20200307092210323\nmodule-type: macro\n\nMake regular expression substitutions\nDeveloped by Mark S\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n\"use strict\";\n\nexports.name = \"regexpsub\";\n\nexports.params = [\n\t{name: \"searchValue\"},\n\t{name: \"replaceValue\"},\n\t{name: \"sourceText\"},\n\t{name: \"flags\"},\n  {name: \"wholeWords\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(searchValue, replaceValue, sourceText, flags = \"gi\", wholeWords = \"characters\") {\n  \n  try {\n  \n\tvar searchText;\n    if(wholeWords.toLowerCase() === 'words'){\n    searchText = \"\\\\b\" + searchValue + \"\\\\b\";\n    } else{\n    searchText = searchValue;\n    }\n\t\t\n    searchText = new RegExp(searchText, flags);\n    return sourceText.replace(searchText,replaceValue);\n\n  } \n  catch(err) { \n    return \"ERROR IN REG EXPRESSION. YOU MAY NEED TO ESCAPE VALUES\"; \n  }\n  \n  };\n\n})();\n","created":"20190214160253135","type":"application/javascript","modified":"20200324070652819","module-type":"macro"},"$:/plugins/kookma/commander/snr/macros/replace-text":{"title":"$:/plugins/kookma/commander/snr/macros/replace-text","created":"20190227134610136","modified":"20200325055328737","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define nothing-to-replace(tiddler, field:\"text\")  \n<$diff-text source={{{ [<__tiddler__>get<__field__>] }}} dest={{{ [<__tiddler__>get<__field__>] }}} />\n\\end\n\n\\define replace-text(tiddler:\"\",field:\"text\",replace:\"\",replaceWith:\"\",flags:\"\", wholeWords:\"\")\n\\whitespace trim\n<$wikify name=\"source\" text=\"\"\"<$view tiddler=<<__tiddler__>> field=<<__field__>> mode=\"block\" format=\"text\"/>\"\"\">\n<$wikify name=\"result\" \n  text=\"\"\"<$macrocall $name=\"regexpsub\" $type=\"text/plain\" \n     sourceText=<<source>> \n     searchValue=<<__replace__>> \n     replaceValue=<<__replaceWith__>> \n     flags=<<__flags__>> \n     wholeWords=<<__wholeWords__>> />\"\"\" \n     >\n<$text text=<<result>>/>\n</$wikify>\n</$wikify>\n\\end\n\n\\define replace-text-diff(tiddler:\"\", field:\"text\", replace, replaceWith, flags:\"\", wholeWords:\"\")\n<$list filter=\"[<__tiddler__>get<__field__>minlength[1]]\" variable=null emptyMessage=\"No tiddler is selected, or tiddler is empty.\">\n<$list filter=\"[<__replace__>minlength[1]]\" variable=null emptyMessage=<<nothing-to-replace \"\"\"$tiddler$\"\"\" \"\"\"$field$\"\"\">> >\n\n<$wikify name=\"result\" \n  text=\"\"\"<$macrocall $name=\"replace-text\" \n     tiddler=<<__tiddler__>> field=<<__field__>> \n     replace=<<__replace__>> \n     replaceWith=<<__replaceWith__>> \n     flags=<<__flags__>>\n     wholeWords=<<__wholeWords__>> />\"\"\"\n  >\n<$diff-text source={{{ [<__tiddler__>get<__field__>] }}} dest=<<result>> cleanup={{$:/state/commander/snr/setting/cleanup}}/>\n</$wikify>\n\n</$list>\n</$list>\n\\end\n\n\\define replace-text-button(tiddler:\"\", field:\"text\", replace:\"\", replaceWith:\"\", flags:\"\", wholeWords:\"\")\n\\whitespace trim\n<$list filter=\"[<__tiddler__>get<__field__>minlength[1]]\" variable=null>\n<$list filter=\"[<__replace__>minlength[1]]\" variable=null>\n<$wikify name=\"result\" \n  text=\"\"\"<$macrocall $name=\"replace-text\" \n     tiddler=<<__tiddler__>> \n     field=<<__field__>> \n     replace=<<__replace__>> \n     replaceWith=<<__replaceWith__>> \n     flags=<<__flags__>>\n     wholeWords=<<__wholeWords__>> />\"\"\"\n  >\n<$reveal type=\"nomatch\" default=\"title\" text=<<__field__>> >\n <$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value=<<result>>/>\n</$reveal>\n<$reveal type=\"match\" default=\"title\" text=<<__field__>> >\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<__tiddler__>> to=<<result>> />\n</$reveal>\n</$wikify>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/snr/ui":{"title":"$:/plugins/kookma/commander/snr/ui","caption":"Snr","created":"20190220210055713","icon":"$:/core/images/gitter","list-after":"$:/plugins/kookma/commander/inspect/ui","modified":"20200324070652833","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"Search and replcae in tiddler fields!\n\n<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/SnrOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/snr/uicomp/replace-text\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n"},"$:/plugins/kookma/commander/snr/uicomp/replace-text":{"title":"$:/plugins/kookma/commander/snr/uicomp/replace-text","caption":"Search and replace","created":"20190220211138573","icon":"$:/core/images/gitter","modified":"20200325055328748","tags":"$:/tags/Commander/SnrOps","type":"text/vnd.tiddlywiki","text":"<div class=\"cmd-snr-row\">\n<div class=\"cmd-snr-double-column\">\n<<snr-ui-inputs>>\n</div>\n<div class=\"cmd-snr-column\">\n<<snr-regexp-flags>>   \n</div>\n</div>\n<<snr-ui-show-diffs>>\n<<snr-actions>>"},"$:/plugins/kookma/commander/stylesheet/alert":{"title":"$:/plugins/kookma/commander/stylesheet/alert","text":".commander-alert {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px dotted gray;\n  border-radius: 0.25rem;\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n\t\n}","created":"20190725161822490","modified":"20200325092557277","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/buttons":{"title":"$:/plugins/kookma/commander/stylesheet/buttons","text":"/**\n.cmd-btn{\n font-size:0.85em;\n font-size:300;\n color: #666666;\n background-color: #d8d8d8;\n padding: 3px 8px 3px 8px;\n border: 1px solid #a1a1a1;\n}\n**/\n\n.cmd-btn-wd{\n\twidth:20ch;\n}","created":"20190317080436103","modified":"20200324070652859","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/compInspect/table":{"title":"$:/plugins/kookma/commander/stylesheet/compInspect/table","text":"/*compInspect table*/\n.cmd-ci-table\n{border-collapse: collapse;}\n\n.cmd-ci-table .leftcol{\nwidth:20%;\nvertical-align: top;\ntext-align: right;\nbackground-color:#f0f0f0;\n}\n.cmd-ci-table .rightcol{\nwidth:650px;\n}\n","created":"20190308134702363","modified":"20200324070652871","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/new":{"title":"$:/plugins/kookma/commander/stylesheet/new","text":".kk-commander-log-note{\n\tfont-style:italic; font-size:small;\n}\n.kk-commander-log-item {\n\tcolor:green;\n}\n\n/* This is missing and I added it */\n.cmd-txt-area{\n\tmin-width:25ch;\n}\n\n.cmd-txt-area2{\n\tmin-width:50ch;\n}\n\n/* Correct this later*/\n.kk-cmd-label{\n\tdisplay:inline-block;\n\twidth:85px;\n}\n\n.kk-cmd-label2{\n\tdisplay:inline-block;\n\twidth:120px;\n}","created":"20200105140038538","modified":"20200324070652878","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/select-width":{"title":"$:/plugins/kookma/commander/stylesheet/select-width","text":".cmd-sl{\n  width:8ch;\n}\n\n.cmd-select-wd{\n  min-width:25ch;\n}\n","created":"20190218214027079","modified":"20200324070652887","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/snr/flexbox":{"title":"$:/plugins/kookma/commander/stylesheet/snr/flexbox","text":".cmd-snr-row {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  width: 100%;\n}\n.cmd-snr-column {\n  display: flex;\n  flex-direction: column;\n  flex-basis: 100%;\n  flex: 1\n}\n\n.cmd-snr-double-column {\n  display: flex;\n  flex-direction: column;\n  flex-basis: 100%;\n  flex: 2\n}\n\n@media screen and (min-width: 800px) {\n  .cmd-snr-column {\n    flex: 1\n  }\n\n  .cmd-snr-double-column {\n    flex: 2\n  }\n}","created":"20190306203517655","modified":"20200324070652893","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/snr/form":{"title":"$:/plugins/kookma/commander/stylesheet/snr/form","text":".cmd-snr-form{\n  width:100%;\n}\n\n.cmd-snr-textbox {\n  width:100%;\n  box-sizing: border-box;\n  max-width:40ch;\n  }\n\n.cmd-snr-form select, .cmd-snr-form input{\n  margin: 0.2rem;\n}\n.cmd-snr-form legend{\n  background: #f5f5f5;\n  padding: 3px 6px;\n}\n\n.cmd-snr-form { padding:20px; }\n.cmd-snr-form .item { padding: 2px; margin:2px; }\n.cmd-snr-form .item label { display:inline-block; width:100px; margin-left:5px; }\n.cmd-snr-form .item input { display:inline-block; }\n.cmd-snr-form .item select { display:inline-block; }\n\n/* only for relink checkbox on renaming tiddler */\n.cmd-snr-form .item-relink { padding: 2px; margin:2px; }\n\n     ","created":"20190306191714819","modified":"20200324070652907","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/tiddler-list":{"title":"$:/plugins/kookma/commander/stylesheet/tiddler-list","text":".kk-commander-tiddler-list {\n  font-size:small; \n\tborder-left:0.5px \n\tdotted grey;\n\tpadding-left:10px;\n\toverflow-y:auto;\n\tmax-width:100%;\n\tmax-height:$(height)$;\n}\n\n.kk-commander-columns1   { display:block; column-count:1; column-gap:1em; }\n.kk-commander-columns2   { display:block; column-count:2; column-gap:1em; }\n.kk-commander-columns3   { display:block; column-count:3; column-gap:1em; }\n.kk-commander-columns4   { display:block; column-count:4; column-gap:1em; }\n.kk-commander-columns5   { display:block; column-count:5; column-gap:1em; }","created":"20200103165931672","modified":"20200324070652922","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/tag/macros/add-remove-replace":{"title":"$:/plugins/kookma/commander/tag/macros/add-remove-replace","created":"20190212063435548","modified":"20200325055328754","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-new-tag-bulk(newTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__newTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"add-new-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>!tag<__newTag__>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__newTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"new tag `$newTag$` added\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-old-tag-bulk(oldTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"remove-old-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>tag<__oldTag__>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"old tag `$oldTag$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define replace-tag-bulk(oldTag:\"\", newTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldTag__>!is[blank]]\" variable=null>\n<$list filter=\"[<__newTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"replace-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"[<currentTiddler>tag<__oldTag__>]\" variable=ignore\n  emptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not tag `$oldTag$`. Operation ignored.//\" tidItem=<<currentTiddler>> /> \"\"\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__newTag__>> />\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>>  />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"tag `$oldTag$` replaced with `$newTag$`\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/tag/ui":{"title":"$:/plugins/kookma/commander/tag/ui","caption":"Tag","created":"20190212051852003","list-after":"$:/plugins/kookma/commander/title/ui","modified":"20200325055328765","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TagOps]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\" \nclass:\"tc-vertical cmd-tab-wd\">>\n\n"},"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags":{"title":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags","caption":"Add remove tags","created":"20190212063924640","modified":"20200325055328771","tags":"$:/tags/Commander/TagOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">New tag</label><$edit-text\ntiddler=\"$:/temp/commander/tag-add-remove/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new tag\"/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Add new tag\n<$macrocall $name=\"add-new-tag-bulk\" newTag={{$:/temp/commander/tag-add-remove/new}} />\n</$button>\n\n<label class=\"kk-cmd-label\">Old tag</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/tag-add-remove/old\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>!is[missing]tags[]sort[]]-[<workingTag>]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove old tag\n<$macrocall $name=\"remove-old-tag-bulk\" oldTag={{$:/temp/commander/tag-add-remove/old}} />\n</$button>\n\n"},"$:/plugins/kookma/commander/tag/uicomp/replace-tags":{"title":"$:/plugins/kookma/commander/tag/uicomp/replace-tags","caption":"Replace tags","created":"20190212080523588","list-after":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags","modified":"20200325055328782","tags":"$:/tags/Commander/TagOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old tag</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/replace-tags/old\" default=\"\">\n<$list filter=\"[subfilter<searchfilter>!is[missing]tags[]sort[]]-[<workingTag>]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">New tag</label><$edit-text\ntiddler=\"$:/temp/commander/replace-tags/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new tag\"\n/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Replace tag\n<$macrocall $name=\"replace-tag-bulk\" \noldTag={{$:/temp/commander/replace-tags/old}} \nnewTag={{$:/temp/commander/replace-tags/new}} />\n</$button>\n\n"},"$:/plugins/kookma/commander/template/base":{"title":"$:/plugins/kookma/commander/template/base","caption":"base","created":"20190213200622605","modified":"20200324070652960","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","text":"This is a simple one!"},"$:/plugins/kookma/commander/template/doc":{"title":"$:/plugins/kookma/commander/template/doc","caption":"documentation","created":"20190213200338381","modified":"20200324070652969","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","version":"beta","text":"!! Introduction\n<<<\nshort introduction\n<<<\n\n!! Content and parameters\n<<<\nThe content, attributes and parameters\n\n|!Parameter |!Description |\n|par1 |description |\n|par2 |description |\n<<<\n\n!! Example i\n<<<\nexample here\n<<<\n\n!! Example ii\n<<<\nanother example here\n<<<\n\n!! References\n<<<\n# one\n# Two\n<<<"},"$:/plugins/kookma/commander/template/simple":{"title":"$:/plugins/kookma/commander/template/simple","caption":"simple","created":"20190213200258460","modified":"20200324070652975","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","version":"beta","text":"! Heading one\nThis is sunsection i\n\n!! Heading two\nThis is subsection ii.\n\n* one\n* two\n* three\n\n!!! Heading three\nThis is subsction iii\n\n```\nA sample code\n```\n\n!! Sample table\n|Table 1. This is caption|c\n|Heading one|Heading Two|Heading Three|h\n|r1|100|200|\n|r2|02|03|\n|r3|-1|-2|\n"},"$:/plugins/kookma/commander/tiddler/macros/create":{"title":"$:/plugins/kookma/commander/tiddler/macros/create","created":"20190212125920722","modified":"20200325055328790","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-create(msg:\"Tiddler existed, operation ignored\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\"$(newTitle)$\" $value=\"$msg$\" />\n\\end\n\n\\define bulk-tiddler-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\"1\")\n<$list filter=\"[<__baseTitle__>!is[blank]]\" variable=ignore>\n<<create-log-tiddler \"bulk-tiddler-creator\">>\n<$list filter=\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit<__numberTiddler__>]\"  variable=\"L1\">\n<$list filter=\"[<__baseTitle__>addsuffix<L1>]\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>]  -[has[title]]\" variable=\"ignore\" emptyMessage=<<log-create>> >\n<$action-createtiddler $basetitle=<<newTitle>>   tags=<<__baseTags__>>  /> \n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-bulk-fields>>\n</$vars>\n<<log-create \"Tiddler created\">>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define oneTid-with-template()\n<$tiddler tiddler=<<newTitle>> >\n <$action-setfield  $tiddler=<<myTemplate>> title=<<currentTiddler>> />   \n <$fieldmangler>\n  <$list filter=\"[enlist<myTags>]\" variable=newTag>\n    <$action-sendmessage $message=\"tm-add-tag\" $param=<<newTag>> />\n  </$list><!--next remove extra tag used by template from new created tiddler-->\n  <$action-sendmessage $message=\"tm-remove-tag\" $param=\"$:/tags/Commander/Template\" />\n</$fieldmangler>\n</$tiddler>\n\\end\n\n\n\\define bulk-tiddler-with-template-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\"1\", template:\"\")\n<$list filter=\"[<__baseTitle__>!is[blank]]\" variable=ignore>\n<<create-log-tiddler \"bulk-tiddler-creator with template\">>\n<$vars datafieldsTid=<<__datafieldsTid__>>\n       myTags=<<__baseTags__>> \n       myTemplate=<<__template__>> >\n<$list filter=\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit<__numberTiddler__>]\"  variable=\"L1\">\n<$list filter=\"[<__baseTitle__>addsuffix<L1>]\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>!has[title]]\" variable=\"ignore\" emptyMessage=<<log-create>> >\n <<oneTid-with-template>>\n <<add-bulk-fields>>\n <<log-create \"Tiddler created\">>\n</$list>\n</$list>\n</$list>\n</$vars>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/tiddler/macros/delete":{"title":"$:/plugins/kookma/commander/tiddler/macros/delete","created":"20190215195221625","modified":"20200325055328801","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-delete-selectively(item, msg:\"Tiddler deleted\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<__item__>> $value=\"$msg$\" />\n\\end\n\n\\define delete-tiddlers-selective-bulk()\n<$list filter=\"[subfilter<searchfilter>limit[1]]\" variable=\"ignore\"><!-- at least searchfilter shall return one tiddler-->\n<<create-log-tiddler \"delete-tiddler-selectively\">>\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"Item\">\n<$action-deletetiddler $tiddler=<<Item>> />\n<$macrocall $name=\"log-delete-selectively\" item=<<Item>> />\n</$list>\n</$list>\n\\end"},"$:/plugins/kookma/commander/tiddler/macros/export":{"title":"$:/plugins/kookma/commander/tiddler/macros/export","created":"20200113101003510","modified":"20200325055328808","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-export-tag()\n<$list filter=<<searchfilter>> >\n<$fieldmangler>\n<$list filter=\"[enlist{$(exportTagTid)$}]~[[exported]]\" variable=\"exportTag\" ><!-- add all export tags-->\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<exportTag>> />\n</$list>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n</$list>\n\\end\n\n\\define remove-export-tag()\n<$list filter=<<searchfilter>> >\n<$fieldmangler>\n<$list filter=\"[<selectiveOpsTid>get[text]match[yes]]\"  variable=ignore>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<workingTag>> />\n</$list>\n<$list filter=\"[enlist{$(exportTagTid)$}]~[[exported]]\" variable=\"exportTag\" ><!-- remove all export tags-->\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<exportTag>> />\n</$list>\n</$fieldmangler>\n</$list>\n\\end\n\n\\define log-export-selectively(msg:\"Tiddler exported\")\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"item\">\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<item>> $value=\"$msg$\" />\n</$list>\n\\end\n\n\n\\define commander-exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<<create-log-tiddler \"exportButton: bulk tiddlers exported\">>\n<$macrocall $name=\"log-export-selectively\"/><!--log any tiddler exported-->\n<<add-export-tag>><!-- by Mohammad-->\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n<<remove-export-tag>><!-- by Mohammad-->\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end"},"$:/plugins/kookma/commander/tiddler/ui":{"title":"$:/plugins/kookma/commander/tiddler/ui","caption":"Tiddler","created":"20190212125319261","list-before":"$:/plugins/kookma/commander/title/ui","modified":"20200325055328821","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TiddlerOps]!has[draft.of]]\"\ndefault:\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers":{"title":"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers","caption":"Create tiddlers","created":"20190213193004029","modified":"20200325055328832","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Base title</label>\n<$edit-text \n tiddler=\"$:/temp/commander/tiddler-base-title\" \n tag=\"input\" default=\"\"\n placeholder=\" base title\" \n class=\"cmd-txt-area\"/><br>\n\n<label class=\"kk-cmd-label\">Tags</label>\n<$edit-text \n tiddler=\"$:/temp/commander/tiddler-base-tags\" \n tag=\"input\" default=\"\"\n placeholder=\" tags\" \n class=\"cmd-txt-area\"\n/> \n\n<!-- add interface for adding fields -->\n<$macrocall $name=\"add-more-fields-selective-ui\"\n  datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n  stateTiddler=\"$:/state/commander/tiddler-addfields-status\" />\n\n\n<$checkbox \n tiddler=\"$:/state/commander/tiddler-template-status\" \n field=\"text\" \n checked=\"use-template\" unchecked=\"no-template\"\n default=\"no-template\"> \n Use template?\n</$checkbox>\n\n<$reveal type=\"match\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\" >\nTemplate\n<$select tiddler=\"$:/temp/commander/template-newtiddler\"  \n default=\"$:/plugins/kookma/commander/template/base\">\n<$list filter='[all[shadows+tiddlers]tag[$:/tags/Commander/Template]]'>\n<option value=<<currentTiddler>> >\n<$view field=\"caption\"><$view field=\"title\"/></$view>\n</option>\n</$list>\n</$select>\n<$button class=\"tc-btn-invisible\"> {{$:/core/images/edit-button}}\n <$action-sendmessage $message=\"tm-edit-tiddler\" \n   $param={{{ [[$:/temp/commander/template-newtiddler]get[text]]~[[$:/plugins/kookma/commander/template/base]] }}}   />\n</$button>\n\n</$reveal>\n\nNumber of tiddlers  &nbsp;\n<$select tiddler=\"$:/temp/commander/tiddler-base-number\"  default='1'>\n<$list filter='[range[1,19, 1]] [range[20,50, 5]] [range[60,100,10]] [range[200,500,100]]'>\n<option value=<<currentTiddler>>><$view field='title'/></option>\n</$list>\n</$select>\n\n<!-- call macros for create tiddlers -->\n<$reveal type=\"nomatch\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\">\n <$button class=\"cmd-btn cmd-btn-wd\"> Create tiddlers\n  <$macrocall $name=\"bulk-tiddler-creator\"\n   baseTitle={{$:/temp/commander/tiddler-base-title}}\n   baseTags={{$:/temp/commander/tiddler-base-tags}}\n   datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n   numberTiddler={{$:/temp/commander/tiddler-base-number}} />\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\">\n <$button class=\"cmd-btn cmd-btn-wd\"> Create tiddlers\n  <$macrocall $name=\"bulk-tiddler-with-template-creator\"\n   baseTitle={{$:/temp/commander/tiddler-base-title}}\n   baseTags={{$:/temp/commander/tiddler-base-tags}}\n   datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n   numberTiddler={{$:/temp/commander/tiddler-base-number}}\n   template={{$:/temp/commander/template-newtiddler}}/>\n </$button>\n</$reveal>\n"},"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers":{"title":"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers","caption":"Delete tiddlers","created":"20190301144408502","list-after":"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers","modified":"20200325055328839","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo tiddlers is selected for deleteion!\n</$reveal>\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\n\nNumber of tiddlers selected for deletion: <<numTids>><br>\nNote that, the delete operation cannot be undone!!\n<br>\n\n<$macrocall $name=\"compConfirmAction\"\ncountFilter=\"[subfilter<searchfilter>]\"\nactionMacro=\"delete-tiddlers-selective-bulk\"\nstateTiddler=\"$:/state/commander/SelectiveDeleteDropdown\"\n/>\n\n</$reveal>\n</$set>\n\n\n"},"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers":{"title":"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers","caption":"Export tiddlers","created":"20200112093148417","list-after":"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers","modified":"20200325055328851","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"\\define export-tiddler-ui(baseFilename)\n<$set name=\"exportList\" filter=<<searchfilter>> ><!-- without this $SetWidget the exportButton does not work -->\n<$vars tv-config-toolbar-text=\"yes\" tv-config-toolbar-class=\"tc-button tt-button\">\n<$macrocall $name=\"commander-exportButton\" exportFilter=<<exportList>> lingoBase=\"$:/language/Buttons/ExportTiddlers/\" baseFilename=\"\"\"$baseFilename$\"\"\"/>\n</$vars>\n</$set>\n\\end\n\n\\define exportFileName-and-Tags-ui() \n<label class=\"kk-cmd-label2\">Export filename</label><$edit-text tiddler=\"$:/temp/commander/exportFilename\" tag=input default=\"tiddlers\" placeholder=\"tiddlers\" class=\"cmd-txt-area\"/>\n<br>\n\n<label class=\"kk-cmd-label2\">Export tags</label><$edit-text tiddler=\"$:/temp/commander/exportTag\" tag=input default=\"exported\" placeholder=\"exported\" class=\"cmd-txt-area\"/><br>\n\\end\n\n<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo tiddlers is selected for export!\n</$reveal>\n\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\n\nNumber of tiddlers selected for export: <<numTids>><br>\n\n<<exportFileName-and-Tags-ui>>\n<$macrocall $name=\"export-tiddler-ui\" baseFilename={{{[[$:/temp/commander/exportFilename]get[text]]~[[tiddlers]]}}} />\n</$reveal>\n</$set>\n\n"},"$:/plugins/kookma/commander/title/macros/prefix":{"title":"$:/plugins/kookma/commander/title/macros/prefix","created":"20190212122742891","modified":"20200325055328857","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-changePrefix(message, oldTitle, newTitle)\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"$message$. New title [[$newTitle$]]\"\"\" tidItem=<<__oldTitle__>> />\n\\end\n\n\\define addPrefix-to-tiltle-bulk(prefix:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__prefix__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"addPrefix-to-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>addprefix[$prefix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>]  -[has[title]]\" variable=\"ignore\">\n  <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n  <$macrocall $name=log-changePrefix message=\"title prefix: `$prefix$` added\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define removePrefix-from-tiltle-bulk(prefix:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__prefix__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"removePrefix-from-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>removeprefix[$prefix$]]   -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>]  -[has[title]]\" variable=\"ignore\">\n  <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n  <$macrocall $name=log-changePrefix message=\"title prefix: `$prefix$` removed\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>  \n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/remove-cahrs-end":{"title":"$:/plugins/kookma/commander/title/macros/remove-cahrs-end","created":"20190218190318901","modified":"20200325055328869","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define suffix-actions2()\n<$list filter=\"[subfilter<searchfilter>]+[prefix<sfx>]\" variable=\"item\">\n  <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<item>> to=<<sfx>> />\n  <$macrocall $name=\"log-add-single-operation\" msg=\"\"\"characters removed from end. New title [[$(sfx)$]]\"\"\" tidItem=<<item>> />\n</$list>\n\\end\n\n\n\\define makelink2() [[$(newTitle)$]]\n\n\\define generate-suffixes2(n:\"0\")\n<$list filter=\"[<__n__>] -0\" variable=null>\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"item\">\n<$list filter=\"\"\"[<item>split[]butlast[$n$]join[]trim[]]\"\"\" variable=\"newTitle\">\n<$text text=<<makelink2>>/>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-chars-from-end-tiltle-bulk(num:\"0\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__num__>] -0\" variable=null>\n<<create-log-tiddler \"remove-chars-from-end-tiltle-bulk\">>\n<$vars n=<<__num__>> >\n<$wikify text=\"\"\"<<generate-suffixes2 n:\"$num$\">>\"\"\" name=\"outputs\">\n <$list filter=\"[subfilter<outputs>]\" variable=\"sfx\">\n<$list filter=\"[subfilter<searchfilter>]+[prefix<sfx>limit[2]count[]regexp[2]]\" emptyMessage=<<suffix-actions2>> variable=\"cnt\">\n</$list>\n</$list>\n</$wikify>\n</$vars>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/remove-cahrs-start":{"title":"$:/plugins/kookma/commander/title/macros/remove-cahrs-start","created":"20190218214608685","modified":"20200325055328877","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define suffix-actions()\n<$list filter=\"[subfilter<searchfilter>]+[suffix<sfx>]\" variable=\"item\">\n  <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<item>> to=<<sfx>> />\n  <$macrocall $name=\"log-add-single-operation\" msg=\"\"\"characters removed from start. New title [[$(sfx)$]]\"\"\" tidItem=<<item>> />\n</$list>\n\\end\n\n\n\\define makelink() [[$(newTitle)$]]\n\n\\define generate-suffixes(n:\"0\")\n<$list filter=\"[<__n__>] -0\" variable=null>\n<$list filter=\"[subfilter<searchfilter>has[title]]\" variable=\"item\">\n<$list filter=\"\"\"[<item>split[]rest[$n$]join[]trim[]]\"\"\" variable=\"newTitle\">\n<$text text=<<makelink>>/>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-chars-from-begining-tiltle-bulk(num:\"0\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__num__>] -0\" variable=null>\n<<create-log-tiddler \"remove-chars-from-begining-tiltle-bulk\">>\n<$vars n=<<__num__>> >\n<$wikify text=\"\"\"<<generate-suffixes n:\"$num$\">>\"\"\" name=\"outputs\">\n <$list filter=\"[subfilter<outputs>]\" variable=\"sfx\">\n <$list filter=\"[subfilter<searchfilter>]+[suffix<sfx>limit[2]count[]regexp[2]]\" \n    emptyMessage=<<suffix-actions>> variable=\"cnt\">\n </$list>\n </$list>\n</$wikify>\n</$vars>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/suffix":{"title":"$:/plugins/kookma/commander/title/macros/suffix","created":"20190212143639636","modified":"20200325055328886","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-changeSuffix(message, oldTitle, newTitle)\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"$message$. New title [[$newTitle$]]\"\"\" tidItem=<<__oldTitle__>> />\n\\end\n\n\\define addSuffix-to-tiltle-bulk(suffix:\"\")\n<$list filter=\"[<__suffix__>!is[blank]]\" variable=null>\n<$list filter=\"[subfilter<searchfilter>limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"addSufffix-to-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>addsuffix[$suffix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>]  -[has[title]]\" variable=\"ignore\">\n  <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n  <$macrocall $name=log-changeSuffix message=\"title suffix: `$suffix$` added\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define removeSuffix-from-tiltle-bulk(suffix:\"\")\n<$list filter=\"[<__suffix__>!is[blank]]\" variable=null>\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"removeSuffix-from-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>removesuffix[$suffix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>]  -[has[title]]\" variable=\"ignore\">\n  <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n  <$macrocall $name=log-changeSuffix message=\"title suffix: `$suffix$` removed\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/ui":{"title":"$:/plugins/kookma/commander/title/ui","caption":"Title","created":"20190212051704536","list-after":"$:/plugins/kookma/commander/tiddler/ui","modified":"20200324070653068","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TitleOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n<!-- relink checkbox for renaming title -->\n{{$:/plugins/kookma/commander/config/relink}}"},"$:/plugins/kookma/commander/title/uicomp/add-remove-chars":{"title":"$:/plugins/kookma/commander/title/uicomp/add-remove-chars","caption":"Remove chars","created":"20190217092719245","list-after":"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix","modified":"20200325055328894","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"\\define rngcat() [range[0,$(minchars)$]] -0 \n\n<label style=\"width:30ch;\">Number of chars</label>\n<$select tiddler=\"$:/temp/commander/title-remove-chars\"  default=\"0\" class=\"cmd-sl\">\n<$list filter=\"[subfilter<searchfilter>length[]minall[]subtract[1]] -Infinity\" variable=\"minchars\">\n<$list filter=<<rngcat>> >\n<option value=<<currentTiddler>>><$view field='title'/></option>\n</$list>\n</$list>\n</$select><br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> First n characters\n<$macrocall \n $name=\"remove-chars-from-begining-tiltle-bulk\" \n num={{$:/temp/commander/title-remove-chars}} />\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Last n characters\n<$macrocall \n $name=\"remove-chars-from-end-tiltle-bulk\" \n num={{$:/temp/commander/title-remove-chars}} />\n</$button>\n\n\n"},"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix":{"title":"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix","caption":"Add remove prefix","created":"20190212141758567","modified":"20200325055328903","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"<$edit-text\ntiddler=\"$:/temp/commander/title-prefix\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" prefix\"\n/> <br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Add prefix\n<$macrocall \n $name=\"addPrefix-to-tiltle-bulk\" \n prefix={{$:/temp/commander/title-prefix}} \n/>\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove prefix\n<$macrocall \n $name=\"removePrefix-from-tiltle-bulk\" \n prefix={{$:/temp/commander/title-prefix}} \n/>\n</$button>\n\n"},"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix":{"title":"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix","caption":"Add remove suffix","created":"20190212143434676","list-after":"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix","modified":"20200325055328912","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"<$edit-text\ntiddler=\"$:/temp/commander/title-suffix\"\ntag=\"input\" default=\"\"\nclass=\"cmd-txt-area\" placeholder=\" suffix\" /><br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Add suffix\n<$macrocall \n $name=\"addSuffix-to-tiltle-bulk\" \n suffix={{$:/temp/commander/title-suffix}} />\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove suffix\n<$macrocall \n $name=\"removeSuffix-from-tiltle-bulk\" \n suffix={{$:/temp/commander/title-suffix}} \n/>\n</$button>\n\n"},"$:/Commander":{"title":"$:/Commander","created":"20190212051316149","icon":"$:/plugins/kookma/commander/images/file-alt","modified":"20200324074719052","type":"text/vnd.tiddlywiki","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\n{{$:/plugins/kookma/commander/search/ui}}\n<!-- Create the search filter based on searchbox and selective operation (if active) -->\n<$vars searchTerms={{{ [<searchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}}  pattern=\"^\\[\"><!-- this part checks the combo search and selective ops-->\n<$set name=\"filtertext\"   filter=\"[<searchTerms>regexp<pattern>]\" value=\"[subfilter<searchTerms>]\" emptyValue=\"[!is[system]search<searchTerms>]\">\n<$set name=\"searchfilter\" filter=\"[<selectiveOpsTid>get[text]match[yes]]\"  \n\tvalue=\"[subfilter<filtertext>!prefix[$:/temp/commander]]+[tag<workingTag>]\" emptyValue=\"[subfilter<filtertext>!prefix[$:/temp/commander]]\" >\n<small style=\"margin-left:17ch;\"><i><$count filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\" /> matches </i></small>\n\n<!-- Display search results and let selective operation -->\n<<commander-slider title:\"$:/plugins/kookma/commander/search/selection\" default:\"open\">>\n\n<!-- Display operation UIs-->\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tiddler/ui\">>\n\n</$set>\n</$set>\n<$vars>\n\n---\n\n<<commander-slider title:\"$:/plugins/kookma/commander/log/ui\">>\n"},"$:/language/Buttons/Commander/Hint":{"title":"$:/language/Buttons/Commander/Hint","created":"20190725032106026","modified":"20200324080437905","tags":"","type":"text/vnd.tiddlywiki","text":"Tiddler Commander"},"$:/language/Buttons/Commander/Caption":{"title":"$:/language/Buttons/Commander/Caption","created":"20190725032131129","modified":"20200324080437929","tags":"","type":"text/vnd.tiddlywiki","text":"commander"}}}
{
    "tiddlers": {
        "GeoTiddler": {
            "title": "GeoTiddler",
            "created": "20151130173416239",
            "modified": "20170115153450584",
            "type": "text/vnd.tiddlywiki",
            "text": "[[GeoTiddler]]s are tiddlers containing geographical data. [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] lists the available objects. [[geoJson|https://en.wikipedia.org/wiki/GeoJSON]] data are also accepted. You may specify a color for all objects displayed through `color` field.\n\n!! tiddler with geo TiddlerFields\nYou can upgrade your tiddler by putting some geo metadata ([[wgs 84 coordinates|https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84]]) in it's TiddlerFields. See [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] for the list of object types you can draw. Popup will show the first part of the tiddler. If the tiddler contains a leafmap widget, it will be rendered as `text/plain` in order to avoid crash...\n\n!! geoJSON  tiddler\nYou can define a geoJson tiddler like [[tiddlyWikiFrCommunity|$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity]] and then display the data by calling it. Just put your geoJson data in the body and declare the tiddler as application/json. Any `application/json` tiddler called will be considered as geoJson. The popups will show\n\n* a title\n** the `name` or the `title` attribute in properties if exists,\n** if not, the firsts attributes of properties until they are 8 characters long\n* a description\n** the `description` attribute in properties if exists,\n** if not, the data stored in each feature as a bulleted list.\n\n!! tiddler grouping [[GeoTiddler]]s\nYou can use `tiddlers` or `filter` as TiddlerFields to make a group of tiddlers. You can apply some styling options to all the group using `style`, `color` or `marker` TiddlerFields and then call the tiddler in your map to render all those tiddler at the same time. This will be a good way to make thematic maps indeed...\n"
        },
        "$:/plugins/sycom/leaflet/devDiary": {
            "title": "$:/plugins/sycom/leaflet/devDiary",
            "created": "20151110173416000",
            "modified": "20180531171500000",
            "type": "text/vnd.tiddlywiki",
            "text": "Some notes about coding this plugin. Might be useful to others...\n\n* 20180602\n** added a template that will display a map of embeded object for tiddlers containing one of the geoTiddlers fiels.\n** updtated leaflet and marker-cluster to 1.3.1 - the easy way. Just replaced with new version and no deprecation at all \\o/ !\n* 20180531\n** converting all `.svg.tid` files to `.svg` + `.svg.meta` pairs. Will allow git client to make svg viewable in web interface. Also compressed SVG as much as possible with great https://jakearchibald.github.io/svgomg/ tool.\n** tweak : for svg embedding local TiddlyWiki colors (eg `$primary$`), forced type to `text/vnd.tiddlywiki` to preserve them.\n* 20170317\n** lot of work around cluster size, cluster color when using filter. Cluster size depends on point % for the cluster, clusterRadius and zoom.\n* 20170311\n** added styling options and also the grouping tiddler capabilities. Discovered that direct styling in SVG ''does not always'' [[overwrite css styling|http://stackoverflow.com/questions/24293880/svg-why-does-external-css-override-inline-style-for-text]].\n* 20170129\n** adding some markers. And it's possible to create yours.\n* 20170115\n** darling birthday edit. Clustering by tiddler is on track. Will have to look for clustering direct passing object through widget.\n* 20161111\n** armistice edit! can now disable clustering or set clustering distance. Bug #9 fixed. may be cluster size will be too big for big databases\n* 20161106\n** color parameter is partially implemented. Note that direct styling like `fill` in svg element wont take on class styling through css...\n* 20161104\n** after many attemps, managed to include tiddler excerpt in popups for mapping geoTiddler. Had to include an escape rule for tiddler containing a leafmap widget. No larsen, but a big bug (map number probably).\n** also managed to give the marker the color of the primary color. Note for later there is probably a bug if primary color is defined with `<<colour>>` macro.\n* 20161102\n** ok, when importing some library, don't forget to use `require()` in order to conclude. Silly guy. Still some polishing needed, but clustering know works...\n* 20161101\n** fighting with markercluster capabilities. At this point seems I can add the script but the MarkerClusterGroup class is not recognized when called...\n* 20161031\n** gave up inserting external layers.svg in stylesheet. Issues with `<$text />` and `{{ }}`... Created svg in a separate tiddler for the record but inserting directly an \"escaped\" version in [[mapCss.css|$:/plugins/sycom/leaflet/mapCssTweaks.css.tid]]\n* 20161030\n** working on different markers. Not so good at designing them though ;-) Putted default leaflet svg marker. Using Inkscape to edit svg easily and SVGO extension in atom to compress them. First attempt to put layers icon as svg. Issues...\n* 20161029\n** trying to put svg marker instead of png ones. Will be better for changing colors, content... using data:image/svg+xml. Svg has to bring xmlns ~~and xmlns:xlink~~ with it in order to work...\n* 20161025\n** after big fight, managed to call images as embeded through css without writing full base64 code. Had to add `html` to the \"rules only\" list at the beginning of the css code\n* 20161024\n** geojson implemented. Will need to add cluster soon. Some question about geojson attributes to create the popup...\n* 20161021\n** updated leaflet.js to 1.0.1 moved base64 image to mapCss.css in order to avoid problems when updating leaflet.\n** Updated tileLayer list. min/max checked for this time. Detect if tile id is wrong to alert user and display osm instead.\n* 20160314\n** corrected caption errors for example and roadmap. Have to write an install process in demo site (gh-page) since writing this in plugin is nonsense.\n* 20151124\n** wondering the best way to release plugin code in gitlab (or github). Can't be a fork of TiddlyWiki. Don't want to lose .git history.\n** ok I'm dumb. All is written in the dev TiddlyWiki : http://tiddlywiki.com/dev/#Developing%20p lugins%20using%20Node.js%20and%20GitHub . Lost .git history since cuting tree is bad. But history was still short...\n* 20151123\n** not able to use directly tiddler stored images as css background.\n** decided to use base64 form in css. Not so elegant as I wished, but works.\n* 20151121\n** fighting with parameters : not imported from widget with `this.getAttribute()`\n** solved by adding the parameter computation before : `this.computeAttributes();`\n* 20151115\n** some problems to declare leaflet.js library : fail during build since there is no window, no document.\n** solved by creating the tiddlywiki.files importer.\n* 20151110\n** starting some tests. Inspiration from d3plugin (also creating widget and importing library)\n"
        },
        "$:/plugins/sycom/leaflet/geoSyntax": {
            "title": "$:/plugins/sycom/leaflet/geoSyntax",
            "created": "20151119173416239",
            "modified": "20151211173250584",
            "type": "text/vnd.tiddlywiki",
            "caption": "geoSyntax",
            "text": "Geographical objects can be stored\n\n* in a GeoTiddler by creating a ''//type// : // pattern//'' metadata field pair in any tiddler or by storing geoJson data in it and setting your tiddler to `application/JSON` type. Call it in the widget with ''places'' attribute : `places='{\"tiddler\":\"title of your tiddler\"}'`\n* in several [[GeoTiddlers|GeoTiddler]]. Call them in the widget with ''places'' attribute\n** via a space separated list of [[GeoTiddlers|GeoTiddler]] : `places='{\"tiddlers\":\"tiddler1 tiddler2 tiddler3\"}'`\n** via a [[filter|http://tiddlywiki.com/#Filters]] selection of [[GeoTiddlers|GeoTiddler]] : `places='{\"filter\":\"[[your filter]]\"}'`\n* straight in the widget with ''places'' attribute : `places='{\"object type\":\"coordinates pattern\"}'`\n\n!! Everything might be a GeoTiddler\n\nIn a very much tiddlywiki way, a tiddler may also refer to a list or a selection of tiddlers using `tiddlers` or `filter` metadata fields. You may add styling informations to all refered tiddler with `style`, `color` or `marker` metadata fields. Calling this tiddler with `<$leafmap />` will render all refered tiddlers.\n\n!! Tool for creating shapes\nAs not everyone has a GIS in his head, And the plugin does not implement yet any tool for creating geo shapes, there is (very basic) tool for that : [ext[Draw for TiddlyWiki leaflet plugin|http://sycom.github.io/TiddlyWiki-Plugins/leafletDraw.html]]\n\n!! Geographical objects you can display on your map\n\n| !type | !description | !pattern |\n|''point'' |a unique point defined by a comma separated latitude,longitude pair |`y,x` |\n|''points''|a points collection defined by a space separated ''point'' definition list |`y1,x1 y2,x2 y3,x3 ...` |\n|''polygon''|a closed surfacic place defined like an //ordered// ''points'' collection just above |`y1,x1 y2,x2 y3,x3 ...` |\n|''polygons''|a polygons collection defined by a pipe (`|`) separated list of ''polygon'' definitions |`y1,x1 y2,x2 y3,x3|y4,x4 y5...` |\n|''polyline''|an open path place defined like the ''polygon'' just above |`y1,x1 y2,x2 y3,x3 ...` |\n|''polylines''|a polylines collection defined by a pipe (`|`) separated list of ''polyline'' definitions |`y1,x1 y2,x2 y3,x3|y4,x4 y5...` |\n|''geojson''|a [[geojson|http://geojson.org/]] object. If set through a tiddler field, please crunch it to one single line|see [[rfc7946|https://tools.ietf.org/html/rfc7946]]|\n"
        },
        "$:/plugins/sycom/leaflet/markers": {
            "title": "$:/plugins/sycom/leaflet/markers",
            "created": "20170129172401910",
            "modified": "20170129172401910",
            "type": "text/vnd.tiddlywiki",
            "caption": "Markers",
            "text": "markers are used to display point(s) related informations. Default marker is [[marker|$:/plugins/sycom/leaflet/images/marker.svg]].\n\n!! Available markers\n\nfor now, available markers are those\n\n<$list filter='[all[shadows]has[marker_dim]has[caption]]'><span style=\"display:inline-block;text-align:center;margin:0 .5em;padding:.5em;border:.5px dotted\"><$tiddler tiddler={{!!title}}><$transclude/></$tiddler><br/><$link to={{!!title}}>{{!!caption}}</$link></span></$list>\n\n!! Create your own markers\n\nHave a look at existing ones above for inspiration and hack. Markers are svg pieces with some mandatory tweaks :\n\n* a marker is based upon ''two'' tiddlers, one for the marker and one for the shadow\n* add a `caption` field to the marker tiddler (not for the shadow svg).\n* the `title` of your marker tiddler will be `$:/plugins/sycom/leaflet/images/`''caption''`.svg`\n* and the `title` of the marker shadow tiddler will be `$:/plugins/sycom/leaflet/images/`''caption''`shadow.svg`\n* a `marker_dim` field wich defines //width// //height// //x-anchor// //y-anchors//. Please check that your //width// and //height// value are the same as in `<svg (...) width=\"15\" height=\"15\">`\n* don't forget to add `xmlns` attribute : `<svg xmlns=\"http://www.w3.org/2000/svg\" (...)`\n* if you want your marker to change color upon tiddlywiki or widget parameters, use `$primary$` for the color attribute of your svg\n"
        },
        "$:/plugins/sycom/leaflet/roadmap": {
            "title": "$:/plugins/sycom/leaflet/roadmap",
            "created": "20151209173416000",
            "modified": "20180531171500000",
            "type": "text/vnd.tiddlywiki",
            "caption": "Roadmap",
            "text": "Not really a roadmap just a list for future development ideas. You'd better take a look at [[issues|https://framagit.org/sycom/TiddlyWiki-Plugins/boards]] on the repo. And add yours if you dare ;-)\n\n* add a tool to draw shapes, lines and collect coordinates. Until this, You may use [[Draw for TiddlyWiki leaflet plugin|http://sycom.github.io/TiddlyWiki-Plugins/leafletDraw.html]]\n* add categories options\n* add text, title capabilities\n* try a tiddler template based upon field presence to render data for all geoTiddler\n* ...\n\n* ~~try to put other types of pins (svg? icons?)~~ ''0.8.0'' : you may change markers via the //marker// option and design your own markers\n* ~~add color(s) options~~ ''0.7.2'' : color can be set via //color// tiddler field or forced through //color// option\n* ~~add a clustering functionality (at least for points)~~ ''0.7.0'' : each data group is know clustering points\n* ~~add geoJSON tiddlers~~ ''0.6.0'' : added geojsontiddler rendering\n* ~~map tiddlers with the same tag(s)~~ ''0.5.0'' : added filter places request\n"
        },
        "$:/plugins/sycom/leaflet/tileLayers": {
            "title": "$:/plugins/sycom/leaflet/tileLayers",
            "created": "20151119173416239",
            "modified": "20161020222250584",
            "type": "text/vnd.tiddlywiki",
            "caption": "tileLayers",
            "text": "tileLayers are the //background// of the leaflet map. They will not be available offline and will not display at every zoom level.\n\n!! Available tile layers\n\nedit [[tileLayers.json|$:/plugins/sycom/leaflet/lib/tileLayers.json]] if you want to add / remove tile layers.\n\n| !id | !description | !zoom min/max |\n|''osm'' |[[OpenStreetMap|http://openstreetmap.org]] classic tile layer | 1/20 |\n|''osmfr'' |[[OpenStreetMap|http://openstreetmap.org]] with //baguette// smell | 1/20 |\n|''osmbw'' |Black and White version of [[OpenStreetMap|http://openstreetmap.org]] tiles by Wikimedia labs | 1/20 |\n|''sat'' |Satellite photographic layer provided by Esri | 1/18 |\n|''natgeo'' |National Geographic style layer provided by Esri| 1/12 |\n|''toner'' |Black and white styled OpenStreetMap data provided by [[Stamen|http://stamen.com]] | 1/20 |\n|''water'' |Watercolor styled OpenStreetMap data provided by [[Stamen|http://stamen.com]] | 1/20 |\n|''thunder'' |Pale styled OpenStreetMap data provided by [[Thunderforest|http://thunderforest.com]] | 1/20 |\n|''dark'' |\"Dark Matter\" styled  OpenStreetMap data provided by [[CartoDB|https://cartodb.com/basemaps]] | 1/20 |\n|''positron'' |\"Positron\" styled  OpenStreetMap data provided by [[CartoDB|https://cartodb.com/basemaps]] | 1/20 |\n"
        },
        "$:/plugins/sycom/leaflet/usage": {
            "title": "$:/plugins/sycom/leaflet/usage",
            "created": "20151119173416239",
            "modified": "20170129153650584",
            "type": "text/vnd.tiddlywiki",
            "caption": "Usage",
            "text": "The widget is called by using `<$leafmap />`. You may specify some options :\n\n!!! widget attributes\n|!Attribute |!Description |!Default |\n|''width'' |the width of the map (px or tiddler %)| `100%`|\n|''height''|the height of the map (px only)| `420px`|\n\n!!! leaflet map attributes\n|!Attribute |!Description |!Default |\n|''places'' |a json object with the geographical data you want to display. Can be stored in tiddlers as metadata fields. See [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] for more informations ||\n|''style'' |a json object containing styling information for your polygons and polylines objects in the map. Will overwrite GeoTiddler style if exists. Refer to [[leaflet documentation|http://leafletjs.com/reference-1.0.3.html#path]] for all options| `{ }`|\n|''color'' |a color for drawing that will apply to all objects in the map. Will also overwrite GeoTiddler color attributes and //style// (if defined) colors| `<<colour primary>>`|\n|''marker''|the name of the marker you want for points. See [[markers|$:/plugins/sycom/leaflet/markers]] for more informations| `marker`|\n|''tile'' |the //id// or the //number// of the tile layer you want to use. See [[tileLayers|$:/plugins/sycom/leaflet/tileLayers]] for more informations | `osm`|\n|''cluster''|set the clustering distance between points. also can disable clustering with no value or `0` or `\"\"`| `80`|\n|''clusterType''|set if points are clustered for whole map (`map`) or for each tiddler (`tiddler`) displayed.| `map`|\n|''tileControl'' |''if present'' add a control to select the tile layer you want ||\n|''lat'' |map center latitude. Will overwrite places auto-centering | `52.8`|\n|''long'' |map center longitude. Will overwrite places auto-centering | `-2.6`|\n|''zoom'' |zoom level as defined by leaflet : int value between `0` (world map) and `20` (ant view) | |\n"
        },
        "$:/plugins/sycom/leaflet/example": {
            "title": "$:/plugins/sycom/leaflet/example",
            "type": "text/vnd.tiddlywiki",
            "caption": "Example",
            "text": "Different ways to use the [[leaflet plugin|$:/plugins/sycom/leaflet]]\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_geotiddler}}\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_geojsontiddler}}\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_non-tiddler_geo_data}}\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_filter}}\n"
        },
        "$:/plugins/sycom/leaflet/example/leaflet_with_filter": {
            "title": "$:/plugins/sycom/leaflet/example/leaflet_with_filter",
            "created": "20151211173500000",
            "modified": "20170317163500000",
            "text": "!! a map of a filter\nthis one displays all tiddlers tagged with <<tag example>> (there's a //all shadow// tweak, since they are shadowed). There is also one cluster per tiddler. Some colors are set from within each tiddler with `color` field.\n\n```\n<$leafmap tile='toner'\n\tplaces='{\"filter\":\"[all[shadows]tag[example]]\"}' clusterType='tiddler'/>\n```\n<$leafmap tile='toner'\n\tplaces='{\"filter\":\"[all[shadows]tag[example]]\"}' clusterType='tiddler'/>\n"
        },
        "$:/plugins/sycom/leaflet/example/leaflet_with_geojsontiddler": {
            "title": "$:/plugins/sycom/leaflet/example/leaflet_with_geojsontiddler",
            "created": "20161025150936935",
            "modified": "20170318235936935",
            "tags": "example leaflet",
            "text": "!! a map of a geoJson tiddler\nThis one displays [[tiddlyWikiFrCommunity|$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity]] (that has a color field set to red), which is an almost direct geojson data extraction from the umap [[Utilisateurs du forum TiddlyWiki FR|https://umap.openstreetmap.fr/fr/map/tiddlywikifr_65983#6/46.995/2.549]]. `color` is set to orange, `marker` to pin. Cluster distance is default (80) on the first, set to 30 on the second.\n\n```\n<$leafmap tileControl\n    places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n    style='{\"color\":\"orange\"}'\n    marker='pin'/>\n<$leafmap tileControl cluster=\"30\"\n    places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n    marker='pin'/>\n```\n<$leafmap tileControl\n    places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n    style='{\"color\":\"orange\"}'\n    marker='pin'/>\n<$leafmap tileControl cluster=\"30\"\n    places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n    marker='pin'/>\n"
        },
        "$:/plugins/sycom/leaflet/example/leaflet_with_geotiddler": {
            "title": "$:/plugins/sycom/leaflet/example/leaflet_with_geotiddler",
            "created": "20151207090936935",
            "modified": "20161025222038568",
            "tags": "example leaflet",
            "text": "!! a map of a GeoTiddler\nthis one displays the tiddler [[placeTiddler|$:/plugins/sycom/leaflet/example/placeTiddler]]. Note the tileControl attribute that enables map background selection. As the tiddler has its `color` field set to pink, objects are rendered pink. The cat is know a panther ;-). The tiddler also have a `style` field to define dash and thickness of the stroke...\n\n```\n<$leafmap\n    tileControl\n    places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/placeTiddler\"}'/>\n```\n<$leafmap\n    tileControl\n    places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/placeTiddler\"}'/>\n"
        },
        "$:/plugins/sycom/leaflet/example/leaflet_with_non-tiddler_geo_data": {
            "title": "$:/plugins/sycom/leaflet/example/leaflet_with_non-tiddler_geo_data",
            "point": "6.5,19.72",
            "created": "20151207090936935",
            "modified": "20151211172038568",
            "tags": "example leaflet",
            "text": "!! a map with data on the go\nvery useful for fast mapping. All objects that might be embedded in GeoTiddler can be used here. Let's display a map with satellite imagery and\n\n* a ''point'' at `6.5,19.72`\n* a ''polyline'' at `6.4,19.7 6.6,19.74`\n\nnote this tiddler is also a geoTiddler with one point at `6.5,19.72`\n\n```\n<$leafmap tile='sat'\n\tplaces='{\"point\":\"6.5,19.72\",\"polyline\":\"6.4,19.7 6.6,19.74\"}'/>\n```\n\n<$leafmap tile='sat'\n\tplaces='{\"point\":\"6.5,19.72\",\"polyline\":\"6.4,19.7 6.6,19.74\"}'/>\n"
        },
        "$:/plugins/sycom/leaflet/example/placeTiddler": {
            "title": "$:/plugins/sycom/leaflet/example/placeTiddler",
            "points": "52.799933,-2.589812 52.799959,-2.590939",
            "polygon": "52.800608,-2.591668 52.800225,-2.591829 52.799849,-2.591937 52.799603,-2.591990 52.799427,-2.591990 52.799187,-2.591894 52.798863,-2.591550 52.798727,-2.591357 52.798662,-2.591121 52.798636,-2.590853 52.798655,-2.590542 52.798668,-2.590467 52.798701,-2.590359 52.798649,-2.590113 52.798623,-2.589920 52.798610,-2.589716 52.798636,-2.589437 52.798694,-2.589136 52.798850,-2.588975 52.799051,-2.588793 52.799311,-2.588707 52.799525,-2.588707 52.799726,-2.588772 52.800018,-2.588857 52.800290,-2.588911 52.800511,-2.589040 52.800731,-2.589126 52.800816,-2.589211 52.800413,-2.589812 52.800446,-2.590166 52.800452,-2.590520 52.800433,-2.590810 52.800426,-2.591068 52.800751,-2.591550 52.800621,-2.591679",
            "polylines": "52.799382,-2.590059 52.799641,-2.588321|52.799330,-2.590048 52.799447,-2.588342|52.799265,-2.590059 52.799181,-2.588342|52.799486,-2.590724 52.799706,-2.592301|52.799414,-2.590767 52.799525,-2.592366|52.799356,-2.590714 52.799278,-2.592355",
            "created": "20151119173416000",
            "modified": "20151211173153114",
            "color": "#ff80c0",
            "style": "{\"dashArray\":\"6, 10\",\"weight\":\"8\"}",
            "type": "text/vnd.tiddlywiki",
            "tags": "example leaflet geometry",
            "text": "This tiddler contains\n\n* a two `points` list : 52.799933,-2.589812 52.799959,-2.590939\n* a `polygon` : 52.800608,-2.591668 52.800225,-2.591829 52.799849 (...)\n* a `polyline`s list : 52.799382,-2.590059 52.799641,-2.588321|52.799330,-2.590048 52.799447,-2.588342|52.799265,(...)\n\nIt has also some styling informations\n\n* `color` is set to pink\n* `style` defines a dashed 8px thick line\n\ngo to edit mode to see the full data fields\n"
        },
        "/usr/local/lib/node_modules/tiddlywiki/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity.old": {
            "title": "/usr/local/lib/node_modules/tiddlywiki/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity.old",
            "text": "created: 20161025143416000\nmodified: 20170317143416000\ntitle: $:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\ntype: application/json\ntags: example leaflet geojson\ncolor: #dd0000\n\n{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"name\":\"Aknar\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4442090000000007,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"CdriC\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.563166,47.478419]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Disanv Parean\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.4072784,49.1846226]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fab13n\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.5867,45.1184]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fabio\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.916515000000004,47.8664401]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Florent V.\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.156237,45.648377]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Joël\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.740042686462402,46.10446454226022]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Johanne\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-74.09016960000002,45.65189590000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lakemp\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.19249,48.59338]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"LauDai\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4750973000000158,43.5664556]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lucivam\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.390278,45.434722]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Mikabi\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.44,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nico\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.2569674000000077,48.9899655]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nicolas Friedli\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[6.8411643,46.9425711]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Phil\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[3.98337,50.36155]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Piwig\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-1.677793,48.117266]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Comte\",\"description\":\"Créateur du leaflet map plugin\",\"url\":\"http://sylvain.comte.online.fr\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.08954,49.43584]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Naudin\",\"description\":\"Admin du forum\",\"url\":\"http://sylvain.naud.in\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.155689,45.471894]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Thierry Pasquier\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.3333,46.5833]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Vincent Delcros\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.2788245000000416,50.5500944]}}]}\n",
            "type": ".old"
        },
        "$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity": {
            "title": "$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity",
            "text": "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"name\":\"Aknar\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4442090000000007,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"CdriC\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.563166,47.478419]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Disanv Parean\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.4072784,49.1846226]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Emmanuel\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.3522219000000177,48.85661400000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Escrivant\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.3868,48.871958]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fab13n\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.5867,45.1184]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fabio\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.916515000000004,47.8664401]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Florent\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.156237,45.648377]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"François\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.478413899999964,43.543794]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Gub\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4442090000000007,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"jargenty\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.321621999999934,43.514707]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Jérôme\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-2.429759,47.328003]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Joël\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.740042686462402,46.10446454226022]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Johanne\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-74.09016960000002,45.65189590000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lakemp\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.19249,48.59338]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"LauDai\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4750973000000158,43.5664556]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"LongSlowBakery\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-2.4834849999999733,52.903552]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lucivam\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.390278,45.434722]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"m4dz\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.3522219000000177,48.85661400000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Matthias\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.560016,47.470006]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Michel\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[7.261953199999994,43.7101728]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Mikabi\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.44,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nico\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.2569674000000077,48.9899655]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nicolas\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[6.8411643,46.9425711]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"pariswiki\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.29,48.8]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Phil\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[3.98337,50.36155]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Piwig\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-1.677793,48.117266]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Ploum\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.1995560000000296,48.00611000000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Scapharnaum\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[7.74553,48.58392]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Solaine\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[8.227512,46.818188]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Comte\",\"description\":\"Créateur du leaflet map plugin\",\"url\":\"http://sylvain.comte.online.fr\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.08954,49.43584]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Naudin\",\"description\":\"Admin du forum\",\"url\":\"http://sylvain.naud.in\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.155689,45.471894]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Thierry\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.3333,46.5833]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Thomas Elmiger\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[8.541694,47.376887]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Vincent\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.2788245000000416,50.5500944]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Yan\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.0517,46.22475]}}]}\n",
            "type": "application/json",
            "created": "20161025143416000",
            "modified": "20180602193416000",
            "source": "https://umap.openstreetmap.fr/fr/map/tiddlywikifr_65983",
            "tags": "example leaflet geojson",
            "color": "#dd0000"
        },
        "$:/ext/modules/widgets/geolocation-widget.js": {
            "text": "/*\\\ntitle: $:/ext/modules/wigets/geolocation-widget.js\ntype: application/javascript\nmodule-type: widget\n\nGeolocation widget\n\n\\*/\n(function() {\n    /*jslint node: true, browser: true */\n    /*global $tw: false */\n    \"use strict\";\n    var Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n    var GeolocationWidget = function(parseTreeNode, options) {\n        this.initialise(parseTreeNode, options);\n    };\n\n    /* Inherit from the base widget class */\n    GeolocationWidget.prototype = new Widget();\n\n    /* Compute the internal state of the widget  */\n    GeolocationWidget.prototype.execute = function() {\n        // Get attributes\n        this.target = this.getAttribute(\"target\") || this.getVariable(\"currentTiddler\");\n        this.icon = this.getAttribute(\"icon\") || \"$:/core/images/globe\";\n        this.text = this.getAttribute(\"text\") || undefined;\n        this.accuracy = this.getAttribute(\"accuracy\");\n        this.type = this.getAttribute(\"type\") || \"point\";\n        // Make child widgets\n        this.makeChildWidgets();\n    };\n\n    /* Render this widget into the DOM */\n    GeolocationWidget.prototype.render = function(parent, nextSibling) {\n        var self = this;\n        // Remember parent\n        this.parentDomNode = parent;\n        // Compute attributes and execute state\n        this.computeAttributes();\n        this.execute();\n        // Create element\n        var tag = \"button\";\n        if (this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n            tag = this.buttonTag;\n        }\n        var domNode = this.document.createElement(tag);\n        // Add a click event handler\n        domNode.addEventListener(\"click\", function(event) {\n            if (navigator.geolocation) {\n                navigator.geolocation.getCurrentPosition(\n                    // success callback\n                    function(position) {\n                        /* to replace by field populating (point(s) polyline(s) or polygon(s)) */\n                        /* default : if tiddler has point field, will create a points field to store new data;\n        if tiddler has points field, will add a new point to the tiddler field;\t*/\n                        var target = self.target;\n                        var accuracy = self.accuracy;\n                        var type = self.type;\n                        var newPoint = position.coords.latitude + \",\" + position.coords.longitude;\n                        /* check if tiddler has a geofield */\n                        var track = \"\";\n                        if (!$tw.wiki.getTiddler(target)) $tw.wiki.setText(target, \"text\", null, \"\", null);\n                        var flds = $tw.wiki.getTiddler(target).fields\n                        if (flds.points) {\n                            track = flds.points;\n                            $tw.wiki.setText(target, \"points\", null, track + \" \" + newPoint, null);\n                            infoLocation(\"new point \" + newPoint + \" added to \" + target);\n\n                        } else {\n                            if (flds.point && flds.point !== null) {\n                                track = flds.point;\n                                $tw.wiki.setText(target, \"points\", null, track + \" \" + newPoint, null);\n                                $tw.wiki.setText(target, \"point\", null, null, null);\n                                infoLocation(\"new point \" + newPoint + \" added to \" + target);\n                            } else {\n                                $tw.wiki.setText(target, \"point\", null, newPoint, null);\n                                infoLocation(\"new point \" + newPoint + \" added to \" + target);\n                            }\n                        }\n                    },\n                    // error callback\n                    function(error) {\n                        noLocation(error.message + \". You may not are connected via httpS://\")\n                    }\n                );\n            } else {\n                noLocation(\"position disabled or not supported by your browser\");\n            }\n        }, false);\n        /* dress up button */\n        var buttonContent;\n        // if text parameter, will use it for the button\n        if (self.text) {\n            buttonContent = self.text;\n        } else {\n            // if not, looking for an icon\n            /* !todo: ?question: should the icon depend on \"type\" parameter? */\n            buttonContent = $tw.wiki.getTiddler(self.icon).fields.text;\n        }\n        domNode.innerHTML = buttonContent;\n        // Insert element\n        parent.insertBefore(domNode, nextSibling);\n        this.renderChildren(domNode, null);\n        this.domNodes.push(domNode);\n    };\n\n    function noLocation(message) {\n        /* !todo: ?question: replace by \"modal\" alert? */\n        // create or update a temporary message tiddler \n        $tw.wiki.setText(\"$:/temp/noLocationMessage\", \"text\", null, \"geolocation access denied: \" + message, null);\n        // displays it in modal\n        $tw.modal.display(\"$:/temp/noLocationMessage\");\n    }\n\n    function infoLocation(message) {\n        // create or update a temporary message tiddler \n        $tw.wiki.setText(\"$:/temp/viewLocationMessage\", \"text\", null, message, null);\n        // displays it in modal\n        $tw.notifier.display(\"$:/temp/viewLocationMessage\");\n    }\n    /*\n    We don't allow actions to propagate because we trigger actions ourselves\n    */\n    GeolocationWidget.prototype.allowActionPropagation = function() {\n        return false;\n    };\n\n    exports.geoloc = GeolocationWidget;\n\n})();",
            "title": "$:/ext/modules/widgets/geolocation-widget.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "geoLocationWidget": {
            "caption": "action-createtiddler",
            "created": "20180906130958091",
            "modified": "20180906132645752",
            "author": "Sylvain Comte",
            "tags": "Widgets",
            "title": "geoLocationWidget",
            "type": "text/vnd.tiddlywiki",
            "text": "! Introduction\nThe ''geolocation'' widget is used to collect geographic position of the browser running the wiki. For now position will be added the //point// (or //points// if there is more than one point) field of the target tiddler. Those fields may then be used with the [[Leaflet Map Plugin|https://sycom.github.io/TiddlyWiki-Plugins/#Leaflet%20plugin]], or whatever tool using geographic coordinates.\n\n* The widget is not dependant from Leaflet Map Plugin (but is bundled in it). You may install it alone\n* The widget will only work on //https// website, due to security limitation of the geolocation implemented in browsers\n\n! Content and Attributes\nThe [[geolocation widget|$:/ext/modules/widgets/geolocation-widget.js]] will create a button to collect your browser's position. Any content within it is ignored.\n\n| !Attribute | !Description | !Default |\n|target |The tiddler (title) in which data will be stored |//current tiddler// |\n|icon |The title of the icon used to dress up the button|$:/core/images/globe |\n|text |The text displayed in the button (will overwrite the icon)|`undefined` |\n\nMore options will come later (//accuracy//, //object type//...).\n\n! Examples\n\n```\n<$geoloc target=\"Geolocation Store\" />\n```\n\n<$geoloc target=\"Geolocation Store\" />\n\n! Source\nThe ''geolocation widget'' is developped aside Leaflet Map Plugin. Source code can be found on the same repository : https://framagit.org/sycom/TiddlyWiki-Plugins/tree/master/ext/modules/widget/geolocation\n\n"
        },
        "$:/plugins/sycom/leaflet/icon": {
            "title": "$:/plugins/sycom/leaflet/icon",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-leaflet-map tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n   <g fill-rule=\"evenodd\">\n   <path d=\"M64 0L9.4 32v64L64 128l54.6-32V32zM48.8 32.4l30.8 7.8V95l-30.8-7.8zm57.2 2.4v54.7L82 95V40.2zm-59.8-2.2v54.7L21 92.8V38zm-10.4 5.9a5.2 5.2 0 0 0-5.1 5c0 1.1.6 2.6 1.1 3.6l4 7.6 3.9-7.6c.4-1 1.1-2.4 1.1-3.6 0-2.6-2.3-5-5-5zm-.2 3h.2c1 0 2 .9 2 2a2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1 .8-2 1.8-2zM64.2 44c-7 0-13 6.1-13 12.7 0 3 1.7 6.8 3 9.4l10 19.3L74 66c1.2-2.6 3-6.2 3-9.4C77 50.1 71.2 44 64 44zm0 7.7a5 5 0 0 1 5 5 5 5 0 0 1-10 0 5 5 0 0 1 5-5zM25.6 59a3.5 3.5 0 0 0-3.4 3.3c0 .8.5 1.8.8 2.5l2.6 5 2.6-5c.3-.7.8-1.7.8-2.5 0-1.7-1.5-3.3-3.4-3.3zm0 2a1.3 1.3 0 1 1 0 2.6 1.3 1.3 0 0 1-1.3-1.3 1.3 1.3 0 0 1 1.3-1.3zM92 66.8c-2.7 0-5 2.4-5 5 0 1.2.6 2.7 1.1 3.7l4 7.5 3.8-7.5c.5-1 1.2-2.4 1.2-3.7 0-2.6-2.3-5-5-5zm0 3c1.1 0 2 1 2 2a2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1 .9-1.9 2-2z\"/>\n   <path d=\"M69-158h58v67H69z\" fill=\"#fff\"/>\n </g>\n</svg>\n"
        },
        "$:/plugins/sycom/leaflet/images/layers.svg": {
            "title": "$:/plugins/sycom/leaflet/images/layers.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"26\" width=\"26\"><path d=\"M0 17l13-8 13 8-13 8-13-8\" fill=\"#b9b9b9\"/><path d=\"M0 17v1l13 8 13-8v-1l-13 8z\" fill=\"#737373\"/><path d=\"M0 13l13-8 13 8-13 8-13-8\" fill=\"#cdcdcd\"/>\n  <path d=\"M0 13v1l13 8 13-8v-1l-13 8z\" fill=\"#737373\"/><path d=\"M0 9l13-8 13 8-13 8L0 9\" fill-opacity=\".6\" fill=\"#e9e9e9\"/><path d=\"M0 9v1l13 8 13-8V9l-13 8z\" fill=\"#737373\"/></svg>\n",
            "type": "image/svg+xml",
            "created": "20161028202401905",
            "modified": "20180531154011600",
            "tags": "$:/tags/Image"
        },
        "$:/plugins/sycom/leaflet/images/marker.svg": {
            "title": "$:/plugins/sycom/leaflet/images/marker.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"40\" fill-rule=\"evenodd\"><path fill=\"none\" d=\"M6.279 4.463h12.625v14.5H6.279z\"/><path fill=\"$primary$\" fill-opacity=\".8\" stroke=\"#fff\" stroke-linecap=\"round\" d=\"M12.544.5C5.971.5.5 6.191.5 12.366c0 2.778 1.564 6.308 2.694 8.746L12.5 38.984l9.262-17.872c1.13-2.438 2.738-5.791 2.738-8.746C24.5 6.191 19.117.5 12.544.5zm0 7.155a4.714 4.714 0 0 1 4.679 4.71c0 2.588-2.095 4.663-4.679 4.679-2.584-.017-4.679-2.09-4.679-4.679a4.714 4.714 0 0 1 4.679-4.71z\" class=\"leaflet-marker-colored\"/><path fill=\"none\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-opacity=\".9\" d=\"M12.531 1.607c-5.944 0-10.938 5.219-10.938 10.75 0 2.359 1.443 5.832 2.563 8.25l.031.031L12.5 36.607l8.25-15.969.031-.031c1.135-2.448 2.625-5.706 2.625-8.25 0-5.538-4.931-10.75-10.875-10.75zm0 4.969c3.168.021 5.781 2.601 5.781 5.781 0 3.18-2.613 5.761-5.781 5.781-3.168-.02-5.75-2.61-5.75-5.781 0-3.172 2.582-5.761 5.75-5.781z\"/></svg>\n",
            "type": "text/vnd.tiddlywiki",
            "created": "20161028202401905",
            "modified": "20180531124011600",
            "tags": "$:/tags/Image",
            "marker_dim": "25 40 12.5 40",
            "caption": "marker"
        },
        "$:/plugins/sycom/leaflet/images/markershadow.svg": {
            "title": "$:/plugins/sycom/leaflet/images/markershadow.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"40\"><filter id=\"a\" width=\"200\" height=\"200\" x=\"-50\" y=\"-50\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1.5\"/></filter><path fill=\"none\" d=\"M47 0a52 52 0 0 0-34 21L0 40l30-19 13-9c7-6 9-12 4-12zm-9 7a3 8 58 0 1-2 5c-3 3-7 5-9 5-3 0-2-2 1-5a3 8 58 0 1 10-5z\" filter=\"url(#a)\"/></svg>\n",
            "type": "image/svg+xml",
            "created": "20161028202401905",
            "modified": "20180531155500000",
            "tags": "$:/tags/Image",
            "marker_dim": "50 40 0 40"
        },
        "$:/plugins/sycom/leaflet/images/pin.svg": {
            "title": "$:/plugins/sycom/leaflet/images/pin.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"35\"><defs><linearGradient id=\"a\"><stop offset=\"0\" stop-color=\"#fff\"/><stop offset=\"1\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><radialGradient id=\"b\" cx=\"7\" cy=\"7\" r=\"8\" fx=\"5\" fy=\"5\" gradientTransform=\"scale(1.12)\" gradientUnits=\"userSpaceOnUse\" href=\"#a\"/></defs><g fill-rule=\"evenodd\"><path d=\"M9 20h2v15H9z\"/><circle cx=\"10\" cy=\"10\" r=\"10\" class=\"leaflet-marker-colored\" fill-opacity=\".8\" fill=\"$primary$\"/><circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"url(#b)\"/></g></svg>\n",
            "type": "text/vnd.tiddlywiki",
            "created": "20161028202401905",
            "modified": "20180531154500000",
            "tags": "$:/tags/Image",
            "marker_dim": "20 35 10 35",
            "caption": "pin"
        },
        "$:/plugins/sycom/leaflet/images/pinshadow.svg": {
            "title": "$:/plugins/sycom/leaflet/images/pinshadow.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\"><filter id=\"a\" width=\"200\" height=\"200\" x=\"-50\" y=\"-50\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1.5\"/></filter><ellipse cx=\"8\" cy=\"8\" style=\"stroke:none; fill-opacity:.3; filter: url(#a)\" rx=\"7\" ry=\"7\"/></svg>\n",
            "type": "image/svg+xml",
            "created": "20170129162401910",
            "modified": "20180531155000000",
            "tags": "$:/tags/Image",
            "marker_dim": "15 15 5 7"
        },
        "$:/plugins/sycom/leaflet/images/point.svg": {
            "title": "$:/plugins/sycom/leaflet/images/point.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" fill-rule=\"evenodd\"><ellipse cx=\"7.5\" cy=\"7.5\" fill=\"none\" stroke=\"#fff\" stroke-opacity=\".8\" rx=\"7.5\" ry=\"7.5\"/><ellipse cx=\"7.5\" cy=\"7.5\" fill=\"$primary$\" fill-opacity=\".8\" stroke=\"#000\" stroke-opacity=\".8\" stroke-width=\".5\" class=\"leaflet-marker-colored\" rx=\"7\" ry=\"7\"/></svg>\n",
            "type": "text/vnd.tiddlywiki",
            "created": "20170129162401905",
            "modified": "20180531165500000",
            "tags": "$:/tags/Image",
            "marker_dim": "15 15 7.5 7.5",
            "caption": "point"
        },
        "$:/plugins/sycom/leaflet/images/pointshadow.svg": {
            "title": "$:/plugins/sycom/leaflet/images/pointshadow.svg",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\"><filter id=\"a\" width=\"200\" height=\"200\" x=\"-50\" y=\"-50\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1.5\"/></filter><ellipse cx=\"7.5\" cy=\"7.5\" fill-opacity=\".3\" filter=\"url(#a)\" rx=\"7.2\" ry=\"7.2\"/></svg>\n",
            "type": "image/svg+xml",
            "created": "20170129162401910",
            "modified": "20180531165600000",
            "tags": "$:/tags/Image",
            "marker_dim": "15 15 0 12"
        },
        "$:/plugins/sycom/leaflet/lib/tileLayers.json": {
            "text": "[\n    {\n        \"id\": \"osmfr\",\n        \"nom\": \"OSM France\",\n        \"url\": \"http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png\",\n        \"attrib\": \"fond par <a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Données &copy;Contributeurs <a href='http://openstreetmap.org'>OSM</a>, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n      \"id\": \"osm\",\n      \"nom\": \"OpenStreetMap\",\n      \"url\": \"http://{s}.tile.osm.org/{z}/{x}/{y}.png\",\n      \"attrib\": \"Map tiles by &copy;<a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n      \"zMin\": 1,\n      \"zMax\": 20\n   },\n    {\n        \"id\": \"osmbw\",\n        \"nom\": \"OSM N&B\",\n        \"url\": \"http://www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png\",\n        \"attrib\": \"Tiles hosted by wikimedia labs. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n        \"id\": \"sat\",\n        \"nom\": \"Satellite Esri\",\n        \"url\": \"http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}\",\n        \"attrib\": \"&copy;Map tiles by Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n        \"id\": \"natgeo\",\n        \"nom\": \"National Geog.\",\n        \"url\": \"http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}\",\n        \"attrib\": \"&copy;Map tiles by Esri &mdash; National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC\",\n        \"zMin\": 1,\n        \"zMax\": 12\n    },\n    {\n        \"id\": \"toner\",\n        \"nom\": \"Black Ink\",\n        \"url\": \"http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png\",\n        \"attrib\": \"Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n        \"id\": \"water\",\n        \"nom\": \"Water painting\",\n        \"url\": \"http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png\",\n        \"attrib\": \"Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n        \"id\": \"thunder\",\n        \"nom\": \"Thunderforest\",\n        \"url\": \"http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png\",\n        \"attrib\": \"Map tiles by <a href='http://thunderforest.com/'>Thunderforest</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n        \"id\": \"dark\",\n        \"nom\": \"Dark Matter\",\n        \"url\": \"http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png\",\n        \"attrib\": \"&copy;Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    },\n    {\n        \"id\": \"positron\",\n        \"nom\": \"Positron\",\n        \"url\": \"http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png\",\n        \"attrib\": \"&copy;Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n        \"zMin\": 1,\n        \"zMax\": 20\n    }\n]\n",
            "type": "application/json",
            "title": "$:/plugins/sycom/leaflet/lib/tileLayers.json"
        },
        "$:/plugins/sycom/leaflet/lib/leaflet.css": {
            "text": "/* required styles */\n\n.leaflet-pane,\n.leaflet-tile,\n.leaflet-marker-icon,\n.leaflet-marker-shadow,\n.leaflet-tile-container,\n.leaflet-pane > svg,\n.leaflet-pane > canvas,\n.leaflet-zoom-box,\n.leaflet-image-layer,\n.leaflet-layer {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\t}\n.leaflet-container {\n\toverflow: hidden;\n\t}\n.leaflet-tile,\n.leaflet-marker-icon,\n.leaflet-marker-shadow {\n\t-webkit-user-select: none;\n\t   -moz-user-select: none;\n\t        user-select: none;\n\t  -webkit-user-drag: none;\n\t}\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\n.leaflet-safari .leaflet-tile {\n\timage-rendering: -webkit-optimize-contrast;\n\t}\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\n.leaflet-safari .leaflet-tile-container {\n\twidth: 1600px;\n\theight: 1600px;\n\t-webkit-transform-origin: 0 0;\n\t}\n.leaflet-marker-icon,\n.leaflet-marker-shadow {\n\tdisplay: block;\n\t}\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\n.leaflet-container .leaflet-overlay-pane svg,\n.leaflet-container .leaflet-marker-pane img,\n.leaflet-container .leaflet-shadow-pane img,\n.leaflet-container .leaflet-tile-pane img,\n.leaflet-container img.leaflet-image-layer {\n\tmax-width: none !important;\n\tmax-height: none !important;\n\t}\n\n.leaflet-container.leaflet-touch-zoom {\n\t-ms-touch-action: pan-x pan-y;\n\ttouch-action: pan-x pan-y;\n\t}\n.leaflet-container.leaflet-touch-drag {\n\t-ms-touch-action: pinch-zoom;\n\t/* Fallback for FF which doesn't support pinch-zoom */\n\ttouch-action: none;\n\ttouch-action: pinch-zoom;\n}\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.leaflet-container {\n\t-webkit-tap-highlight-color: transparent;\n}\n.leaflet-container a {\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\n}\n.leaflet-tile {\n\tfilter: inherit;\n\tvisibility: hidden;\n\t}\n.leaflet-tile-loaded {\n\tvisibility: inherit;\n\t}\n.leaflet-zoom-box {\n\twidth: 0;\n\theight: 0;\n\t-moz-box-sizing: border-box;\n\t     box-sizing: border-box;\n\tz-index: 800;\n\t}\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\n.leaflet-overlay-pane svg {\n\t-moz-user-select: none;\n\t}\n\n.leaflet-pane         { z-index: 400; }\n\n.leaflet-tile-pane    { z-index: 200; }\n.leaflet-overlay-pane { z-index: 400; }\n.leaflet-shadow-pane  { z-index: 500; }\n.leaflet-marker-pane  { z-index: 600; }\n.leaflet-tooltip-pane   { z-index: 650; }\n.leaflet-popup-pane   { z-index: 700; }\n\n.leaflet-map-pane canvas { z-index: 100; }\n.leaflet-map-pane svg    { z-index: 200; }\n\n.leaflet-vml-shape {\n\twidth: 1px;\n\theight: 1px;\n\t}\n.lvml {\n\tbehavior: url(#default#VML);\n\tdisplay: inline-block;\n\tposition: absolute;\n\t}\n\n\n/* control positioning */\n\n.leaflet-control {\n\tposition: relative;\n\tz-index: 800;\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n\tpointer-events: auto;\n\t}\n.leaflet-top,\n.leaflet-bottom {\n\tposition: absolute;\n\tz-index: 1000;\n\tpointer-events: none;\n\t}\n.leaflet-top {\n\ttop: 0;\n\t}\n.leaflet-right {\n\tright: 0;\n\t}\n.leaflet-bottom {\n\tbottom: 0;\n\t}\n.leaflet-left {\n\tleft: 0;\n\t}\n.leaflet-control {\n\tfloat: left;\n\tclear: both;\n\t}\n.leaflet-right .leaflet-control {\n\tfloat: right;\n\t}\n.leaflet-top .leaflet-control {\n\tmargin-top: 10px;\n\t}\n.leaflet-bottom .leaflet-control {\n\tmargin-bottom: 10px;\n\t}\n.leaflet-left .leaflet-control {\n\tmargin-left: 10px;\n\t}\n.leaflet-right .leaflet-control {\n\tmargin-right: 10px;\n\t}\n\n\n/* zoom and fade animations */\n\n.leaflet-fade-anim .leaflet-tile {\n\twill-change: opacity;\n\t}\n.leaflet-fade-anim .leaflet-popup {\n\topacity: 0;\n\t-webkit-transition: opacity 0.2s linear;\n\t   -moz-transition: opacity 0.2s linear;\n\t     -o-transition: opacity 0.2s linear;\n\t        transition: opacity 0.2s linear;\n\t}\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\n\topacity: 1;\n\t}\n.leaflet-zoom-animated {\n\t-webkit-transform-origin: 0 0;\n\t    -ms-transform-origin: 0 0;\n\t        transform-origin: 0 0;\n\t}\n.leaflet-zoom-anim .leaflet-zoom-animated {\n\twill-change: transform;\n\t}\n.leaflet-zoom-anim .leaflet-zoom-animated {\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\n\t   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\n\t     -o-transition:      -o-transform 0.25s cubic-bezier(0,0,0.25,1);\n\t        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);\n\t}\n.leaflet-zoom-anim .leaflet-tile,\n.leaflet-pan-anim .leaflet-tile {\n\t-webkit-transition: none;\n\t   -moz-transition: none;\n\t     -o-transition: none;\n\t        transition: none;\n\t}\n\n.leaflet-zoom-anim .leaflet-zoom-hide {\n\tvisibility: hidden;\n\t}\n\n\n/* cursors */\n\n.leaflet-interactive {\n\tcursor: pointer;\n\t}\n.leaflet-grab {\n\tcursor: -webkit-grab;\n\tcursor:    -moz-grab;\n\t}\n.leaflet-crosshair,\n.leaflet-crosshair .leaflet-interactive {\n\tcursor: crosshair;\n\t}\n.leaflet-popup-pane,\n.leaflet-control {\n\tcursor: auto;\n\t}\n.leaflet-dragging .leaflet-grab,\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\n.leaflet-dragging .leaflet-marker-draggable {\n\tcursor: move;\n\tcursor: -webkit-grabbing;\n\tcursor:    -moz-grabbing;\n\t}\n\n/* marker & overlays interactivity */\n.leaflet-marker-icon,\n.leaflet-marker-shadow,\n.leaflet-image-layer,\n.leaflet-pane > svg path,\n.leaflet-tile-container {\n\tpointer-events: none;\n\t}\n\n.leaflet-marker-icon.leaflet-interactive,\n.leaflet-image-layer.leaflet-interactive,\n.leaflet-pane > svg path.leaflet-interactive {\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n\tpointer-events: auto;\n\t}\n\n/* visual tweaks */\n\n.leaflet-container {\n\tbackground: #ddd;\n\toutline: 0;\n\t}\n.leaflet-container a {\n\tcolor: #0078A8;\n\t}\n.leaflet-container a.leaflet-active {\n\toutline: 2px solid orange;\n\t}\n.leaflet-zoom-box {\n\tborder: 2px dotted #38f;\n\tbackground: rgba(255,255,255,0.5);\n\t}\n\n\n/* general typography */\n.leaflet-container {\n\tfont: 12px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n\t}\n\n\n/* general toolbar styles */\n\n.leaflet-bar {\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\n\tborder-radius: 4px;\n\t}\n.leaflet-bar a,\n.leaflet-bar a:hover {\n\tbackground-color: #fff;\n\tborder-bottom: 1px solid #ccc;\n\twidth: 26px;\n\theight: 26px;\n\tline-height: 26px;\n\tdisplay: block;\n\ttext-align: center;\n\ttext-decoration: none;\n\tcolor: black;\n\t}\n.leaflet-bar a,\n.leaflet-control-layers-toggle {\n\tbackground-position: 50% 50%;\n\tbackground-repeat: no-repeat;\n\tdisplay: block;\n\t}\n.leaflet-bar a:hover {\n\tbackground-color: #f4f4f4;\n\t}\n.leaflet-bar a:first-child {\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\t}\n.leaflet-bar a:last-child {\n\tborder-bottom-left-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n\tborder-bottom: none;\n\t}\n.leaflet-bar a.leaflet-disabled {\n\tcursor: default;\n\tbackground-color: #f4f4f4;\n\tcolor: #bbb;\n\t}\n\n.leaflet-touch .leaflet-bar a {\n\twidth: 30px;\n\theight: 30px;\n\tline-height: 30px;\n\t}\n.leaflet-touch .leaflet-bar a:first-child {\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\t}\n.leaflet-touch .leaflet-bar a:last-child {\n\tborder-bottom-left-radius: 2px;\n\tborder-bottom-right-radius: 2px;\n\t}\n\n/* zoom control */\n\n.leaflet-control-zoom-in,\n.leaflet-control-zoom-out {\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\n\ttext-indent: 1px;\n\t}\n\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {\n\tfont-size: 22px;\n\t}\n\n\n/* layers control */\n\n.leaflet-control-layers {\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\n\tbackground: #fff;\n\tborder-radius: 5px;\n\t}\n.leaflet-control-layers-toggle {\n\tbackground-image: url(images/layers.png);\n\twidth: 36px;\n\theight: 36px;\n\t}\n.leaflet-retina .leaflet-control-layers-toggle {\n\tbackground-image: url(images/layers-2x.png);\n\tbackground-size: 26px 26px;\n\t}\n.leaflet-touch .leaflet-control-layers-toggle {\n\twidth: 44px;\n\theight: 44px;\n\t}\n.leaflet-control-layers .leaflet-control-layers-list,\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\n\tdisplay: none;\n\t}\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\n\tdisplay: block;\n\tposition: relative;\n\t}\n.leaflet-control-layers-expanded {\n\tpadding: 6px 10px 6px 6px;\n\tcolor: #333;\n\tbackground: #fff;\n\t}\n.leaflet-control-layers-scrollbar {\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n\tpadding-right: 5px;\n\t}\n.leaflet-control-layers-selector {\n\tmargin-top: 2px;\n\tposition: relative;\n\ttop: 1px;\n\t}\n.leaflet-control-layers label {\n\tdisplay: block;\n\t}\n.leaflet-control-layers-separator {\n\theight: 0;\n\tborder-top: 1px solid #ddd;\n\tmargin: 5px -10px 5px -6px;\n\t}\n\n/* Default icon URLs */\n.leaflet-default-icon-path {\n\tbackground-image: url(images/marker-icon.png);\n\t}\n\n\n/* attribution and scale controls */\n\n.leaflet-container .leaflet-control-attribution {\n\tbackground: #fff;\n\tbackground: rgba(255, 255, 255, 0.7);\n\tmargin: 0;\n\t}\n.leaflet-control-attribution,\n.leaflet-control-scale-line {\n\tpadding: 0 5px;\n\tcolor: #333;\n\t}\n.leaflet-control-attribution a {\n\ttext-decoration: none;\n\t}\n.leaflet-control-attribution a:hover {\n\ttext-decoration: underline;\n\t}\n.leaflet-container .leaflet-control-attribution,\n.leaflet-container .leaflet-control-scale {\n\tfont-size: 11px;\n\t}\n.leaflet-left .leaflet-control-scale {\n\tmargin-left: 5px;\n\t}\n.leaflet-bottom .leaflet-control-scale {\n\tmargin-bottom: 5px;\n\t}\n.leaflet-control-scale-line {\n\tborder: 2px solid #777;\n\tborder-top: none;\n\tline-height: 1.1;\n\tpadding: 2px 5px 1px;\n\tfont-size: 11px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\t-moz-box-sizing: border-box;\n\t     box-sizing: border-box;\n\n\tbackground: #fff;\n\tbackground: rgba(255, 255, 255, 0.5);\n\t}\n.leaflet-control-scale-line:not(:first-child) {\n\tborder-top: 2px solid #777;\n\tborder-bottom: none;\n\tmargin-top: -2px;\n\t}\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\n\tborder-bottom: 2px solid #777;\n\t}\n\n.leaflet-touch .leaflet-control-attribution,\n.leaflet-touch .leaflet-control-layers,\n.leaflet-touch .leaflet-bar {\n\tbox-shadow: none;\n\t}\n.leaflet-touch .leaflet-control-layers,\n.leaflet-touch .leaflet-bar {\n\tborder: 2px solid rgba(0,0,0,0.2);\n\tbackground-clip: padding-box;\n\t}\n\n\n/* popup */\n\n.leaflet-popup {\n\tposition: absolute;\n\ttext-align: center;\n\tmargin-bottom: 20px;\n\t}\n.leaflet-popup-content-wrapper {\n\tpadding: 1px;\n\ttext-align: left;\n\tborder-radius: 12px;\n\t}\n.leaflet-popup-content {\n\tmargin: 13px 19px;\n\tline-height: 1.4;\n\t}\n.leaflet-popup-content p {\n\tmargin: 18px 0;\n\t}\n.leaflet-popup-tip-container {\n\twidth: 40px;\n\theight: 20px;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -20px;\n\toverflow: hidden;\n\tpointer-events: none;\n\t}\n.leaflet-popup-tip {\n\twidth: 17px;\n\theight: 17px;\n\tpadding: 1px;\n\n\tmargin: -10px auto 0;\n\n\t-webkit-transform: rotate(45deg);\n\t   -moz-transform: rotate(45deg);\n\t    -ms-transform: rotate(45deg);\n\t     -o-transform: rotate(45deg);\n\t        transform: rotate(45deg);\n\t}\n.leaflet-popup-content-wrapper,\n.leaflet-popup-tip {\n\tbackground: white;\n\tcolor: #333;\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\n\t}\n.leaflet-container a.leaflet-popup-close-button {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tpadding: 4px 4px 0 0;\n\tborder: none;\n\ttext-align: center;\n\twidth: 18px;\n\theight: 14px;\n\tfont: 16px/14px Tahoma, Verdana, sans-serif;\n\tcolor: #c3c3c3;\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tbackground: transparent;\n\t}\n.leaflet-container a.leaflet-popup-close-button:hover {\n\tcolor: #999;\n\t}\n.leaflet-popup-scrolled {\n\toverflow: auto;\n\tborder-bottom: 1px solid #ddd;\n\tborder-top: 1px solid #ddd;\n\t}\n\n.leaflet-oldie .leaflet-popup-content-wrapper {\n\tzoom: 1;\n\t}\n.leaflet-oldie .leaflet-popup-tip {\n\twidth: 24px;\n\tmargin: 0 auto;\n\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\n\t}\n.leaflet-oldie .leaflet-popup-tip-container {\n\tmargin-top: -1px;\n\t}\n\n.leaflet-oldie .leaflet-control-zoom,\n.leaflet-oldie .leaflet-control-layers,\n.leaflet-oldie .leaflet-popup-content-wrapper,\n.leaflet-oldie .leaflet-popup-tip {\n\tborder: 1px solid #999;\n\t}\n\n\n/* div icon */\n\n.leaflet-div-icon {\n\tbackground: #fff;\n\tborder: 1px solid #666;\n\t}\n\n\n/* Tooltip */\n/* Base styles for the element that has a tooltip */\n.leaflet-tooltip {\n\tposition: absolute;\n\tpadding: 6px;\n\tbackground-color: #fff;\n\tborder: 1px solid #fff;\n\tborder-radius: 3px;\n\tcolor: #222;\n\twhite-space: nowrap;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\tpointer-events: none;\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\n\t}\n.leaflet-tooltip.leaflet-clickable {\n\tcursor: pointer;\n\tpointer-events: auto;\n\t}\n.leaflet-tooltip-top:before,\n.leaflet-tooltip-bottom:before,\n.leaflet-tooltip-left:before,\n.leaflet-tooltip-right:before {\n\tposition: absolute;\n\tpointer-events: none;\n\tborder: 6px solid transparent;\n\tbackground: transparent;\n\tcontent: \"\";\n\t}\n\n/* Directions */\n\n.leaflet-tooltip-bottom {\n\tmargin-top: 6px;\n}\n.leaflet-tooltip-top {\n\tmargin-top: -6px;\n}\n.leaflet-tooltip-bottom:before,\n.leaflet-tooltip-top:before {\n\tleft: 50%;\n\tmargin-left: -6px;\n\t}\n.leaflet-tooltip-top:before {\n\tbottom: 0;\n\tmargin-bottom: -12px;\n\tborder-top-color: #fff;\n\t}\n.leaflet-tooltip-bottom:before {\n\ttop: 0;\n\tmargin-top: -12px;\n\tmargin-left: -6px;\n\tborder-bottom-color: #fff;\n\t}\n.leaflet-tooltip-left {\n\tmargin-left: -6px;\n}\n.leaflet-tooltip-right {\n\tmargin-left: 6px;\n}\n.leaflet-tooltip-left:before,\n.leaflet-tooltip-right:before {\n\ttop: 50%;\n\tmargin-top: -6px;\n\t}\n.leaflet-tooltip-left:before {\n\tright: 0;\n\tmargin-right: -12px;\n\tborder-left-color: #fff;\n\t}\n.leaflet-tooltip-right:before {\n\tleft: 0;\n\tmargin-left: -12px;\n\tborder-right-color: #fff;\n\t}\n",
            "type": "text/css",
            "title": "$:/plugins/sycom/leaflet/lib/leaflet.css",
            "tags": "$:/tags/Stylesheet"
        },
        "$:/plugins/sycom/leaflet/lib/leaflet-markercluster.css": {
            "text": ".leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {\n\t-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;\n\ttransition: transform 0.3s ease-out, opacity 0.3s ease-in;\n}\n\n.leaflet-cluster-spider-leg {\n\t/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */\n\t-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;\n\t-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;\n\t-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;\n\ttransition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;\n}\n",
            "type": "text/css",
            "title": "$:/plugins/sycom/leaflet/lib/leaflet-markercluster.css",
            "tags": "$:/tags/Stylesheet"
        },
        "$:/plugins/sycom/leaflet/lib/leaflet.js": {
            "text": "var L;if($tw.browser){\n/* @preserve\n * Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com\n * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?i(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],i):i(t.L={})}(this,function(t){\"use strict\";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function u(t){return h(t).split(/\\s+/)}function l(t,i){t.hasOwnProperty(\"options\")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+\"=\"+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf(\"?\")?\"&\":\"?\")+n.join(\"&\")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error(\"No value provided for variable \"+t);return\"function\"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window[\"webkit\"+t]||window[\"moz\"+t]||window[\"ms\"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if(\"undefined\"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn(\"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.\",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:\"object\"==typeof t&&\"x\"in t&&\"y\"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error(\"Invalid LatLng object: (\"+t+\", \"+i+\")\");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&\"object\"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:\"object\"==typeof t&&\"lat\"in t?new M(t.lat,\"lng\"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS(\"http://www.w3.org/2000/svg\",t)}function k(t,i){var e,n,o,s,r,a,h=\"\";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?\"L\":\"M\")+a.x+\" \"+a.y;h+=i?Xi?\"z\":\"x\":\"\"}return h||\"M0 0\"}function I(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function A(t,i,e,n){return\"touchstart\"===i?O(t,e,n):\"touchmove\"===i?W(t,e,n):\"touchend\"===i&&H(t,e,n),this}function B(t,i,e){var n=t[\"_leaflet_\"+i+e];return\"touchstart\"===i?t.removeEventListener(Qi,n,!1):\"touchmove\"===i?t.removeEventListener(te,n,!1):\"touchend\"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if(\"mouse\"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t[\"_leaflet_touchstart\"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&\"mouse\"!==t.pointerType||0!==t.buttons)&&j(t,i)};t[\"_leaflet_touchmove\"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t[\"_leaflet_touchend\"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type=\"dblclick\",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+\"dblclick\"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener(\"dblclick\",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+\"dblclick\"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener(\"dblclick\",o,!1),this}function V(t,i,e,n){if(\"object\"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if(\"object\"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?\"_\"+n(o):\"\");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf(\"touch\")?A(t,i,r,s):!Vi||\"dblclick\"!==i||!F||Ui&&Si?\"addEventListener\"in t?\"mousewheel\"===i?t.addEventListener(\"onwheel\"in t?\"wheel\":\"mousewheel\",r,!1):\"mouseenter\"===i||\"mouseleave\"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener(\"mouseenter\"===i?\"mouseover\":\"mouseout\",r,!1)):(\"click\"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):\"attachEvent\"in t&&t.attachEvent(\"on\"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?\"_\"+n(o):\"\"),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf(\"touch\")?B(t,i,s):!Vi||\"dblclick\"!==i||!U||Ui&&Si?\"removeEventListener\"in t?\"mousewheel\"===i?t.removeEventListener(\"onwheel\"in t?\"wheel\":\"mousewheel\",r,!1):t.removeEventListener(\"mouseenter\"===i?\"mouseover\":\"mouseleave\"===i?\"mouseout\":i,r,!1):\"detachEvent\"in t&&t.detachEvent(\"on\"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,\"mousewheel\",Y),this}function J(t){return V(t,\"mousedown touchstart dblclick\",Y),G(t,\"click\",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return\"string\"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||\"auto\"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return\"auto\"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||\"\",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp(\"(^|\\\\s)\"+i+\"(\\\\s|$)\").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+\" \":\"\")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((\" \"+gt(t)+\" \").replace(\" \"+i+\" \",\" \")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){\"opacity\"in t.style?t.style.opacity=i:\"filter\"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n=\"DXImageTransform.Microsoft.Alpha\";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=\" progid:\"+n+\"(opacity=\"+i+\")\"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?\"translate(\"+n.x+\"px,\"+n.y+\"px)\":\"translate3d(\"+n.x+\"px,\"+n.y+\"px,0)\")+(e?\" scale(\"+e+\")\":\"\")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+\"px\",t.style.top=i.y+\"px\")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,\"dragstart\",$)}function Tt(){q(window,\"dragstart\",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline=\"none\",V(window,\"keydown\",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,\"keydown\",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+\"\"?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=At(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function At(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r=\"Feature\"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case\"Point\":return e=l(a),u?u(t,e):new Xe(e);case\"MultiPoint\":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case\"LineString\":case\"MultiLineString\":return n=Ft(a,\"LineString\"===r.type?0:1,l),new tn(n,i);case\"Polygon\":case\"MultiPolygon\":return n=Ft(a,\"Polygon\"===r.type?1:2,l),new en(n,i);case\"GeometryCollection\":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:\"Feature\",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error(\"Invalid GeoJSON object.\")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i=\"number\"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return\"Feature\"===t.type||\"FeatureCollection\"===t.type?t:{type:\"Feature\",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\\{ *([\\w_-]+) *\\}/g,ei=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},ni=\"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\",oi=0,si=window.requestAnimationFrame||p(\"RequestAnimationFrame\")||m,ri=window.cancelAnimationFrame||p(\"CancelAnimationFrame\")||p(\"CancelRequestAnimationFrame\")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&\"prototype\"!==s&&\"__super__\"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e=\"function\"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if(\"object\"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if(\"object\"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if(\"object\"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+a(this.x)+\", \"+a(this.y)+\")\"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t=\"number\"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t=\"number\"==typeof t[0]||t instanceof M||\"lat\"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(\",\")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return\"LatLng(\"+a(this.lat,t)+\", \"+a(this.lng,t)+\")\"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:\"EPSG:3857\",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:\"EPSG:900913\"}),xi=document.documentElement.style,wi=\"ActiveXObject\"in window,Li=wi&&!document.addEventListener,Pi=\"msLaunchUri\"in navigator&&!(\"documentMode\"in document),bi=I(\"webkit\"),Ti=I(\"android\"),zi=I(\"android 2\")||I(\"android 3\"),Mi=parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&I(\"Google\")&&Mi<537&&!(\"AudioNode\"in window),Zi=!!window.opera,Si=I(\"chrome\"),Ei=I(\"gecko\")&&!bi&&!Zi&&!wi,ki=!Si&&I(\"safari\"),Ii=I(\"phantom\"),Ai=\"OTransition\"in xi,Bi=0===navigator.platform.indexOf(\"Win\"),Oi=wi&&\"transition\"in xi,Ri=\"WebKitCSSMatrix\"in window&&\"m11\"in new window.WebKitCSSMatrix&&!zi,Di=\"MozPerspective\"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ai&&!Ii,ji=\"undefined\"!=typeof orientation||I(\"mobile\"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement(\"canvas\").getContext,Xi=!(!document.createElementNS||!E(\"svg\").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement(\"div\");t.innerHTML='<v:shape adj=\"1\"/>';var i=t.firstChild;return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ii,opera12:Ai,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?\"MSPointerDown\":\"pointerdown\",te=Fi?\"MSPointerMove\":\"pointermove\",ie=Fi?\"MSPointerUp\":\"pointerup\",ee=Fi?\"MSPointerCancel\":\"pointercancel\",ne=[\"INPUT\",\"SELECT\",\"OPTION\"],oe={},se=!1,re=0,ae=Fi?\"MSPointerDown\":Ui?\"pointerdown\":\"touchstart\",he=Fi?\"MSPointerUp\":Ui?\"pointerup\":\"touchend\",ue=\"_leaflet_\",le=\"_leaflet_events\",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt([\"transform\",\"WebkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),me=xt([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),fe=\"webkitTransition\"===me||\"OTransition\"===me?me+\"End\":\"transitionend\";if(\"onselectstart\"in document)mi=function(){V(window,\"selectstart\",$)},fi=function(){q(window,\"selectstart\",$)};else{var ge=xt([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]=\"none\"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire(\"step\")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire(\"end\")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o=\"number\"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error(\"Bounds are not valid.\");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire(\"moveend\");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire(\"movestart\"),!1!==i.animate){pt(this._mapPane,\"leaflet-pan-anim\");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire(\"move\").fire(\"moveend\");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off(\"moveend\",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on(\"moveend\",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off(\"moveend\",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?\"permission denied\":2===i?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:i,message:\"Geolocation error: \"+e+\".\"})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)\"number\"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire(\"locationfound\",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire(\"unload\");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error(\"Map container not found.\");if(i._leaflet_id)throw new Error(\"Map container is already initialized.\");V(i,\"scroll\",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,\"leaflet-container\"+(Vi?\" leaflet-touch\":\"\")+(Ki?\" leaflet-retina\":\"\")+(Li?\" leaflet-oldie\":\"\")+(ki?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\"));var i=at(t,\"position\");\"absolute\"!==i&&\"relative\"!==i&&\"fixed\"!==i&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),Lt(this._mapPane,new x(0,0)),this.createPane(\"tilePane\"),this.createPane(\"shadowPane\"),this.createPane(\"overlayPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(pt(t.markerPane,\"leaflet-zoom-hide\"),pt(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire(\"viewprereset\");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire(\"viewreset\"),e&&this.fire(\"load\")},_moveStart:function(t,i){return t&&this.fire(\"zoomstart\"),i||this.fire(\"movestart\"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire(\"zoom\",e),this.fire(\"move\",e)},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress\",this._handleDOMEvent,this),this.options.trackResize&&i(window,\"resize\",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s=\"mouseout\"===i||\"mouseover\"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&(\"click\"===i||\"preclick\"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;\"mousedown\"!==i&&\"keypress\"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,e,n){if(\"click\"===t.type){var o=i({},t);o.type=\"preclick\",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];\"contextmenu\"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if(\"keypress\"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on(\"load\",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){mt(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on(\"load moveend\",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:\"topright\"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,\"leaflet-control\"),-1!==e.indexOf(\"bottom\")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+\" \"+e+o;i[t+o]=ht(\"div\",s,n)}var i=this._controlCorners={},e=\"leaflet-\",n=this._controlContainer=ht(\"div\",e+\"control-container\",this._container);t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on(\"zoomend\",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on(\"add remove\",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off(\"zoomend\",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off(\"add remove\",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off(\"add remove\",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,\"leaflet-control-layers-expanded\"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,\"leaflet-control-layers-scrollbar\"),this._form.style.height=t+\"px\"):mt(this._form,\"leaflet-control-layers-scrollbar\"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,\"leaflet-control-layers-expanded\"),this},_initLayout:function(){var t=\"leaflet-control-layers\",i=this._container=ht(\"div\",t),e=this.options.collapsed;i.setAttribute(\"aria-haspopup\",!0),J(i),X(i);var n=this._form=ht(\"form\",t+\"-list\");e&&(this._map.on(\"click\",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht(\"a\",t+\"-toggle\",i);o.href=\"#\",o.title=\"Layers\",Vi?(V(o,\"click\",Q),V(o,\"click\",this.expand,this)):V(o,\"focus\",this.expand,this),e||this.expand(),this._baseLayersList=ht(\"div\",t+\"-base\",n),this._separator=ht(\"div\",t+\"-separator\",n),this._overlaysList=ht(\"div\",t+\"-overlays\",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on(\"add remove\",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?\"\":\"none\"),this._separator.style.display=i&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"'+t+'\"'+(i?' checked=\"checked\"':\"\")+\"/>\",n=document.createElement(\"div\");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement(\"label\"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement(\"input\")).type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=o):i=this._createRadioElement(\"leaflet-base-layers\",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,\"click\",this._onInputClick,this);var s=document.createElement(\"span\");s.innerHTML=\" \"+t.name;var r=document.createElement(\"div\");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"&#x2212;\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var i=\"leaflet-control-zoom\",e=ht(\"div\",i+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+\"-in\",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+\"-out\",e,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),e},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht(\"a\",e,n);return s.innerHTML=t,s.href=\"#\",s.title=i,s.setAttribute(\"role\",\"button\"),s.setAttribute(\"aria-label\",i),J(s),V(s,\"click\",Q),V(s,\"click\",o,this),V(s,\"click\",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i=\"leaflet-disabled\";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht(\"div\",\"leaflet-control-scale\"),e=this.options;return this._addScales(e,\"leaflet-control-scale-line\",i),t.on(e.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht(\"div\",i,e)),t.imperial&&(this._iScale=ht(\"div\",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+\" m\":i/1e3+\" km\";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+\" mi\",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+\" ft\",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+\"px\",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+\"\").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:\"bottomright\",prefix:'<a href=\"http://leafletjs.com\" title=\"A JS library for interactive maps\">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht(\"div\",\"leaflet-control-attribution\"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(\", \")),this._container.innerHTML=e.join(\" | \")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?\"touchstart mousedown\":\"mousedown\",Ie={mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},Ae={mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,\"leaflet-zoom-anim\")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire(\"down\");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ae[t.type],this._onMove,this),V(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||($(t),this._moved||(this.fire(\"dragstart\"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,\"leaflet-dragging\"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,\"leaflet-drag-target\")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire(\"predrag\",t),Lt(this._element,this._newPos),this.fire(\"drag\",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,\"leaflet-dragging\"),this._lastTarget&&(mt(this._lastTarget,\"leaflet-drag-target\"),this._lastTarget=null);for(var t in Ae)q(document,Ae[t],this._onMove,this),q(document,Ie[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire(\"dragend\",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:It,_getEdgeIntersection:At,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:\"EPSG:3395\",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:\"EPSG:4326\",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once(\"remove\",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire(\"add\"),i.fire(\"layeradd\",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire(\"zoomlevelschange\"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke(\"setZIndex\",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire(\"layeradd\",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire(\"layerremove\",{layer:t})):this},setStyle:function(t){return this.invoke(\"setStyle\",t)},bringToFront:function(){return this.invoke(\"bringToFront\")},bringToBack:function(){return this.invoke(\"bringToBack\")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon(\"icon\",t)},createShadow:function(t){return this._createIcon(\"shadow\",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if(\"icon\"===t)throw new Error(\"iconUrl not set in Icon options (see the docs).\");return null}var n=this._createImg(e,i&&\"IMG\"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+\"Size\"];\"number\"==typeof n&&(n=[n,n]);var o=w(n),s=w(\"shadow\"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className=\"leaflet-marker-\"+i+\" \"+(e.className||\"\"),s&&(t.style.marginLeft=-s.x+\"px\",t.style.marginTop=-s.y+\"px\"),o&&(t.style.width=o.x+\"px\",t.style.height=o.y+\"px\")},_createImg:function(t,i){return i=i||document.createElement(\"img\"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+\"RetinaUrl\"]||this.options[t+\"Url\"]}}),Ke=Ge.extend({options:{iconUrl:\"marker-icon.png\",iconRetinaUrl:\"marker-icon-2x.png\",shadowUrl:\"marker-shadow.png\",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht(\"div\",\"leaflet-default-icon-path\",document.body),i=at(t,\"background-image\")||at(t,\"backgroundImage\");return document.body.removeChild(t),i=null===i||0!==i.indexOf(\"url\")?\"\":i.replace(/^url\\([\"']?/,\"\").replace(/marker-icon\\.png[\"']?\\)$/,\"\")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,\"leaflet-marker-draggable\")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,\"leaflet-marker-draggable\")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire(\"movestart\").fire(\"dragstart\")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire(\"move\",t).fire(\"drag\",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire(\"moveend\").fire(\"dragend\",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:\"\",alt:\"\",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:\"markerPane\",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on(\"zoomanim\",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off(\"zoomanim\",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire(\"move\",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i=\"leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),\"IMG\"===e.tagName&&(e.alt=t.alt||\"\")),pt(e,i),t.keyboard&&(e.tabIndex=\"0\"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=\"\"),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane(\"shadowPane\").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,\"leaflet-interactive\"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:\"#3388ff\",weight:3,opacity:1,lineCap:\"round\",lineJoin:\"round\",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:\"evenodd\",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire(\"move\",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if(\"number\"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error(\"Circle radius cannot be NaN\");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){\"function\"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:\"Point\",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?\"Multi\":\"\")+\"LineString\",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?\"Multi\":\"\")+\"Polygon\",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:\"MultiPoint\",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(\"MultiPoint\"===i)return this.toMultiPoint(t);var e=\"GeometryCollection\"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);\"FeatureCollection\"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:\"GeometryCollection\"}):{type:\"FeatureCollection\",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:\"\",interactive:!1,crossOrigin:!1,errorOverlayUrl:\"\",zIndex:1,className:\"\"},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,\"leaflet-interactive\"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=\"IMG\"===this._url.tagName,i=this._image=t?this._url:ht(\"img\");pt(i,\"leaflet-image-layer\"),this._zoomAnimated&&pt(i,\"leaflet-zoom-animated\"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,\"load\"),i.onerror=e(this._overlayOnError,this,\"error\"),this.options.crossOrigin&&(i.crossOrigin=\"\"),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+\"px\",t.style.height=e.y+\"px\"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire(\"error\");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t=\"VIDEO\"===this._url.tagName,i=this._image=t?this._url:ht(\"video\");if(pt(i,\"leaflet-image-layer\"),this._zoomAnimated&&pt(i,\"leaflet-zoom-animated\"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,\"load\"),t){for(var n=i.getElementsByTagName(\"source\"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=ht(\"source\");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:\"\",pane:\"popupPane\"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility=\"hidden\",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility=\"\",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i=\"function\"==typeof this._content?this._content(this._source||this):this._content;if(\"string\"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire(\"contentupdate\")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+\"px\",this._container.style.left=o+\"px\"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:\"\"},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire(\"popupopen\",{popup:this}),this._source&&(this._source.fire(\"popupopen\",{popup:this},!0),this._source instanceof Je||this._source.on(\"preclick\",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire(\"popupclose\",{popup:this}),this._source&&(this._source.fire(\"popupclose\",{popup:this},!0),this._source instanceof Je||this._source.off(\"preclick\",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t=\"leaflet-popup\",i=this._container=ht(\"div\",t+\" \"+(this.options.className||\"\")+\" leaflet-zoom-animated\"),e=this._wrapper=ht(\"div\",t+\"-content-wrapper\",i);if(this._contentNode=ht(\"div\",t+\"-content\",e),J(e),X(this._contentNode),V(e,\"contextmenu\",Y),this._tipContainer=ht(\"div\",t+\"-tip-container\",i),this._tip=ht(\"div\",t+\"-tip\",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht(\"a\",t+\"-close-button\",i);n.href=\"#close\",n.innerHTML=\"&#215;\",V(n,\"click\",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width=\"\",i.whiteSpace=\"nowrap\";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+\"px\",i.whiteSpace=\"\",i.height=\"\";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+\"px\",pt(t,\"leaflet-popup-scrolled\")):mt(t,\"leaflet-popup-scrolled\"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,\"marginBottom\"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire(\"autopanstart\").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&this._source.fire(\"tooltipopen\",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&this._source.fire(\"tooltipclose\",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=ht(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();\"top\"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):\"bottom\"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):\"center\"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):\"right\"===s||\"auto\"===s&&o.x<n.x?(s=\"right\",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s=\"left\",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,\"leaflet-tooltip-right\"),mt(e,\"leaflet-tooltip-left\"),mt(e,\"leaflet-tooltip-top\"),mt(e,\"leaflet-tooltip-bottom\"),pt(e,\"leaflet-tooltip-\"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?\"off\":\"on\",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,\"leaflet-clickable\"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,\"leaflet-clickable\"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:\"leaflet-div-icon\"},createIcon:function(t){var i=t&&\"DIV\"===t.tagName?t:document.createElement(\"div\"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:\"\",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+\"px \"+-n.y+\"px\"}return this._setIconStyles(i,\"icon\"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:\"tilePane\",className:\"\",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement(\"div\")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht(\"div\",\"leaflet-layer \"+(this.options.className||\"\")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht(\"div\",\"leaflet-tile-container leaflet-zoom-animated\",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error(\"Attempted to load an infinite number of tiles\");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var i=t.split(\":\"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute(\"src\",ni),ut(i.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,\"leaflet-tile\");var i=this.getTileSize();t.style.width=i.x+\"px\",t.style.height=i.y+\"px\",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility=\"hidden\")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire(\"tileloadstart\",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire(\"tileerror\",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),\"string\"==typeof i.subdomains&&(i.subdomains=i.subdomains.split(\"\")),Ti||this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement(\"img\");return V(n,\"load\",e(this._tileOnLoad,this,i,n)),V(n,\"error\",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=\"\"),n.alt=\"\",n.setAttribute(\"role\",\"presentation\"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e[\"-y\"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute(\"src\")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(\",\"),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");V(t,\"mousemove\",o(this._onMouseMove,32,this),this),V(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),V(t,\"mouseout\",this._handleMouseOut,this),this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+\"px\",i.style.height=e.y+\"px\",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(\",\"),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?\"lineTo\":\"moveTo\"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||\"evenodd\")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,\"leaflet-interactive\"),this._fireEvent([i],t,\"mouseout\"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,\"leaflet-interactive\"),this._fireEvent([n],t,\"mouseover\"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add(\"lvml\",\"urn:schemas-microsoft-com:vml\"),function(t){return document.createElement(\"<lvml:\"+t+' class=\"lvml\">')}}catch(t){return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),vn={_initContainer:function(){this._container=ht(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var i=t._container=gn(\"shape\");pt(i,\"leaflet-vml-shape \"+(this.options.className||\"\")),i.coordsize=\"1 1\",t._path=gn(\"path\"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn(\"stroke\")),o.appendChild(i),i.weight=n.weight+\"px\",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):i.dashStyle=\"\",i.endcap=n.lineCap.replace(\"butt\",\"flat\"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn(\"fill\")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+i.x+\",\"+i.y+\" \"+e+\",\"+n+\" 0,23592600\")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=yn(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute(\"width\",i.x),e.setAttribute(\"height\",i.y)),Lt(e,t.min),e.setAttribute(\"viewBox\",[t.min.x,t.min.y,i.x,i.y].join(\" \")),this.fire(\"update\")}},_initPath:function(t){var i=t._path=yn(\"path\");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,\"leaflet-interactive\"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute(\"stroke\",e.color),i.setAttribute(\"stroke-opacity\",e.opacity),i.setAttribute(\"stroke-width\",e.weight),i.setAttribute(\"stroke-linecap\",e.lineCap),i.setAttribute(\"stroke-linejoin\",e.lineJoin),e.dashArray?i.setAttribute(\"stroke-dasharray\",e.dashArray):i.removeAttribute(\"stroke-dasharray\"),e.dashOffset?i.setAttribute(\"stroke-dashoffset\",e.dashOffset):i.removeAttribute(\"stroke-dashoffset\")):i.setAttribute(\"stroke\",\"none\"),e.fill?(i.setAttribute(\"fill\",e.fillColor||e.color),i.setAttribute(\"fill-opacity\",e.fillOpacity),i.setAttribute(\"fill-rule\",e.fillRule||\"evenodd\")):i.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n=\"a\"+e+\",\"+(Math.max(Math.round(t._radiusY),1)||e)+\" 0 1,0 \",o=t._empty()?\"M0 0\":\"M\"+(i.x-e)+\",\"+i.y+n+2*e+\",0 \"+n+2*-e+\",0 \";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute(\"d\",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){V(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){q(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht(\"div\",\"leaflet-zoom-box\",this._container),pt(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+\"px\",this._box.style.height=e.y+\"px\"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,\"leaflet-crosshair\")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire(\"boxzoomend\",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook(\"addHandler\",\"boxZoom\",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;\"center\"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook(\"addHandler\",\"doubleClickZoom\",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,\"leaflet-grab\"),mt(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire(\"dragend\",t),n)i.fire(\"moveend\");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire(\"moveend\")}}});Le.addInitHook(\"addHandler\",\"dragging\",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex=\"0\"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire(\"focus\")},_onBlur:function(){this._focused=!1,this._map.fire(\"blur\")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,\"keydown\",this._onKeyDown,this)},_removeHooks:function(){q(document,\"keydown\",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook(\"addHandler\",\"keyboard\",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,\"mousewheel\",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,\"mousewheel\",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook(\"addHandler\",\"scrollWheelZoom\",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){q(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&\"a\"===n.tagName.toLowerCase()&&pt(n,\"leaflet-active\"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",i))},this),1e3),this._simulateEvent(\"mousedown\",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&\"a\"===e.tagName.toLowerCase()&&mt(e,\"leaflet-active\"),this._simulateEvent(\"mouseup\",i),this._isTapValid()&&this._simulateEvent(\"click\",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent(\"mousemove\",i)},_simulateEvent:function(t,i){var e=document.createEvent(\"MouseEvents\");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook(\"addHandler\",\"tap\",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,\"leaflet-touch-zoom\"),V(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,\"leaflet-touch-zoom\"),q(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),\"center\"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,\"touchmove\",this._onTouchMove,this),V(document,\"touchend\",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),\"center\"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,\"touchmove\",this._onTouchMove),q(document,\"touchend\",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook(\"addHandler\",\"touchZoom\",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version=\"1.3.1\",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}});\n}\nexports.L = L;\n",
            "type": "application/javascript",
            "title": "$:/plugins/sycom/leaflet/lib/leaflet.js",
            "module-type": "library"
        },
        "$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js": {
            "text": "if($tw.browser){\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e.Leaflet=e.Leaflet||{},e.Leaflet.markercluster=e.Leaflet.markercluster||{}))}(this,function(e){\"use strict\";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire(\"layeradd\",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire(\"layeradd\",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire(\"layeradd\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):e.getLatLng?this._map?e.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire(\"layerremove\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire(\"layerremove\",{layer:e}),this):(this._nonPointGroup.removeLayer(e),this.fire(\"layerremove\",{layer:e}),this)},addLayers:function(e,t){if(!L.Util.isArray(e))return this.addLayer(e);var i,n=this._featureGroup,r=this._nonPointGroup,s=this.options.chunkedLoading,o=this.options.chunkInterval,a=this.options.chunkProgress,h=e.length,l=0,u=!0;if(this._map){var _=(new Date).getTime(),d=L.bind(function(){for(var c=(new Date).getTime();h>l;l++){if(s&&0===l%200){var p=(new Date).getTime()-c;if(p>o)break}if(i=e[l],i instanceof L.LayerGroup)u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length;else if(i.getLatLng){if(!this.hasLayer(i)&&(this._addLayer(i,this._maxZoom),t||this.fire(\"layeradd\",{layer:i}),i.__parent&&2===i.__parent.getChildCount())){var f=i.__parent.getAllChildMarkers(),m=f[0]===i?f[1]:f[0];n.removeLayer(m)}}else r.addLayer(i),t||this.fire(\"layeradd\",{layer:i})}a&&a(l,h,(new Date).getTime()-_),l===h?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(d,this.options.chunkDelay)},this);d()}else for(var c=this._needsClustering;h>l;l++)i=e[l],i instanceof L.LayerGroup?(u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length):i.getLatLng?this.hasLayer(i)||c.push(i):r.addLayer(i);return this},removeLayers:function(e){var t,i,n=e.length,r=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire(\"layerremove\",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=n;for(t=0;h>t;t++)i=a[t],i instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire(\"layerremove\",{layer:i}),r.hasLayer(i)&&(r.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire(\"layerremove\",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;t>=0;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,n,r,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),n=s.length-1;n>=0;n--){for(i=!0,r=o.length-1;r>=0;r--)if(o[r].layer===s[n]){i=!1;break}i&&e.call(t,s[n])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var e=[];return this.eachLayer(function(t){e.push(t)}),e},getLayer:function(e){var t=null;return e=parseInt(e,10),this.eachLayer(function(i){L.stamp(i)===e&&(t=i)}),t},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;t>=0;t--)if(i[t]===e)return!0;for(i=this._needsRemoving,t=i.length-1;t>=0;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){\"function\"!=typeof t&&(t=function(){});var i=function(){!e._icon&&!e.__parent._icon||this._inZoomAnimation||(this._map.off(\"moveend\",i,this),this.off(\"animationend\",i,this),e._icon?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoom<Math.round(this._map._zoom)?(this._map.on(\"moveend\",i,this),this._map.panTo(e.getLatLng())):(this._map.on(\"moveend\",i,this),this.on(\"animationend\",i,this),e.__parent.zoomToBounds())},onAdd:function(e){this._map=e;var t,i,n;if(!isFinite(this._map.getMaxZoom()))throw\"Map has no maxZoom specified\";for(this._featureGroup.addTo(e),this._nonPointGroup.addTo(e),this._gridClusters||this._generateInitialClusters(),this._maxLat=e.options.crs.projection.MAX_LATITUDE,t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],n.newlatlng=n.layer._latlng,n.layer._latlng=n.latlng;for(t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],this._removeLayer(n.layer,!0),n.layer._latlng=n.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;i>=0;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,n=this._gridUnclustered,r=Math.floor(this._map.getMinZoom());t>=r&&n[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){e.target.__dragStart&&this._moveChild(e.target,e.target.__dragStart,e.target._latlng),delete e.target.__dragStart},_removeLayer:function(e,t,i){var n=this._gridClusters,r=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoom<a));)t&&l._childCount<=1?(h=l._markers[0]===e?l._markers[1]:l._markers[0],n[l._zoom].removeObject(l,o.project(l._cLatLng,l._zoom)),r[l._zoom].addObject(h,o.project(h.getLatLng(),l._zoom)),this._arraySplice(l.__parent._childClusters,l),l.__parent._markers.push(h),h.__parent=l.__parent,l._icon&&(s.removeLayer(l),i||s.addLayer(h))):l._iconNeedsUpdate=!0,l=l.__parent;delete e.__parent},_isOrIsParent:function(e,t){for(;t;){if(e===t)return!0;t=t.parentNode}return!1},fire:function(e,t,i){if(t&&t.layer instanceof L.MarkerCluster){if(t.originalEvent&&this._isOrIsParent(t.layer._icon,t.originalEvent.relatedTarget))return;e=\"cluster\"+e}L.FeatureGroup.prototype.fire.call(this,e,t,i)},listens:function(e,t){return L.FeatureGroup.prototype.listens.call(this,e,t)||L.FeatureGroup.prototype.listens.call(this,\"cluster\"+e,t)},_defaultIconCreateFunction:function(e){var t=e.getChildCount(),i=\" marker-cluster-\";return i+=10>t?\"small\":100>t?\"medium\":\"large\",new L.DivIcon({html:\"<div><span>\"+t+\"</span></div>\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(t||n)&&this.on(\"clusterclick\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){for(var t=e.layer,i=t;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),e.layer.getChildCount()>2&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(e||i)&&this.off(\"clusterclick\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,n=i;\"function\"!=typeof i&&(n=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var r=e;r>=t;r--)this._gridClusters[r]=new L.DistanceGrid(n(r)),this._gridUnclustered[r]=new L.DistanceGrid(n(r));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,n,r=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);t>=o;t--){i=this._map.project(e.getLatLng(),t);var a=r[t].getNearObject(i);if(a)return a._addChild(e),e.__parent=a,void 0;if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);r[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l,e.__parent=l;var u=l;for(n=t-1;n>h._zoom;n--)u=new this._markerCluster(this,n,u),r[n].addObject(u,this._map.project(a.getLatLng(),n));return h._addChild(u),this._removeFromGridUnclustered(a,t),void 0}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;e<this._queue.length;e++)this._queue[e].call(this);this._queue.length=0,clearTimeout(this._queueTimeout),this._queueTimeout=null},_mergeSplitClusters:function(){var e=Math.round(this._map._zoom);this._processQueue(),this._zoom<e&&this._currentShownBounds.intersects(this._getExpandedVisibleBounds())?(this._animationStart(),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,this._getExpandedVisibleBounds()),this._animationZoomIn(this._zoom,e)):this._zoom>e?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,n=e.getLayers(),r=0;for(t=t||[];r<n.length;r++)i=n[r],i instanceof L.LayerGroup?this._extractNonGroupLayers(i,t):t.push(i);return t},_overrideMarkerIcon:function(e){var t=e.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[e]}});return t}});L.MarkerClusterGroup.include({_mapBoundsInfinite:new L.LatLngBounds(new L.LatLng(-1/0,-1/0),new L.LatLng(1/0,1/0))}),L.MarkerClusterGroup.include({_noAnimation:{_animationStart:function(){},_animationZoomIn:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationZoomOut:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationAddLayer:function(e,t){this._animationAddLayerNonAnimated(e,t)}},_withAnimation:{_animationStart:function(){this._map._mapPane.className+=\" leaflet-cluster-anim\",this._inZoomAnimation++},_animationZoomIn:function(e,t){var i,n=this._getExpandedVisibleBounds(),r=this._featureGroup,s=Math.floor(this._map.getMinZoom());this._ignoreMove=!0,this._topClusterLevel._recursively(n,e,s,function(s){var o,a=s._latlng,h=s._markers;for(n.contains(a)||(a=null),s._isSingleParent()&&e+1===t?(r.removeLayer(s),s._recursivelyAddChildrenToMap(null,t,n)):(s.clusterHide(),s._recursivelyAddChildrenToMap(a,t,n)),i=h.length-1;i>=0;i--)o=h[i],n.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(n,t),r.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(n,e,t,function(e){e._recursivelyRestoreChildPositions(t)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(n,e,s,function(e){r.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,n=this._featureGroup;n.addLayer(e),t!==e&&(t._childCount>2?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){n.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(e,t,i){var n=this._getExpandedVisibleBounds(),r=Math.floor(this._map.getMinZoom());e._recursivelyAnimateChildrenInAndAddSelfToMap(n,r,t+1,i);var s=this;this._forceLayout(),e._recursivelyBecomeVisible(n,i),this._enqueue(function(){if(1===e._childCount){var o=e._markers[0];this._ignoreMove=!0,o.setLatLng(o.getLatLng()),this._ignoreMove=!1,o.clusterShow&&o.clusterShow()}else e._recursively(n,i,r,function(e){e._recursivelyRemoveChildrenFromMap(n,r,t+1)});s._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)};var i=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(e,t,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(e){e=e||[];for(var t=this._childClusters.length-1;t>=0;t--)this._childClusters[t].getAllChildMarkers(e);for(var i=this._markers.length-1;i>=0;i--)e.push(this._markers[i]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),n=this._group._map,r=n.getBoundsZoom(this._bounds),s=this._zoom+1,o=n.getZoom();i.length>0&&r>s;){s++;var a=[];for(t=0;t<i.length;t++)a=a.concat(i[t]._childClusters);i=a}r>s?this._group._map.setView(this._latlng,s):o>=r?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,n,r=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e<r.length;e++)i=r[e]._latlng,this._bounds.extend(i),o+=i.lat,a+=i.lng;for(e=0;e<s.length;e++)t=s[e],t._boundsNeedUpdate&&t._recalculateBounds(),this._bounds.extend(t._bounds),i=t._wLatLng,n=t._childCount,o+=i.lat*n,a+=i.lng*n;this._latlng=this._wLatLng=new L.LatLng(o/h,a/h),this._boundsNeedUpdate=!1}},_addToMap:function(e){e&&(this._backupLatlng=this._latlng,this.setLatLng(e)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(e,t,i){this._recursively(e,this._group._map.getMinZoom(),i-1,function(e){var i,n,r=e._markers;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())},function(e){var i,n,r=e._childClusters;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(e,t,i,n){this._recursively(e,n,t,function(r){r._recursivelyAnimateChildrenIn(e,r._group._map.latLngToLayerPoint(r.getLatLng()).round(),i),r._isSingleParent()&&i-1===n?(r.clusterShow(),r._recursivelyRemoveChildrenFromMap(e,t,i)):r.clusterHide(),r._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(e,t,i){this._recursively(i,this._group._map.getMinZoom()-1,t,function(n){if(t!==n._zoom)for(var r=n._markers.length-1;r>=0;r--){var s=n._markers[r];i.contains(s._latlng)&&(e&&(s._backupLatlng=s.getLatLng(),s.setLatLng(e),s.clusterHide&&s.clusterHide()),n._group._featureGroup.addLayer(s))}},function(t){t._addToMap(e)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;t>=0;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var r=this._childClusters.length-1;r>=0;r--)this._childClusters[r]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,n){var r,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;s>=0;s--)r=e._markers[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())},function(e){for(s=e._childClusters.length-1;s>=0;s--)r=e._childClusters[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())})},_recursively:function(e,t,i,n,r){var s,o,a=this._childClusters,h=this._zoom;if(h>=t&&(n&&n(this),r&&h===i&&r(this)),t>h||i>h)for(s=a.length-1;s>=0;s--)o=a[s],e.intersects(o._bounds)&&o._recursively(e,t,i,n,r)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){return this.options.opacityWhenUnclustered=this.options.opacity||1,this.setOpacity(0)},clusterShow:function(){var e=this.setOpacity(this.options.opacity||this.options.opacityWhenUnclustered);return delete this.options.opacityWhenUnclustered,e}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),n=this._getCoord(t.y),r=this._grid,s=r[n]=r[n]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,n,r=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[r]=a[r]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,n=h.length;n>i;i++)if(h[i]===e)return h.splice(i,1),1===n&&delete a[r],!0},eachObject:function(e,t){var i,n,r,s,o,a,h,l=this._grid;for(i in l){o=l[i];for(n in o)for(a=o[n],r=0,s=a.length;s>r;r++)h=e.call(t,a[r]),h&&(r--,s--)}},getNearObject:function(e){var t,i,n,r,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,c=null;for(t=u-1;u+1>=t;t++)if(r=this._grid[t])for(i=l-1;l+1>=i;i++)if(s=r[i])for(n=0,o=s.length;o>n;n++)a=s[n],h=this._sqDist(_[L.Util.stamp(a)],e),(d>h||d>=h&&null===c)&&(d=h,c=a);return c},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat,n=t[0].lng-t[1].lng;return n*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,n,r,s=0,o=null,a=[];for(i=t.length-1;i>=0;i--)n=t[i],r=this.getDistant(n,e),r>0&&(a.push(n),r>s&&(s=r,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],n=this.findMostDistantPointFromBaseLine(e,t);return n.maxPoint?(i=i.concat(this.buildConvexHull([e[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,e[1]],n.newPoints))):[e[0]]},getConvexHull:function(e){var t,i=!1,n=!1,r=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;t>=0;t--){var d=e[t];(i===!1||d.lat>i)&&(o=d,i=d.lat),(n===!1||d.lat<n)&&(a=d,n=d.lat),(r===!1||d.lng>r)&&(h=d,r=d.lng),(s===!1||d.lng<s)&&(l=d,s=d.lng)}n!==i?(_=a,u=o):(_=l,u=h);var c=[].concat(this.buildConvexHull([_,u],e),this.buildConvexHull([u,_],e));return c}}}(),L.MarkerCluster.include({getConvexHull:function(){var e,t,i=this.getAllChildMarkers(),n=[];for(t=i.length-1;t>=0;t--)e=i[t].getLatLng(),n.push(e);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(),i=this._group,n=i._map,r=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,t.length>=this._circleSpiralSwitchover?e=this._generatePointsSpiral(t.length,r):(r.y+=10,e=this._generatePointsCircle(t.length,r)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,n,r=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e),s=r/this._2PI,o=this._2PI/e,a=[];for(s=Math.max(s,35),a.length=e,i=0;e>i;i++)n=this._circleStartAngle+i*o,a[i]=new L.Point(t.x+s*Math.cos(n),t.y+s*Math.sin(n))._round();return a},_generatePointsSpiral:function(e,t){var i,n=this._group.options.spiderfyDistanceMultiplier,r=n*this._spiralLengthStart,s=n*this._spiralFootSeparation,o=n*this._spiralLengthFactor*this._2PI,a=0,h=[];for(h.length=e,i=e;i>=0;i--)e>i&&(h[i]=new L.Point(t.x+r*Math.cos(a),t.y+r*Math.sin(a))._round()),a+=s/r+5e-4*i,r+=o/a;return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,n=i._map,r=i._featureGroup,s=this.getAllChildMarkers();for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;t>=0;t--)e=s[t],r.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(n.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,n,r,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i<e.length;i++)s=a.layerPointToLatLng(t[i]),n=e[i],r=new L.Polyline([this._latlng,s],l),a.addLayer(r),n._spiderLeg=r,n._preSpiderfyLatlng=n._latlng,n.setLatLng(s),n.setZIndexOffset&&n.setZIndexOffset(1e6),h.addLayer(n);this.setOpacity(.3),o._ignoreMove=!1,o.fire(\"spiderfied\",{cluster:this,markers:e})},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerCluster.include({_animationSpiderfy:function(e,t){var i,n,r,s,o,a,h=this,l=this._group,u=l._map,_=l._featureGroup,d=this._latlng,c=u.latLngToLayerPoint(d),p=L.Path.SVG,f=L.extend({},this._group.options.spiderLegPolylineOptions),m=f.opacity;for(void 0===m&&(m=L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity),p?(f.opacity=0,f.className=(f.className||\"\")+\" leaflet-cluster-spider-leg\"):f.opacity=m,l._ignoreMove=!0,i=0;i<e.length;i++)n=e[i],a=u.layerPointToLatLng(t[i]),r=new L.Polyline([d,a],f),u.addLayer(r),n._spiderLeg=r,p&&(s=r._path,o=s.getTotalLength()+.1,s.style.strokeDasharray=o,s.style.strokeDashoffset=o),n.setZIndexOffset&&n.setZIndexOffset(1e6),n.clusterHide&&n.clusterHide(),_.addLayer(n),n._setPos&&n._setPos(c);for(l._forceLayout(),l._animationStart(),i=e.length-1;i>=0;i--)a=u.layerPointToLatLng(t[i]),n=e[i],n._preSpiderfyLatlng=n._latlng,n.setLatLng(a),n.clusterShow&&n.clusterShow(),p&&(r=n._spiderLeg,s=r._path,s.style.strokeDashoffset=0,r.setStyle({opacity:m}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:h,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,n,r,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(),c=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;i>=0;i--)t=d[i],t._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),c&&(n=t._spiderLeg,r=n._path,s=r.getTotalLength()+.1,r.style.strokeDashoffset=s,n.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&e++;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),e>1&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()\n},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),e.MarkerClusterGroup=t,e.MarkerCluster=i});\n//# sourceMappingURL=leaflet.markercluster.js.map\n}\n",
            "type": "application/javascript",
            "title": "$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js",
            "module-type": "library"
        },
        "$:/plugins/sycom/leaflet/mapCssTweaks.css.tid": {
            "title": "$:/plugins/sycom/leaflet/mapCssTweaks.css.tid",
            "created": "20161028202401905",
            "modified": "20161111151011600",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n/* add some styling tweaks to leaflet */\n.leaflet-right {\n\tmax-width:50%\n}\n.leaflet-popup-content h6 {\n\tfont-size:.7rem;\n\tmargin:0 0 .2rem 0\n}\n\n.leaflet-control-attribution {\n\theight:1.5em;\n}\n.leaflet-control-attribution:hover {\n\theight:auto;\n}\n\n.leaflet-top, .leaflet-bottom {\n    z-index:999;\n}\n\n/* solve conflict between tw and leaflet */\n.leaflet-zoom-animated {max-width: initial !important}\n\n/* solve background image problem for layer control */\n.leaflet-control-layers-toggle {\n\tbackground-image: url('data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20height%3D%2226%22%20width%3D%2226%22%3E%3Cpath%20d%3D%22M.032%2017.056l13-8%2013%208-13%208-13-8%22%20fill%3D%22%23b9b9b9%22/%3E%3Cpath%20d%3D%22M.032%2017.056l-.032.93%2013%208%2013-8%20.032-.93-13%208z%22%20fill%3D%22%23737373%22/%3E%3Cpath%20d%3D%22M0%2013.076l13-8%2013%208-13%208-13-8%22%20fill%3D%22%23cdcdcd%22/%3E%3Cpath%20d%3D%22M0%2013.076v.91l13%208%2013-8v-.91l-13%208z%22%20fill%3D%22%23737373%22/%3E%3Cpath%20d%3D%22M0%208.986l13-8%2013%208-13%208-13-8%22%20fill-opacity%3D%22.585%22%20stroke%3D%22%23797979%22%20stroke-width%3D%22.1%22%20fill%3D%22%23e9e9e9%22/%3E%3Cpath%20d%3D%22M0%208.986v1l13%208%2013-8v-1l-13%208z%22%20fill%3D%22%23737373%22/%3E%3C/svg%3E') !important\n}\n\n/* default polygon stylin */\n.polyline {fill:none}\n.leaflet-popup-content ul {padding:0 1em}\n\n/* some styling for clusters */\n.marker-cluster div {\n    min-width:16px;min-height:16px;\n    border-radius:50%;border:none;\n    vertical-align:middle;text-align:center;font-weight:bold\n    }\n.marker-cluster div div{width:100%;height:100%}\n.marker-cluster div span {display:block;text-shadow:0px 0px 6px #ffffff}\n\npath.leaflet-clickable {fill:<<colour primary>>;fill-opacity: 0.5;stroke:<<colour primary>>}\n.leaflet-marker-colored {fill:<<colour primary>>}\n"
        },
        "$:/plugins/sycom/leaflet/mapWidget.tid": {
            "title": "$:/plugins/sycom/leaflet/mapWidget.tid",
            "text": "/*\\\ncreated: 20151028202401905\nmodified: 20170318234011605\ntitle: $:/plugins/sycom/leaflet/mapWidget.tid\ntype: application/javascript\nmodule-type: widget\n\nA widget for displaying leaflet map in TiddlyWiki\n\n\\*/\n\n(function() {\n    /* ----------------------- */\n    /*jslint node: true, browser: true */\n    /*global $tw: false */\n    \"use strict\";\n    var Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n        L = require(\"$:/plugins/sycom/leaflet/lib/leaflet.js\"),\n        markerClusterGroup = require(\"$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js\");\n\n    var mapWidget = function(parseTreeNode, options) {\n        this.initialise(parseTreeNode, options);\n    };\n\n    // global vars\n    var Map = [],            // map collection\n        map = 0,             // map order number\n        tn = 0,              // tiddler number\n        fCluster = [],       // the clusters\n        Colour = [],         // the colors\n        clusterRadius = [],  // cluster radii\n        clusterType = [],    // clustering for whole map or for each tiddler\n        lfltDefBounds = [\n            [52.75, -2.55],\n            [52.85, -2.65]\n        ],                   // default bounds when nothing given\n        bounds,              // global bounds for map ?todo one per map?\n        iter = [],           // iteration indicator to avoid infinite loops\n        setting = {};        // the map's settings\n\n    /* Inherit from the base widget class */\n    mapWidget.prototype = new Widget();\n\n    /* Render this widget into the DOM */\n    mapWidget.prototype.render = function(parent, nextSibling) {\n        bounds = null;\n        // Compute our attributes\n        this.computeAttributes();\n        // Get the base settings for rendering : width / height (default : 100% / 500px)\n        // !todo : make a settings tidller in order to let user set it for the whole wiki (may be inspired from roadtree)\n        // !todo what happens if windows is resized?\n        var width = this.getAttribute(\"width\", \"100%\"),\n            height = this.getAttribute(\"height\", \"420px\");\n        // creating the div container\n        var div = this.document.createElement(\"div\");\n        div.setAttribute(\"id\", \"lfltMap-\" + map);\n        div.setAttribute(\"style\", \"width:\" + width + \";height:\" + height);\n        // Save the parent dom node\n        this.parentDomNode = parent;\n        // Compute our attributes\n        // this.computeAttributes();\n        // create the container\n        parent.insertBefore(div, nextSibling);\n        this.domNodes.push(div);\n        // Create the map\n        this.createMap();\n        // Execute our logic\n        this.execute();\n        // increment map number indicator\n        map += 1;\n    };\n\n    /* Create the map for the widget */\n    mapWidget.prototype.createMap = function(parent, nextSibling) {\n        // create the leaflet and push it to #lfltMap\n        Map[map] = L.map('lfltMap-' + map);\n        // Install base tile layer (if none provided, default is \"osm\")\n        // get tilelayers from JSON\n        var fonds = JSON.parse(this.wiki.getTiddlerText(\"$:/plugins/sycom/leaflet/lib/tileLayers.json\"));\n        // create tile layers list object from json list\n        var Tiles = []; // leaflet tile layers\n        var tiles = {}; // tile identifier for control\n        // look for tile parameter\n        setting.tile = this.getAttribute(\"tile\", \"osm\");\n        setting.marker = this.getAttribute(\"marker\", null);\n        // create tile layer list\n        for (var i in fonds) {\n            if (i == setting.tile || fonds[i].id == setting.tile) {\n                setting.tile = fonds[i].id;\n            }\n            var couche = new L.TileLayer(fonds[i].url, {\n                attribution: fonds[i].attrib,\n                minZoom: fonds[i].zMin,\n                maxZoom: fonds[i].zMax,\n                unloadInvisibleTiles: true\n            });\n            Tiles[fonds[i].id] = couche;\n            tiles[fonds[i].nom] = couche;\n        }\n        // if user entered a wrong tile id\n        if (Tiles[setting.tile] === undefined) {\n            setting.tile = \"osm\";\n            $tw.utils.error(\"Seems you entered a wrong tile id, displayed osm instead. Please refer to plugin documentation to avoid this - error : \" + error);\n        }\n        Tiles[setting.tile].addTo(Map[map]);\n        // install tile layer control if needed\n        setting.tileControl = this.getAttribute(\"tileControl\");\n        if (setting.tileControl) {\n            var tControl = L.control.layers(tiles);\n            tControl.addTo(Map[map]);\n        }\n        /* !todo to come next (will have to implement leaflet.draw extension)\n    // look for draw parameter\n    setting.drawControl = this.getAttribute(\"drawControl\");\n    if (setting.drawControl) {\n       // Initialize the FeatureGroup to store editable layers\n       var drawnItems = new L.FeatureGroup();\n       Map[map].addLayer(drawnItems);\n       // Initialize the draw control and pass it the FeatureGroup of editable layers\n       var drawControl = new L.Control.Draw({\n          edit: {\n             featureGroup: drawnItems\n             }\n          }\n       );\n    Map[map].addControl(drawControl);\n    }\n*/\n    };\n\n    /* Compute the internal state of the widget */\n    mapWidget.prototype.execute = function() {\n        // getting wiki primary color\n        // check if you defined a tiddler name for palette but no tiddler with that\n        if(this.wiki.getTiddlerData(this.wiki.getTiddlerText(\"$:/palette\"))) Colour.wiki = this.wiki.getTiddlerData(this.wiki.getTiddlerText(\"$:/palette\")).primary;\n        // switch back to basic blue\n        else Colour.wiki = \"#5778d8\";\n\n        // switch back to basic tiddlywiki blue if primary is defined from another color\n        /* notes to upgrade this process\n  if primaire is <<colour xxxx>> set to default gray\n  if primaire.match(\"<<\") primaire=\"#555\"; */\n        if (Colour.wiki.match(/</g)) Colour.wiki = \"#5778d8\";\n\n        // getting style parameters\n        var style = this.getAttribute(\"style\", undefined);\n        var st;\n        // case style defined\n        if(style !== undefined) {\n            st = JSON.parse(style);\n            // color parameter will overwrite style color and style fillColor parameter\n            if(st.fillColor) Colour[map] = this.getAttribute(\"color\", st.fillColor);\n            else Colour[map] = this.getAttribute(\"color\", st.color);\n        }\n        // case style undefined\n        else {\n            st = null;\n            // checking if user defined a color if no color go undefined\n            Colour[map] = this.getAttribute(\"color\", undefined);\n        }\n        // create default icon\n        // ?todo: only if there are points to display?\n        L.icon.default = lfltIcon(setColor(null, map), setting.marker, map);\n\n        // create whole map cluster\n        // getting cluster size parameter, if exists\n        clusterRadius[map] = this.getAttribute(\"cluster\", 80);\n        clusterType[map] = this.getAttribute(\"clusterType\", \"map\");\n        if (clusterRadius[map] === 0 || clusterType[map] == \"tiddler\") {\n            // if clusterRadius null or clustering by tiddler, no whole clustering\n            fCluster[map] = L.featureGroup();\n        } else {\n            // creating a cluter group for whole map\n            fCluster[map] = L.markerClusterGroup({\n                name: \"Cluster\" + map,\n                polygonOptions: {\"weight\":\"0.5\"},\n                maxClusterRadius: clusterRadius[map],\n                /* for the record. may be a function\n      function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/\n                iconCreateFunction: createCluster\n            });\n        }\n        // Get the declared places from the attributes\n        var places = this.getAttribute(\"places\", undefined);\n        var feature = L.featureGroup();\n        // Render the map\n        if (places) mapPlaces(this,\n            JSON.parse(places),\n            Map[map],\n            fCluster[map],\n            null,\n            Colour[map],\n            this.getAttribute(\"marker\"),\n            st\n            );\n\n        // set map to objects bounds\n        if (bounds) {\n            Map[map].fitBounds(bounds);\n        } else {\n            bounds = lfltDefBounds;\n            Map[map].fitBounds(bounds);\n        }\n        // if lat long zoom settings, overwrite bounds\n        setting.lat = this.getAttribute(\"lat\");\n        setting.lg = this.getAttribute(\"long\");\n        setting.zoom = this.getAttribute(\"zoom\");\n        // overwrite lat and long center\n        if (setting.lat && setting.lg) {\n            Map[map].setView([setting.lat, setting.lg]);\n        }\n        // overwrite zoom\n        if (setting.zoom) {\n            Map[map].setZoom(setting.zoom);\n        }\n    };\n\n    // mapping a places json object (parent object, places json object, destination feature, destination cluster, popup for base objects, ands style parameters : color, marker, json style)\n    function mapPlaces(obj, plcs, feat, clust, pop, col, mark, style) {\n        // create feature for this mapping turn\n        var feature = L.featureGroup();\n        // case 1 : data in a tiddler\n        if (plcs.tiddler) {\n            // if no tiddler is given (single space) map current Tiddler\n            // !todo would be much better if so when no attribute at all...\n            if (plcs.tiddler == \" \") {\n                mapTiddler(obj, obj.getVariable(\"currentTiddler\"), feature, clust, pop, col, mark, style);\n            }\n            // else, map the given tiddler\n            else {\n                // get data fields in the tiddler, let's seek for geo data\n                mapTiddler(obj, plcs.tiddler, feature, clust, pop, col, mark, style);\n            }\n        }\n        // case 2 : data in multiple tiddlers\n        if (plcs.tiddlers) {\n            mapTiddlers(obj, plcs.tiddlers, feature, clust, pop, col, mark, style);\n        }\n        // case 3 : data in tiddlers following a filter\n        if (plcs.filter) {\n            mapFilter(obj, plcs.filter, feature, clust, pop, col, mark, style);\n        }\n        // case 4 : data are directly listed in places (point(s) - polygon - polyline - geojson)\n        // for each we will\n        // - use dedicated function to populate mapping turn layer\n        // - add layer to map\n        if (plcs.point) {\n            // add the point to the cluster layer\n            mapPoint(plcs.point, clust, pop, col, mark);\n            // add the cluster layer to map\n            feature.addLayer(clust);\n            // set bounds\n        }\n        if (plcs.points) {\n            // ?todo : create a cluster for those points if clusterType == \"tiddler\"\n            mapPoints(plcs.points, clust, pop, col, mark);\n            feature.addLayer(clust);\n        }\n        if (plcs.polygon) {\n            var polygFeat = L.featureGroup();\n            mapPolyg(plcs.polygon, polygFeat, pop, col, style);\n            polygFeat.addTo(feature);\n        }\n        if (plcs.polygons) {\n            var polygsFeat = L.featureGroup();\n            mapPolygs(plcs.polygons, polygsFeat, pop, col, style);\n            polygsFeat.addTo(feature);\n        }\n        if (plcs.polyline) {\n            var polylFeat = L.featureGroup();\n            mapPolyl(plcs.polyline, polylFeat, pop, col, style);\n            polylFeat.addTo(feature);\n        }\n        if (plcs.polylines) {\n            var polylsFeat = L.featureGroup();\n            mapPolyls(plcs.polylines, polylsFeat, pop, col, style);\n            polylsFeat.addTo(feature);\n        }\n        if (plcs.geojson) {\n            // !todo : create a cluster for those points if clusterType == \"tiddler\"\n            var geojsonFeat = L.featureGroup();\n            mapGeoJson(plcs.geojson, geojsonFeat, clust, col, mark, style);\n            geojsonFeat.addTo(feat);\n        }\n        // add feature to map\n        feature.addTo(feat);\n        extBounds(feature);\n    }\n\n    // add a marker for a point\n    function mapPoint(coord, clust, pop, col, mark) {\n        try {\n            var location = coord.split(\",\");\n        } catch (err) {displayError(\"point coord error\", err);}\n        try {\n            var marker = L.marker(location, {\n                icon: lfltIcon(col, mark, map)\n            });\n            if (pop) marker.bindPopup(pop);\n\t\t\tif (clust.count) clust.count +=1;\n\t\t\telse clust.count = 1;\n            clust.addLayer(marker);\n        } catch (err) {displayError(\"point marker error\", err);}\n    }\n    // add a marker serie for a points list\n    function mapPoints(list, clust, pop, col, mark) {\n        var Points = list.split(\" \");\n        for (var pt in Points) {\n            mapPoint(Points[pt], clust, pop, col, mark);\n        }\n    }\n\n    // add a polygon\n    function mapPolyg(list, feat, pop, col, st) {\n        var Coords = list.split(\" \");\n        var Shape = [];\n        try {\n            for (var nd in Coords) {\n                var location = Coords[nd].split(\",\");\n                Shape.push(location);\n            }\n        } catch (err) {\n            displayError(\"polygone\", err);\n        }\n        try {\n            var polygon = L.polygon(Shape, {\n                color: setColor(col, map)\n            });\n            if (st) polygon.setStyle(checkStyle(st, col));\n            if (pop) polygon.bindPopup(pop);\n            polygon.addTo(feat);\n        } catch (err) {\n            displayError(\"polygone\", err);\n        }\n    }\n    // add a polygons collection\n    function mapPolygs(collec, feat, pop, col, st) {\n        var Polys = collec.split(\"|\");\n        for (var pg in Polys) {\n            mapPolyg(Polys[pg], feat, pop, col, st);\n        }\n    }\n    // add a polyline\n    function mapPolyl(list, feat, pop, col, st) {\n        var Coords = list.split(\" \");\n        var Line = [];\n        try {\n            for (var nd in Coords) {\n                var location = Coords[nd].split(\",\");\n                Line.push(location);\n            }\n        } catch (err) {\n            displayError(\"polyline\", err);\n        }\n        try {\n            var polyline = L.polyline(Line, {\n                color: setColor(col,map)\n            });\n            if (st) polyline.setStyle(checkStyle(st, col));\n            if (pop) polyline.bindPopup(pop);\n            // add polyline class in order to make fill transparent\n            polyline.setStyle({\n                \"className\": \"polyline\"\n            }).addTo(feat);\n        } catch (err) {\n            displayError(\"polyline\", err);\n        }\n    }\n    // add a polylines collection\n    function mapPolyls(collec, feat, pop, col, st) {\n        var Lines = collec.split(\"|\");\n        for (var ln in Lines) {\n            mapPolyl(Lines[ln], feat, pop, col, st);\n        }\n    }\n\n    // add a geojson set\n    function mapGeoJson(geojson, feat, clust, col, mark, st) {\n        try {\n            var data = JSON.parse(geojson);\n            var geoJson = L.geoJSON(data, {\n                // adding style\n                style: function (feature) {\n                    // get feature style only if style is not injected\n                    // ?todo : only overwrite injected values?\n                    if (st === undefined || st === null) {\n                        st = {};\n                        if(feature.properties.style !== undefined) st = feature.properties.style;\n                    }\n                    // get feature properties style if exists\n                    if(feature.properties.color !== undefined) {\n                        st.color = feature.properties.color;\n                        st.fillColor = st.color;\n                    }\n                    // color parameter overwrite style color if exists\n                    if (col !== undefined && col !== null) {\n                        st.color = col;\n                        st.fillColor = col;\n                    }\n                    // if no color is defined at the end, fallback\n                    if (st.color === undefined) {\n                        col = setColor(col, map);\n                        st.color = col;\n                        st.fillColor = col;\n                    }\n                    return st;\n                },\n                onEachFeature: function (feature, layer) {\n                    layer.bindPopup(jsonPop(feature));\n                },\n                // adding points\n                pointToLayer: function(geoJsonPoint, latlng) {\n                    // working to get color (from properties)\n                    var cl;\n                    if(geoJsonPoint.properties.color !== undefined) cl = geoJsonPoint.properties.color;\n                    if(geoJsonPoint.properties.fillColor !== undefined) cl = geoJsonPoint.properties.fillColor;\n                    if(col !== undefined && col !== null) cl = col;\n                    // binding default icon\n                    var jsonPoint = L.marker(latlng, {\n                        icon: lfltIcon(cl, mark, map)\n                    });\n                    jsonPoint.bindPopup(jsonPop(geoJsonPoint));\n\t\t\t\t\tif (clust.count) clust.count +=1;\n\t\t\t\t\telse clust.count = 1;\n                    clust.addLayer(jsonPoint);\n                }\n            });\n\n            // ?todo : should we add clust to feat or to geoJson? should we add clust even if it's already here?\n            feat.addLayer(clust);\n            feat.addLayer(geoJson);\n        } catch (error) {displayError(\"there was an error when displaying geoJson. error : \", error);}\n    }\n\n    // map a tiddler\n    function mapTiddler(obj, tid, feat, clust, pop, col, mark, style) {\n        if(iter.map.tid === undefined) iter.map.tid = 1;\n        else iter.map.tid +=1;\n        if(iter.map.tid < 4242) {\n            // get data fields in the tiddler, let's seek for geo data\n            var flds = obj.wiki.getTiddler(tid).fields,\n                feature = L.featureGroup(),               // create the tiddler feature\n                popup = \"\";                               // create the popup text\n            // setting marker, color, style\n            // if no marker injected, trying to get from tiddler\n            if(mark === null || mark === undefined) {\n                if(flds.marker) mark = flds.marker;\n            }\n            // working style and color together\n            var cl, st = {};\n            // style\n            if(flds.style) st = JSON.parse(flds.style);\n            // overwrite with injected values\n            if (style !== undefined && style !== null) {\n                st = style;\n                /* ?todo : should we overwrite only injected?\n            \tfor (var v in st) {\n                   if(style.v !== undefined) st.v = style.v;\n                }\n            \tfor (var v in style) {\n            \t}*/\n            }\n            // color\n            if (flds.color) cl = flds.color;\n            // overwrite with injected color style if exists\n            if (style !== undefined && style !== null) {\n                if (st.fillColor !== undefined) cl = st.fillColor\n            }\n            // overwrite with injected color also in style\n            if (col !== undefined && col !== null) {\n                cl = col;\n                st.color = cl; st.fillColor = cl;\n            }\n            Colour[\"t\" + tn] = cl;\n            // if clusterType is tiddler, creating a cluster group for tiddler\n            // also will have to deal with the filter / tiddler distinction\n            if (clusterType[map] == \"tiddler\") {\n                // ?todo : automate cluster creation?\n                fCluster[\"t\" + tn] = L.markerClusterGroup({\n                    name: \"Cluster\" + map + \"Cluster\" + tn,\n                    polygonOptions: {\"weight\":\"0.5\"},\n                    maxClusterRadius: clusterRadius[map],\n                    /* for the record. may be a function\n         function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/\n                    iconCreateFunction: createCluster\n                });\n            } else {\n                fCluster[\"t\" + tn] = fCluster[map];\n            }\n\n            // case 1 : data stored in a json tiddler\n            if (flds.type == \"application/json\") {\n                // for now, assuming any json stored data is geoJson...\n                var data = obj.wiki.getTiddlerText(tid);\n                mapGeoJson(data, feature, fCluster[\"t\" + tn], Colour[\"t\" + tn], mark, st);\n                feat.addLayer(feature);\n            }\n            // case 2 if tiddler is not JSON data, display tiddler stored geodata as point(s), polygon, polyline...\n            else {\n                // create the popup for base objects\n                popup = \"<h4><a href=\\\"#\" + encodeURIComponent(flds.title) + \"\\\">\" + flds.title + \"</a></h4>\";\n                var content = \"\";\n                if (flds.text !== \"\") {\n                    // if tiddler contains a widget, avoid html rendering\n                    if (flds.text.match(/<\\$leafmap/)) {\n                        content += \"<pre>\" + flds.text + \"</pre>\";\n                    }\n                    // else render\n                    else {\n                        content += obj.wiki.renderTiddler(\"text/html\", tid).substring(0, 420);\n                    }\n                }\n                // adding a link to the tiddler\n                content += \"<br/>(<a href=\\\"#\" + encodeURIComponent(flds.title) + \"\\\" title=\\\"read more...\\\">...</a>)\";\n                popup += content;\n\n                // map recursively (!!! danger !!!)\n                mapPlaces(obj,\n                          flds,\n                          feature,\n                          fCluster[\"t\" + tn],\n                          popup,\n                          cl,\n                          mark,\n                          st\n                         );\n                feature.addTo(feat);\n            }\n            /*\n// check if anything was rendered before binding popup\n     if (wasRendered == 0) console.log(\"tw-leaflet-map-plugin > non geotiddler was listed and not rendered : \" + flds.title);\n     // add the layer to the feature\n     feature.addLayer(subFeat);\n     feature.addTo(Map[map]); // layer.addTo(Map[map]);\n } */\n            // get layer bounds for automatic zoom\n            extBounds(feature);\n            tn++;\n        }\n        // it tiddler rendered two many times for same map. Stoping and error launch\n        else $tw.utils.error(\"tiddler [[\" + tid + \"]] was rendered more than 4242 times in this map. Please double check circular dependencies...\");\n    }\n\n    // map a tiddler collection\n    function mapTiddlers(obj, list, feat, clust, pop, col, mark, style) {\n        var Tids = list.split(\" \");\n        for (var td in Tids) {\n            mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);\n        }\n    }\n\n    // map tiddlers with a filter\n    function mapFilter(obj, filter, feat, clust, pop, col, mark, style) {\n        try {\n            var Tids = obj.wiki.filterTiddlers(filter);\n            for (var td in Tids) {\n                mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);\n            }\n        } catch (error) {\n            $tw.utils.error(\"sorry there was something wrong when trying to map your filter. error : \" + error);\n        }\n    }\n\n    // icon url creator\n    function iconUrl(col, tid, m) {\n        var icone = escape($tw.wiki.renderTiddler(\"text/html\", tid).replace(\"$primary$\", setColor(col, m)).replace(\"</p>\", \"\").replace(\"<p>\", \"\"));\n        return ('data:image/svg+xml;charset=UTF-8,' + icone);\n    }\n\n    // create marker\n    // ?todo only if there are points to display;\n    function lfltIcon(col, tid, m) {\n        // checking if marker is defined. Fallback to default\n        if(tid === undefined || tid === null) tid = \"$:/plugins/sycom/leaflet/images/marker.svg\";\n        else tid = \"$:/plugins/sycom/leaflet/images/\" + tid + \".svg\";\n        if($tw.wiki.getTiddler(tid) === undefined) tid = \"$:/plugins/sycom/leaflet/images/marker.svg\";\n        // !todo  create shadow from icon by transform matrix?\n        var shad = tid.split(\".svg\")[0] + \"shadow.svg\",\n            shadowUrl = 'data:image/svg+xml;charset=UTF-8,' + escape($tw.wiki.getTiddlerText(shad));\n        // get dimensions in tiddler\n        var MarkDim = $tw.wiki.getTiddler(tid).fields.marker_dim.split(\" \");\n        var ShadDim = $tw.wiki.getTiddler(shad).fields.marker_dim.split(\" \");\n        var theIcon = L.icon({\n            iconUrl: iconUrl(col, tid, m),\n            iconRetinaUrl: iconUrl(col, tid, m),\n            iconSize: [MarkDim[0], MarkDim[1]],\n            iconAnchor: [MarkDim[2], MarkDim[3]],\n            popupAnchor: [0, -MarkDim[3]],\n            shadowUrl: shadowUrl,\n            shadowRetinaUrl: shadowUrl,\n            shadowSize: [ShadDim[0], ShadDim[1]],\n            shadowAnchor: [ShadDim[2], ShadDim[3]]\n        });\n        return theIcon;\n    }\n\n    // set color with fallback to map color or wiki...\n    function setColor(col, m) {\n        if(m === undefined) m = map;\n        if (col === undefined || col === null) col = Colour[m];\n        if (col === undefined || col === null) col = Colour.wiki;\n        return col;\n    }\n\n    // set style with fallback to map color or wiki...\n    function checkStyle(sty, col) {\n        if (col === undefined || col === null) {\n            if(sty.color === undefined) sty.color = setColor(col, map);\n            if(sty.fillColor === undefined) sty.fillColor = setColor(col, map);\n        }\n        else {\n            sty.color = col;\n            sty.fillColor = col;\n        }\n        return sty;\n    }\n\n    // coordinate error message\n    function displayError(objectType, error) {\n        $tw.utils.error(\"there was an error when mapping a \" + objectType + \" - error : \" + error);\n    }\n\n    // adjust bounds to layer\n    function extBounds(feat) {\n        try {\n            if (bounds) {\n                bounds.extend(feat.getBounds());\n            } else {\n                if (feat.getBounds()._northEast) {\n                    bounds = feat.getBounds();\n                }\n            }\n        } catch (error) {\n            $tw.utils.error(\"there was an error when trying to zoom on bounds. error : \" + error);\n        }\n    }\n\n    // cluster icon creation\n    function createCluster(clust) {\n        // getting back map number\n        var m = this.name.split(\"Cluster\")[1],\n            t = this.name.split(\"Cluster\")[2],\n            zC = Map[m].getZoom(),\n            z0,cTot,cCol,cOpa;\n        // checking object density mean for the map\n        if (t === undefined) {\n            if (fCluster[m].z0 === undefined) fCluster[m].z0 = zC;\n            z0 = fCluster[m].z0;\n            if (fCluster[m].count === undefined) fCluster[m].count = 1;\n            cTot = fCluster[m].count;\n            cCol = setColor(Colour[m],m);\n            cOpa = 0.85\n        }\n        else {\n            if (fCluster[\"t\" + t].z0 === undefined) fCluster[\"t\" + t].z0 = zC;\n            z0 = fCluster[\"t\" + t].z0;\n            if (fCluster[\"t\" + t].count === undefined) fCluster[\"t\" + t].count = 1;\n            cTot = fCluster[\"t\" + t].count;\n            cCol = setColor(Colour[\"t\" + t],m);\n            cOpa = 0.65\n        }\n        // cluster icon size will be based on item number and zoom\n        // !todo: use density to get a more \"local\" percentage before calculating size\n        var cC = clust.getChildCount(),\n            cS = 20 * Math.log(clusterRadius[m]) * (1 + Math.log(cTot)/Math.max(cTot * Math.pow(2,zC-z0),Math.log(cTot))) * (1 - 1 / ((Math.log(cTot) / cTot) * Math.pow(2,zC-z0) * cC + 1));\n        if (cS < 34) cS = 34;\n        var cF; // font size of cluster text\n        if (cC > 9999) cF = cS / 3;\n        else {if (cC > 999) cF = cS / 3.5;\n        else cF = cS / 2}\n        if (cF < 12) cF = 12;\n        // creating icon. Checking tiddler or whole clustering before\n        return new L.DivIcon({\n            html: '<div style=\"width:' + cS + 'px;height:' + cS + 'px;font-size:' + cF + 'px;background-color:' + cCol + ';border-color:' + cCol + ';opacity:'+cOpa+'\"><div><span style=\"line-height:' + cS + 'px;opacity:'+(cOpa+0.12)+'\">' + cC + \"</span></div></div>\",\n            className: \"marker-cluster marker-cluster-\" + cC,\n            iconSize: new L.Point(cS, cS)\n        });\n    }\n\n    // popup function for Json\n    function jsonPop(feat) {\n        // extracting data to create popup (all non-null data!)\n        var Prop = feat.properties,\n            jsontitle = \"\",\n            jsondesc = \"\",\n            jsonhtml = \"\";\n        // testing if properties title or name exists\n        if (Prop.name) jsontitle += Prop.name + \" \";\n        if (Prop.title) jsontitle += Prop.title + \" \";\n        if (Prop.description) jsondesc +=  Prop.description + \"\";\n        // populating other data\n        // if we got a title\n        if (jsontitle !== \"\") {\n            jsonhtml += \"<h4>\" + jsontitle + \"</h4>\";\n            // if we got a description let's give it\n            if (jsondesc !== \"\") jsonhtml += jsondesc;\n            else {\n                jsonhtml+= \"<ul>\";\n                for (var p in Prop) {\n                    if (Prop[p] !== null && Prop[p] !== \"\" && p != \"name\" && p != \"title\") jsonhtml += \"<li>\" + p + \" : \" + Prop[p] + \"</li>\";\n                }\n                jsonhtml += \"</ul>\";\n            }\n        }\n        // if we have no title, giving one with first fields\n        else {\n            // in case we've got a description. Stop after title\n            if (jsondesc !== \"\") {\n                for (var pr in Prop) {\n                    // if title is really to short (as an id), taking next field\n                    if (jsontitle.length < 8) jsontitle += Prop[pr] + \" \";\n                    else break;\n                }\n                jsonhtml = \"<h4>\" + jsontitle + \"</h4>\" + jsonhtml;\n            }\n            else {\n                for (var po in Prop) {\n                    // if title is really to short (as an id), taking next field\n                    if (jsontitle.length < 4) jsontitle += Prop[po] + \" \";\n                    else {\n                        if (Prop[po] !== null && Prop[po] !== \"\") jsonhtml += \"<li>\" + po + \" : \" + Prop[po] + \"</li>\";\n                    }\n                }\n                jsonhtml = \"<h4>\" + jsontitle + \"</h4><ul>\" + jsonhtml + \"</ul>\";\n            }\n        }\n        return jsonhtml;\n    }\n\n    exports.leafmap = mapWidget;\n\n})();\n/*\nMISC NOTES for later\nJSON.parse(tiddler.fields.text);\nvar jsonData = this.wiki.getTiddlerAsJson(this.to),\n*/\n",
            "created": "20151028202401905",
            "modified": "20170318234011605",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/sycom/leaflet/readme": {
            "title": "$:/plugins/sycom/leaflet/readme",
            "text": "The [leaflet plugin](#$:/plugins/sycom/leaflet) is a work in progress integration of the [leaflet][leaflet] library in TiddlyWiki in order to display geographical purpose tiddlers.\n\nHave a look at [demo page on the web][plugindemo] or at integrated documentation which describes usage and examples.\n\nKeep in mind that the plugin might be buggy or imperfect. Please [report any comment or issue][issues] on main repo.\n\n## Sources / licenses\n* [leaflet][leaflet] library (_1.3.1_) - License 2-clause BSD\n    * leaflet-[markerCluster][markercluster] extension - Licence MIT\n* [leaflet plugin][source] is released under similar [BSD 3-Clause license][license] as TiddlyWiki.\n!! Side projects\n\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins/#Michel%20Strogoff%20from%20the%20sky\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/leaflet\n[issues]: https://framagit.org/sycom/TiddlyWiki-Plugins/issues\n[leaflet]: http://leafletjs.com/\n[markercluster]: https://github.com/Leaflet/Leaflet.markercluster\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\n",
            "type": "text/x-markdown",
            "created": "20151119173416000",
            "modified": "20190332172200000",
            "caption": "Readme"
        },
        "$:/plugins/sycom/leaflet/templates/geoTiddler": {
            "title": "$:/plugins/sycom/leaflet/templates/geoTiddler",
            "created": "20180602095702318",
            "modified": "20180602105242971",
            "tags": "$:/tags/ViewTemplate",
            "type": "text/vnd.tiddlywiki",
            "text": "<$list filter=\"[all[current]has[point]] [all[current]has[points]] [all[current]has[polyline]] [all[current]has[polylines]] [all[current]has[polygon]] [all[current]has[polygons]] [all[current]has[places]] [all[current]has[geojson]]\">\n  <$leafmap  places='{\"tiddler\":\" \"}' height='240px'/>\n</$list>\n"
        }
    }
}
/* required styles */

.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
	position: absolute;
	left: 0;
	top: 0;
	}
.leaflet-container {
	overflow: hidden;
	}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
	-webkit-user-select: none;
	   -moz-user-select: none;
	        user-select: none;
	  -webkit-user-drag: none;
	}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
	image-rendering: -webkit-optimize-contrast;
	}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
	width: 1600px;
	height: 1600px;
	-webkit-transform-origin: 0 0;
	}
.leaflet-marker-icon,
.leaflet-marker-shadow {
	display: block;
	}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg,
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer {
	max-width: none !important;
	max-height: none !important;
	}

.leaflet-container.leaflet-touch-zoom {
	-ms-touch-action: pan-x pan-y;
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	-ms-touch-action: pinch-zoom;
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	-ms-touch-action: none;
	touch-action: none;
}
.leaflet-container {
	-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
	filter: inherit;
	visibility: hidden;
	}
.leaflet-tile-loaded {
	visibility: inherit;
	}
.leaflet-zoom-box {
	width: 0;
	height: 0;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	z-index: 800;
	}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
	-moz-user-select: none;
	}

.leaflet-pane         { z-index: 400; }

.leaflet-tile-pane    { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane  { z-index: 500; }
.leaflet-marker-pane  { z-index: 600; }
.leaflet-tooltip-pane   { z-index: 650; }
.leaflet-popup-pane   { z-index: 700; }

.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg    { z-index: 200; }

.leaflet-vml-shape {
	width: 1px;
	height: 1px;
	}
.lvml {
	behavior: url(#default#VML);
	display: inline-block;
	position: absolute;
	}


/* control positioning */

.leaflet-control {
	position: relative;
	z-index: 800;
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}
.leaflet-top,
.leaflet-bottom {
	position: absolute;
	z-index: 1000;
	pointer-events: none;
	}
.leaflet-top {
	top: 0;
	}
.leaflet-right {
	right: 0;
	}
.leaflet-bottom {
	bottom: 0;
	}
.leaflet-left {
	left: 0;
	}
.leaflet-control {
	float: left;
	clear: both;
	}
.leaflet-right .leaflet-control {
	float: right;
	}
.leaflet-top .leaflet-control {
	margin-top: 10px;
	}
.leaflet-bottom .leaflet-control {
	margin-bottom: 10px;
	}
.leaflet-left .leaflet-control {
	margin-left: 10px;
	}
.leaflet-right .leaflet-control {
	margin-right: 10px;
	}


/* zoom and fade animations */

.leaflet-fade-anim .leaflet-tile {
	will-change: opacity;
	}
.leaflet-fade-anim .leaflet-popup {
	opacity: 0;
	-webkit-transition: opacity 0.2s linear;
	   -moz-transition: opacity 0.2s linear;
	     -o-transition: opacity 0.2s linear;
	        transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	-webkit-transform-origin: 0 0;
	    -ms-transform-origin: 0 0;
	        transform-origin: 0 0;
	}
.leaflet-zoom-anim .leaflet-zoom-animated {
	will-change: transform;
	}
.leaflet-zoom-anim .leaflet-zoom-animated {
	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
	     -o-transition:      -o-transform 0.25s cubic-bezier(0,0,0.25,1);
	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	-webkit-transition: none;
	   -moz-transition: none;
	     -o-transition: none;
	        transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-grab {
	cursor: -webkit-grab;
	cursor:    -moz-grab;
	}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
	cursor: crosshair;
	}
.leaflet-popup-pane,
.leaflet-control {
	cursor: auto;
	}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
	cursor: move;
	cursor: -webkit-grabbing;
	cursor:    -moz-grabbing;
	}

/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
	pointer-events: none;
	}

.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive {
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}

/* visual tweaks */

.leaflet-container {
	background: #e8f0ff;
	outline: 0;
	}
.leaflet-container a {
	color: #0078A8;
	text-decoration: none;
	}
.leaflet-container a.leaflet-active {
	outline: 2px solid orange;
	}
.leaflet-zoom-box {
	border: 2px dotted #38f;
	background: rgba(255,255,255,0.5);
	}


/* general typography */
.leaflet-container {
	font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
	}


/* general toolbar styles */

.leaflet-bar {
	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
	border-radius: 4px;
	}
.leaflet-bar a,
.leaflet-bar a:hover {
	background-color: #fff;
	border-bottom: 1px solid #ccc;
	width: 26px;
	height: 26px;
	line-height: 26px;
	display: block;
	text-align: center;
	text-decoration: none;
	color: black;
	}
.leaflet-bar a,
.leaflet-control-layers-toggle {
	background-position: 50% 50%;
	background-repeat: no-repeat;
	display: block;
	}
.leaflet-bar a:hover {
	background-color: #f4f4f4;
	}
.leaflet-bar a:first-child {
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	}
.leaflet-bar a:last-child {
	border-bottom-left-radius: 4px;
	border-bottom-right-radius: 4px;
	border-bottom: none;
	}
.leaflet-bar a.leaflet-disabled {
	cursor: default;
	background-color: #f4f4f4;
	color: #bbb;
	}

.leaflet-touch .leaflet-bar a {
	width: 30px;
	height: 30px;
	line-height: 30px;
	}
.leaflet-touch .leaflet-bar a:first-child {
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	}
.leaflet-touch .leaflet-bar a:last-child {
	border-bottom-left-radius: 2px;
	border-bottom-right-radius: 2px;
	}

/* zoom control */

.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
	font: bold 18px 'Lucida Console', Monaco, monospace;
	text-indent: 1px;
	}

.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
	font-size: 22px;
	}


/* layers control */

.leaflet-control-layers {
	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
	background: #fff;
	border-radius: 5px;
	}
.leaflet-control-layers-toggle {
	background-image: url(images/layers.png);
	width: 36px;
	height: 36px;
	}
.leaflet-retina .leaflet-control-layers-toggle {
	background-image: url(images/layers-2x.png);
	background-size: 26px 26px;
	}
.leaflet-touch .leaflet-control-layers-toggle {
	width: 44px;
	height: 44px;
	}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
	display: none;
	}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
	display: block;
	position: relative;
	}
.leaflet-control-layers-expanded {
	padding: 6px 10px 6px 6px;
	color: #333;
	background: #fff;
	}
.leaflet-control-layers-scrollbar {
	overflow-y: scroll;
	overflow-x: hidden;
	padding-right: 5px;
	}
.leaflet-control-layers-selector {
	margin-top: 2px;
	position: relative;
	top: 1px;
	}
.leaflet-control-layers label {
	display: block;
	}
.leaflet-control-layers-separator {
	height: 0;
	border-top: 1px solid #ddd;
	margin: 5px -10px 5px -6px;
	}

/* Default icon URLs */
.leaflet-default-icon-path {
	background-image: url(images/marker-icon.png);
	}


/* attribution and scale controls */

.leaflet-container .leaflet-control-attribution {
	background: #fff;
	background: rgba(255, 255, 255, 0.7);
	margin: 0;
	}
.leaflet-control-attribution,
.leaflet-control-scale-line {
	padding: 0 5px;
	color: #333;
	}
.leaflet-control-attribution a {
	text-decoration: none;
	}
.leaflet-control-attribution a:hover {
	text-decoration: underline;
	}
.leaflet-container .leaflet-control-attribution,
.leaflet-container .leaflet-control-scale {
	font-size: 11px;
	}
.leaflet-left .leaflet-control-scale {
	margin-left: 5px;
	}
.leaflet-bottom .leaflet-control-scale {
	margin-bottom: 5px;
	}
.leaflet-control-scale-line {
	border: 2px solid #777;
	border-top: none;
	line-height: 1.1;
	padding: 2px 5px 1px;
	font-size: 11px;
	white-space: nowrap;
	overflow: hidden;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;

	background: #fff;
	background: rgba(255, 255, 255, 0.5);
	}
.leaflet-control-scale-line:not(:first-child) {
	border-top: 2px solid #777;
	border-bottom: none;
	margin-top: -2px;
	}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
	border-bottom: 2px solid #777;
	}

.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	box-shadow: none;
	}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	border: 2px solid rgba(0,0,0,0.2);
	background-clip: padding-box;
	}


/* popup */

.leaflet-popup {
	position: absolute;
	text-align: center;
	margin-bottom: 20px;
	}
.leaflet-popup-content-wrapper {
	padding: 1px;
	text-align: left;
	border-radius: 12px;
	}
.leaflet-popup-content {
	margin: 13px 19px;
	line-height: 1.4;
	}
.leaflet-popup-content p {
	margin: 18px 0;
	}
.leaflet-popup-tip-container {
	width: 40px;
	height: 20px;
	position: absolute;
	left: 50%;
	margin-left: -20px;
	overflow: hidden;
	pointer-events: none;
	}
.leaflet-popup-tip {
	width: 17px;
	height: 17px;
	padding: 1px;

	margin: -10px auto 0;

	-webkit-transform: rotate(45deg);
	   -moz-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	     -o-transform: rotate(45deg);
	        transform: rotate(45deg);
	}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
	background: white;
	color: #333;
	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
	}
.leaflet-container a.leaflet-popup-close-button {
	position: absolute;
	top: 0;
	right: 0;
	padding: 4px 4px 0 0;
	border: none;
	text-align: center;
	width: 18px;
	height: 14px;
	font: 16px/14px Tahoma, Verdana, sans-serif;
	color: #c3c3c3;
	text-decoration: none;
	font-weight: bold;
	background: transparent;
	}
.leaflet-container a.leaflet-popup-close-button:hover {
	color: #999;
	}
.leaflet-popup-scrolled {
	overflow: auto;
	border-bottom: 1px solid #ddd;
	border-top: 1px solid #ddd;
	}

.leaflet-oldie .leaflet-popup-content-wrapper {
	zoom: 1;
	}
.leaflet-oldie .leaflet-popup-tip {
	width: 24px;
	margin: 0 auto;

	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
	}
.leaflet-oldie .leaflet-popup-tip-container {
	margin-top: -1px;
	}

.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
	border: 1px solid #999;
	}


/* div icon */

.leaflet-div-icon {
	background: #fff;
	border: 1px solid #666;
	}


/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
	position: absolute;
	padding: 6px;
	background-color: #fff;
	border: 1px solid #fff;
	border-radius: 3px;
	color: #222;
	white-space: nowrap;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
	}
.leaflet-tooltip.leaflet-clickable {
	cursor: pointer;
	pointer-events: auto;
	}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	position: absolute;
	pointer-events: none;
	border: 6px solid transparent;
	background: transparent;
	content: "";
	}

/* Directions */

.leaflet-tooltip-bottom {
	margin-top: 6px;
}
.leaflet-tooltip-top {
	margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
	left: 50%;
	margin-left: -6px;
	}
.leaflet-tooltip-top:before {
	bottom: 0;
	margin-bottom: -12px;
	border-top-color: #fff;
	}
.leaflet-tooltip-bottom:before {
	top: 0;
	margin-top: -12px;
	margin-left: -6px;
	border-bottom-color: #fff;
	}
.leaflet-tooltip-left {
	margin-left: -6px;
}
.leaflet-tooltip-right {
	margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	top: 50%;
	margin-top: -6px;
	}
.leaflet-tooltip-left:before {
	right: 0;
	margin-right: -12px;
	border-left-color: #fff;
	}
.leaflet-tooltip-right:before {
	left: 0;
	margin-left: -12px;
	border-right-color: #fff;
	}
[
    {
        "id": "osmfr",
        "nom": "OSM France",
        "url": "http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png",
        "attrib": "fond par <a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Données &copy;Contributeurs <a href='http://openstreetmap.org'>OSM</a>, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
      "id": "osm",
      "nom": "OpenStreetMap",
      "url": "http://{s}.tile.osm.org/{z}/{x}/{y}.png",
      "attrib": "Map tiles by &copy;<a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
      "zMin": 1,
      "zMax": 20
   },
    {
        "id": "osmbw",
        "nom": "OSM N&B",
        "url": "http://www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png",
        "attrib": "Tiles hosted by wikimedia labs. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "sat",
        "nom": "Satellite Esri",
        "url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
        "attrib": "&copy;Map tiles by Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "natgeo",
        "nom": "National Geog.",
        "url": "http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}",
        "attrib": "&copy;Map tiles by Esri &mdash; National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC",
        "zMin": 1,
        "zMax": 12
    },
    {
        "id": "toner",
        "nom": "Black Ink",
        "url": "http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png",
        "attrib": "Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "water",
        "nom": "Water painting",
        "url": "http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png",
        "attrib": "Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "thunder",
        "nom": "Thunderforest",
        "url": "http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png",
        "attrib": "Map tiles by <a href='http://thunderforest.com/'>Thunderforest</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "dark",
        "nom": "Dark Matter",
        "url": "http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
        "attrib": "&copy;Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "positron",
        "nom": "Positron",
        "url": "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
        "attrib": "&copy;Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by &copy;<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
        "zMin": 1,
        "zMax": 20
    },
    {
        "id": "none",
        "nom": "None",
        "url": "",
        "attrib": "",
        "zMin": 1,
        "zMax": 10
    }
]
/*\
created: 20151028202401905
modified: 20170318234011605
title: $:/plugins/sycom/leaflet/mapWidget.tid
type: application/javascript
module-type: widget

A widget for displaying leaflet map in TiddlyWiki

\*/

(function() {
    /* ----------------------- */
    /*jslint node: true, browser: true */
    /*global $tw: false */
    "use strict";
    var Widget = require("$:/core/modules/widgets/widget.js").widget,
        L = require("$:/plugins/sycom/leaflet/lib/leaflet.js"),
        markerClusterGroup = require("$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js");

    var mapWidget = function(parseTreeNode, options) {
        this.initialise(parseTreeNode, options);
    };

    // global vars
    var Map = [],            // map collection
        map = 0,             // map order number
        tn = 0,              // tiddler number
        fCluster = [],       // the clusters
        Colour = [],         // the colors
        clusterRadius = [],  // cluster radii
        clusterType = [],    // clustering for whole map or for each tiddler
        lfltDefBounds = [
            [52.75, -2.55],
            [52.85, -2.65]
        ],                   // default bounds when nothing given
        bounds,              // global bounds for map ?todo one per map?
        iter = [],           // iteration indicator to avoid infinite loops
        setting = {};        // the map's settings

    /* Inherit from the base widget class */
    mapWidget.prototype = new Widget();

    /* Render this widget into the DOM */
    mapWidget.prototype.render = function(parent, nextSibling) {
        bounds = null;
        // Compute our attributes
        this.computeAttributes();
        // Get the base settings for rendering : width / height (default : 100% / 500px)
        // !todo : make a settings tidller in order to let user set it for the whole wiki (may be inspired from roadtree)
        // !todo what happens if windows is resized?
        var width = this.getAttribute("width", "100%"),
            height = this.getAttribute("height", "420px");
        // creating the div container
        var div = this.document.createElement("div");
        div.setAttribute("id", "lfltMap-" + map);
        div.setAttribute("style", "width:" + width + ";height:" + height);
        // Save the parent dom node
        this.parentDomNode = parent;
        // Compute our attributes
        // this.computeAttributes();
        // create the container
        parent.insertBefore(div, nextSibling);
        this.domNodes.push(div);
        // Create the map
        this.createMap();
        // Execute our logic
        this.execute();
        // increment map number indicator
        map += 1;
    };

    /* Create the map for the widget */
    mapWidget.prototype.createMap = function(parent, nextSibling) {
        // create the leaflet and push it to #lfltMap
        Map[map] = L.map('lfltMap-' + map);
        // Install base tile layer (if none provided, default is "none")
        // get tilelayers from JSON
        var fonds = JSON.parse(this.wiki.getTiddlerText("$:/plugins/sycom/leaflet/lib/tileLayers.json"));
        // create tile layers list object from json list
        var Tiles = []; // leaflet tile layers
        var tiles = {}; // tile identifier for control
        // look for tile parameter
        setting.tile = this.getAttribute("tile", "none");
        setting.marker = this.getAttribute("marker", null);
        // create tile layer list
        for (var i in fonds) {
            if (i == setting.tile || fonds[i].id == setting.tile) {
                setting.tile = fonds[i].id;
            }
            var couche = new L.TileLayer(fonds[i].url, {
                attribution: fonds[i].attrib,
                minZoom: fonds[i].zMin,
                maxZoom: fonds[i].zMax,
                unloadInvisibleTiles: true
            });
            Tiles[fonds[i].id] = couche;
            tiles[fonds[i].nom] = couche;
        }
        // if user entered a wrong tile id
        if (Tiles[setting.tile] === undefined) {
            setting.tile = "none";
            $tw.utils.error("Seems you entered a wrong tile id, displayed none instead. Please refer to plugin documentation to avoid this - error : " + error);
        }
        Tiles[setting.tile].addTo(Map[map]);
        // install tile layer control if needed
        setting.tileControl = this.getAttribute("tileControl");
        if (setting.tileControl) {
            var tControl = L.control.layers(tiles);
            tControl.addTo(Map[map]);
        }
        /* !todo to come next (will have to implement leaflet.draw extension)
    // look for draw parameter
    setting.drawControl = this.getAttribute("drawControl");
    if (setting.drawControl) {
       // Initialize the FeatureGroup to store editable layers
       var drawnItems = new L.FeatureGroup();
       Map[map].addLayer(drawnItems);
       // Initialize the draw control and pass it the FeatureGroup of editable layers
       var drawControl = new L.Control.Draw({
          edit: {
             featureGroup: drawnItems
             }
          }
       );
    Map[map].addControl(drawControl);
    }
*/
    };

    /* Compute the internal state of the widget */
    mapWidget.prototype.execute = function() {

        // getting wiki primary color
        // check if you defined a tiddler name for palette but no tiddler with that
        if(this.wiki.getTiddlerData(this.wiki.getTiddlerText("$:/palette"))) Colour.wiki = this.wiki.getTiddlerData(this.wiki.getTiddlerText("$:/palette")).primary;
        // switch back to basic blue
        else Colour.wiki = "#5778d8";

        // switch back to basic tiddlywiki blue if primary is defined from another color
        /* notes to upgrade this process
  if primaire is <<colour xxxx>> set to default gray
  if primaire.match("<<") primaire="#555"; */
        if (Colour.wiki.match(/</g)) Colour.wiki = "#5778d8";

        // getting style parameters
        var style = this.getAttribute("style", undefined);
        var st;
        // case style defined
        if(style !== undefined) {
            st = JSON.parse(style);
            // color parameter will overwrite style color and style fillColor parameter
            if(st.fillColor) Colour[map] = this.getAttribute("color", st.fillColor);
            else Colour[map] = this.getAttribute("color", st.color);
        }
        // case style undefined
        else {
            st = null;
            // checking if user defined a color if no color go undefined
            Colour[map] = this.getAttribute("color", undefined);
        }
        // create default icon
        // ?todo: only if there are points to display?
        L.icon.default = lfltIcon(setColor(null, map), setting.marker, map);

        // create whole map cluster
        // getting cluster size parameter, if exists
        clusterRadius[map] = this.getAttribute("cluster", 80);
        clusterType[map] = this.getAttribute("clusterType", "map");
        if (clusterRadius[map] === 0 || clusterType[map] == "tiddler") {
            // if clusterRadius null or clustering by tiddler, no whole clustering
            fCluster[map] = L.featureGroup();
        } else {
            // creating a cluster group for whole map
            fCluster[map] = L.markerClusterGroup({
                name: "Cluster" + map,
                polygonOptions: {"weight":"0.5"},
                maxClusterRadius: clusterRadius[map],
                /* for the record. may be a function
      function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/
                iconCreateFunction: createCluster
            });
        }
        // Get the declared places from the attributes
        var places = this.getAttribute("places", undefined);
        var feature = L.featureGroup();
        // Render the map
        if (places) mapPlaces(this,
            JSON.parse(places),
            Map[map],
            fCluster[map],
            null,
            Colour[map],
            this.getAttribute("marker"),
            st
            );

        // add origin/destination markers for distance calculations
        var wk = this.wiki;
        var originLatLngString = wk.getTiddlerText("$:/Origin");
        var destLatLngString = wk.getTiddlerText("$:/Destination");
        Map[map].createPane("topMarker");
        Map[map].getPane("topMarker").style.zIndex = 999;

        function calculateDistance(wk) {

            var R, lat1, lat2, lon1, lon2;
            try {
                R = parseFloat(wk.getTiddlerText("$:/EberronRadius"));
            } catch {
                R = 3960;
            }

            try {
                var originLatLngString = wk.getTiddlerText("$:/Origin");
                var destLatLngString = wk.getTiddlerText("$:/Destination");

                var originSplit = originLatLngString.split(",");
                lat1 = parseFloat(originSplit[0]);
                lat1 = Math.asin(lat1/78.0);
                lon1 = parseFloat(originSplit[1]);

                var destSplit = destLatLngString.split(",");
                lat2 = parseFloat(destSplit[0]);
                lat2 = Math.asin(lat2/78.0);
                lon2 = parseFloat(destSplit[1]);

                const dLat = (lat2-lat1);
                const dLon = (lon2-lon1) * Math.PI/180;

                const a = (Math.sin(dLat/2) * Math.sin(dLat/2)) + (Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLon/2) * Math.sin(dLon/2));
                const c = 2 * Math.asin(Math.sqrt(a));

                var d = R * c; // in miles
                d = Math.round(d * 10) / 10;
                wk.setText("$:/Distance", "text", undefined, String(d));

                var NS1 = "N";
                var EW1 = "E";
                var NS2 = "N";
                var EW2 = "E";
                
                lat1 = lat1*180/Math.PI;
                lat2 = lat2*180/Math.PI;

                if (lat1<0) {
                    NS1 = "S";
                    lat1=-lat1;
                }
                if (lat2<0) {
                    NS2 = "S";
                    lat2=-lat2;
                }
                if (lon1<0) {
                    EW1 = "W";
                    lon1=-lon1;
                }
                if (lon2<0) {
                    EW2 = "W";
                    lon2=-lon2;
                }

                var latlngstr1 = String(Math.floor(lat1))+"° "+String(Math.floor((lat1-Math.floor(lat1))*60))+"' "+NS1+", "+String(Math.floor(lon1))+"° "+String(Math.floor((lon1-Math.floor(lon1))*60))+"' "+EW1;
                var latlngstr2 = String(Math.floor(lat2))+"° "+String(Math.floor((lat2-Math.floor(lat2))*60))+"' "+NS2+", "+String(Math.floor(lon2))+"° "+String(Math.floor((lon2-Math.floor(lon2))*60))+"' "+EW2;

                wk.setText("$:/Origin", "latlng", undefined, latlngstr1);
                wk.setText("$:/Destination", "latlng", undefined, latlngstr2);

            } catch {
                wk.setText("$:/Distance", "text", undefined, "0");
            }

        }


        if (originLatLngString) {
            var originSplit = originLatLngString.split(",");
            var originMarker = L.marker(L.latLng(originSplit[0], originSplit[1]), {title: "Origin", pane: "topMarker", draggable:true, icon:lfltIcon("green", "pin", Map[map])}).addTo(Map[map]).on('dragend',function() {
                var coord = String(originMarker.getLatLng()).split(',');
                var lat = coord[0].split('(');
                var lng = coord[1].split(')');
                var coordString = String(Math.round(parseFloat(lat[1])*1000)/1000)+","+String(Math.round(parseFloat(lng[0])*1000)/1000);
                wk.setText("$:/Origin", "text", undefined, coordString);
                calculateDistance(wk);
            });
        }
        if (destLatLngString) {
            var destSplit = destLatLngString.split(",");
            var destMarker = L.marker(L.latLng(destSplit[0], destSplit[1]), {title: "Destination", pane: "topMarker", draggable:true, icon:lfltIcon("red", "pin", Map[map])}).addTo(Map[map]).on('dragend',function() {
                var coord = String(destMarker.getLatLng()).split(',');
                var lat = coord[0].split('(');
                var lng = coord[1].split(')');
                var coordString = String(Math.round(parseFloat(lat[1])*1000)/1000)+","+String(Math.round(parseFloat(lng[0])*1000)/1000);
                wk.setText("$:/Destination", "text", undefined, coordString);
                calculateDistance(wk);
            });
        }
        calculateDistance(wk);

        // set map to objects bounds

        try {
            var boundsString = this.wiki.getTiddlerText("$:/MapTags");
            if (boundsString) {
                var boundSplit = boundsString.split(",");
                bounds = L.latLngBounds(L.latLng(boundSplit[1], boundSplit[0]), L.latLng(boundSplit[3], boundSplit[2]));
            } 

            if (!bounds) {
                bounds = lfltDefBounds;
            }
            Map[map].fitBounds(bounds);
        } catch(e) {}
        // if lat long zoom settings, overwrite bounds
        setting.lat = this.getAttribute("lat");
        setting.lg = this.getAttribute("long");
        setting.zoom = this.getAttribute("zoom");
        // overwrite lat and long center
        if (setting.lat && setting.lg) {
            Map[map].setView([setting.lat, setting.lg]);
        }
        // overwrite zoom
        if (setting.zoom) {
            Map[map].setZoom(setting.zoom);
        }

        // if relevant, fly to new location

        try {
            var flyString = this.wiki.getTiddlerText("$:/FlyLocation").trim();

            if (flyString) {
                var flySplit = flyString.split(/[\#\|\s]+/);
                if (flySplit.length>1){
                    var Shapes = flyString.split(/[\#\|]+/);
                    var ShapesList = [];
                    try {
                        for (var shape in Shapes){
                            var Coords = Shapes[shape].split(" ");
                            var Shape = [];
                            for (var nd in Coords) {
                                var location = Coords[nd].split(",");
                                Shape.push(location);
                            }
                            ShapesList.push(Shape);
                        }

                        var polygon = L.polygon(ShapesList);
                        var bounds = polygon.getBounds();
                        Map[map].flyToBounds(bounds);
                    }catch(e){}

                } else {
                    var pt = flyString.split(",");
                    Map[map].flyTo(pt, 6);
                }
            }

            this.wiki.deleteTiddler("$:/FlyLocation");
        } catch(e) {}
        
    };

    // mapping a places json object (parent object, places json object, destination feature, destination cluster, popup for base objects, ands style parameters : color, marker, json style)
    function mapPlaces(obj, plcs, feat, clust, pop, col, mark, style) {
        // create feature for this mapping turn
        var feature = L.featureGroup();
        // case 1 : data in a tiddler
        if (plcs.tiddler) {
            // if no tiddler is given (single space) map current Tiddler
            // !todo would be much better if so when no attribute at all...
            if (plcs.tiddler == " ") {
                mapTiddler(obj, obj.getVariable("currentTiddler"), feature, clust, pop, col, mark, style);
            }
            // else, map the given tiddler
            else {
                // get data fields in the tiddler, let's seek for geo data
                mapTiddler(obj, plcs.tiddler, feature, clust, pop, col, mark, style);
            }
        }
        // case 2 : data in multiple tiddlers
        if (plcs.tiddlers) {
            mapTiddlers(obj, plcs.tiddlers, feature, clust, pop, col, mark, style);
        }
        // case 3 : data in tiddlers following a filter
        if (plcs.filter) {
            mapFilter(obj, plcs.filter, feature, clust, pop, col, mark, style);
        }
        // case 4 : data are directly listed in places (point(s) - polygon - polyline - geojson)
        // for each we will
        // - use dedicated function to populate mapping turn layer
        // - add layer to map
        if (plcs.point) {
            // add the point to the cluster layer
            mapPoint(plcs.point, clust, pop, col, mark, plcs.title);
            // add the cluster layer to map
            feature.addLayer(clust);
            // set bounds
        }
        if (plcs.points) {
            // ?todo : create a cluster for those points if clusterType == "tiddler"
            mapPoints(plcs.points, clust, pop, col, mark, plcs.title);
            feature.addLayer(clust);
        }
        if (plcs.polygon) {
            var polygFeat = L.featureGroup();
            mapPolyg(plcs.polygon, polygFeat, pop, col, style, plcs.title);
            polygFeat.addTo(feature);
        }
        if (plcs.polygons) {
            var polygsFeat = L.featureGroup();
            mapPolygs(plcs.polygons, polygsFeat, pop, col, style, plcs.title);
            polygsFeat.addTo(feature);
        }
        if (plcs.polyline) {
            var polylFeat = L.featureGroup();
            mapPolyl(plcs.polyline, polylFeat, pop, col, style, plcs.title);
            polylFeat.addTo(feature);
        }
        if (plcs.polylines) {
            var polylsFeat = L.featureGroup();
            mapPolyls(plcs.polylines, polylsFeat, pop, col, style, plcs.title);
            polylsFeat.addTo(feature);
        }
        if (plcs.geojson) {
            // !todo : create a cluster for those points if clusterType == "tiddler"
            var geojsonFeat = L.featureGroup();
            mapGeoJson(plcs.geojson, geojsonFeat, clust, col, mark, style);
            geojsonFeat.addTo(feat);
        }
        // add feature to map
        feature.addTo(feat);

        extBounds(feature);

        function saveBounds() {
            // console.log("saved bounds")
            var bounds = feat.getBounds();
            var centerLat = bounds.getCenter().lat;
            var centerLng = bounds.getCenter().lng;

            var west = String(Math.round(bounds.getWest()*100)/100);
            var south = String(Math.round(bounds.getSouth()*100)/100);
            var east = String(Math.round(bounds.getEast()*100)/100);
            var north = String(Math.round(bounds.getNorth()*100)/100);

            var originLng = String(Math.round((bounds.getWest()+centerLng)*100/2)/100);
            var originLat = String(Math.round((bounds.getSouth()+centerLat)*100/2)/100);
            var destLng = String(Math.round((bounds.getEast()+centerLng)*100/2)/100);
            var destLat = String(Math.round((bounds.getNorth()+centerLat)*100/2)/100);

            var boundsString = west+","+south+","+east+","+north+","+originLng+","+originLat+","+destLng+","+destLat;
            obj.wiki.setText("$:/MapTags", "text", undefined, boundsString);
        }

        var saveBoundsTimer;

    feat.on('zoomend', function() {
        clearTimeout(saveBoundsTimer);
        saveBoundsTimer = setTimeout(saveBounds, 1000);
    });
    feat.on('dragend', function() {
        clearTimeout(saveBoundsTimer);
        saveBoundsTimer = setTimeout(saveBounds, 1000);
    });
    }

    // add a marker for a point
    function mapPoint(coord, clust, pop, col, mark, objTitle="") {
        if (objTitle.startsWith("$:/")) objTitle = "";
        try {
            var location = coord.split(",");
        } catch (err) {displayError("point coord error", err);}
        try {
            var marker = L.marker(location, {
                icon: lfltIcon(col, mark, map)
            });
            marker.bindTooltip(objTitle, {sticky: true});
            if (objTitle) {
            marker.on('click', function() {
                console.log(objTitle);
                var story = new $tw.Story();
                story.navigateTiddler(objTitle);
            });
            }
            if (pop) marker.bindPopup(pop);
            if (clust.count) clust.count +=1;
            else clust.count = 1;
            clust.addLayer(marker);
        } catch (err) {displayError("point marker error", err);}
    }
    // add a marker serie for a points list
    function mapPoints(list, clust, pop, col, mark, objTitle="") {
        if (objTitle.startsWith("$:/")) objTitle = "";
        var Points = list.split(" ");
        for (var pt in Points) {
            mapPoint(Points[pt], clust, pop, col, mark, objTitle);
        }
    }

    // add a polygon
    function mapPolyg(list, feat, pop, col, st, objTitle="") {
        if (objTitle.startsWith("$:/")) objTitle = "";
        var Shapes = list.split("#");
        var ShapesList = [];
        try {
            for (var shape in Shapes){
                    var Coords = Shapes[shape].split(" ");
                    var Shape = [];
                    for (var nd in Coords) {
                            var location = Coords[nd].split(",");
                            Shape.push(location);
                    }
                    ShapesList.push(Shape);
            }

            var polygon = L.polygon(ShapesList, {
                color: setColor(col, map)
            });
            polygon.bindTooltip(objTitle, {sticky: true});
            if (objTitle) {
            polygon.on('click', function() {
                console.log(objTitle);
                var story = new $tw.Story();
                story.navigateTiddler(objTitle);
            });
            }
            if (st) polygon.setStyle(checkStyle(st, col));
            if (pop) polygon.bindPopup(pop);
            polygon.addTo(feat);

        } catch (err) {
            displayError("polygon", err);
        }
    }
    // add a polygons collection
    function mapPolygs(collec, feat, pop, col, st, objTitle="") {
        if (objTitle.startsWith("$:/")) objTitle = "";
        var Polys = collec.split("|");
        for (var pg in Polys) {
            mapPolyg(Polys[pg], feat, pop, col, st, objTitle);
        }
    }
    // add a polyline
    function mapPolyl(list, feat, pop, col, st, objTitle="") {
        if (objTitle.startsWith("$:/")) objTitle = "";
        var Coords = list.split(" ");
        var Line = [];
        try {
            for (var nd in Coords) {
                var location = Coords[nd].split(",");
                Line.push(location);
            }
        } catch (err) {
            displayError("polyline", err);
        }
        try {
            var polyline = L.polyline(Line, {
                color: setColor(col,map)
            });
            polyline.bindTooltip(objTitle, {sticky: true});
            if (objTitle) {
            polyline.on('click', function() {
                console.log(objTitle);
                var story = new $tw.Story();
                story.navigateTiddler(objTitle);
            });
            }
            if (st) polyline.setStyle(checkStyle(st, col));
            if (pop) polyline.bindPopup(pop);
            // add polyline class in order to make fill transparent
            polyline.setStyle({
                "className": "polyline"
            }).addTo(feat);
        } catch (err) {
            displayError("polyline", err);
        }
    }
    // add a polylines collection
    function mapPolyls(collec, feat, pop, col, st, objTitle="") {
        if (objTitle.startsWith("$:/")) objTitle = "";
        var Lines = collec.split("|");
        for (var ln in Lines) {
            mapPolyl(Lines[ln], feat, pop, col, st, objTitle);
        }
    }

    // add a geojson set
    function mapGeoJson(geojson, feat, clust, col, mark, st) {
        try {
            var data = JSON.parse(geojson);
            var geoJson = L.geoJSON(data, {
                // adding style
                style: function (feature) {
                    // get feature style only if style is not injected
                    // ?todo : only overwrite injected values?
                    if (st === undefined || st === null) {
                        st = {};
                        if(feature.properties.style !== undefined) st = feature.properties.style;
                    }
                    // get feature properties style if exists
                    if(feature.properties.color !== undefined) {
                        st.color = feature.properties.color;
                        st.fillColor = st.color;
                    }
                    // color parameter overwrite style color if exists
                    if (col !== undefined && col !== null) {
                        st.color = col;
                        st.fillColor = col;
                    }
                    // if no color is defined at the end, fallback
                    if (st.color === undefined) {
                        col = setColor(col, map);
                        st.color = col;
                        st.fillColor = col;
                    }
                    return st;
                },
                onEachFeature: function (feature, layer) {
                    layer.bindPopup(jsonPop(feature));
                },
                // adding points
                pointToLayer: function(geoJsonPoint, latlng) {
                    // working to get color (from properties)
                    var cl;
                    if(geoJsonPoint.properties.color !== undefined) cl = geoJsonPoint.properties.color;
                    if(geoJsonPoint.properties.fillColor !== undefined) cl = geoJsonPoint.properties.fillColor;
                    if(col !== undefined && col !== null) cl = col;
                    // binding default icon
                    var jsonPoint = L.marker(latlng, {
                        icon: lfltIcon(cl, mark, map)
                    });
                    jsonPoint.bindPopup(jsonPop(geoJsonPoint));
                    if (clust.count) clust.count +=1;
                    else clust.count = 1;
                    clust.addLayer(jsonPoint);
                }
            });

            // ?todo : should we add clust to feat or to geoJson? should we add clust even if it's already here?
            feat.addLayer(clust);
            feat.addLayer(geoJson);
        } catch (error) {displayError("there was an error when displaying geoJson. error : ", error);}
    }

    // map a tiddler
    function mapTiddler(obj, tid, feat, clust, pop, col, mark, style) {
        if(iter.map.tid === undefined) iter.map.tid = 1;
        else iter.map.tid +=1;
        if(iter.map.tid < 4242) {
            // get data fields in the tiddler, let's seek for geo data
            var flds = obj.wiki.getTiddler(tid).fields,
                feature = L.featureGroup();               // create the tiddler feature
                //popup = "";                               // create the popup text
            // setting marker, color, style
            // if no marker injected, trying to get from tiddler
            if(mark === null || mark === undefined) {
                if(flds.marker) mark = flds.marker;
            }
            // working style and color together
            var cl, st = {};
            // style
            if(flds.style) st = JSON.parse(flds.style);
            // overwrite with injected values
            if (style !== undefined && style !== null) {
                st = style;
                /* ?todo : should we overwrite only injected?
                for (var v in st) {
                   if(style.v !== undefined) st.v = style.v;
                }
                for (var v in style) {
                }*/
            }
            // color
            if (flds.color) cl = flds.color;
            // overwrite with injected color style if exists
            if (style !== undefined && style !== null) {
                if (st.fillColor !== undefined) cl = st.fillColor;
            }
            // overwrite with injected color also in style
            if (col !== undefined && col !== null) {
                cl = col;
                st.color = cl; st.fillColor = cl;
            }
            Colour["t" + tn] = cl;
            // if clusterType is tiddler, creating a cluster group for tiddler
            // also will have to deal with the filter / tiddler distinction
            if (clusterType[map] == "tiddler") {
                // ?todo : automate cluster creation?
                fCluster["t" + tn] = L.markerClusterGroup({
                    name: "Cluster" + map + "Cluster" + tn,
                    polygonOptions: {"weight":"0.5"},
                    maxClusterRadius: clusterRadius[map],
                    /* for the record. may be a function
         function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/
                    iconCreateFunction: createCluster
                });
            } else {
                fCluster["t" + tn] = fCluster[map];
            }

            // case 1 : data stored in a json tiddler
            if (flds.type == "application/json") {
                // for now, assuming any json stored data is geoJson...
                var data = obj.wiki.getTiddlerText(tid);
                mapGeoJson(data, feature, fCluster["t" + tn], Colour["t" + tn], mark, st);
                feat.addLayer(feature);
            }
            // case 2 if tiddler is not JSON data, display tiddler stored geodata as point(s), polygon, polyline...
            else {
                // create the popup for base objects
                /*popup = "<h2><a href=\"#" + encodeURIComponent(flds.title) + "\">" + flds.title + "</a></h2>";
                var content = "";
                if (flds.tooltip) {
                    content += "<h3>" + flds.tooltip + "</h3>";
                }
                popup += content;*/

                // map recursively (!!! danger !!!)
                mapPlaces(obj,
                          flds,
                          feature,
                          fCluster["t" + tn],
                          null,
                          cl,
                          mark,
                          st
                         );
                feature.addTo(feat);
            }
            /*
// check if anything was rendered before binding popup
     if (wasRendered == 0) console.log("tw-leaflet-map-plugin > non geotiddler was listed and not rendered : " + flds.title);
     // add the layer to the feature
     feature.addLayer(subFeat);
     feature.addTo(Map[map]); // layer.addTo(Map[map]);
 } */
            // get layer bounds for automatic zoom
            extBounds(feature);
            tn++;
        }
        // it tiddler rendered too many times for same map. Stoping and error launch
        else $tw.utils.error("tiddler [[" + tid + "]] was rendered more than 4242 times in this map. Please double check circular dependencies...");
    }

    // map a tiddler collection
    function mapTiddlers(obj, list, feat, clust, pop, col, mark, style) {
        var Tids = list.split(" ");
        for (var td in Tids) {
            mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);
        }
    }

    // map tiddlers with a filter
    function mapFilter(obj, filter, feat, clust, pop, col, mark, style) {
        try {
            iter.map.tid = 1;
            var Tids = obj.wiki.filterTiddlers(filter);
            //console.log(Tids);
            for (var td in Tids) {
                //console.log(td, Tids[td]);
                mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);
            }
        } catch (error) {
            $tw.utils.error("sorry there was something wrong when trying to map your filter. error : " + error);
        }
    }

    // icon url creator
    function iconUrl(col, tid, m) {
        var icone = escape($tw.wiki.renderTiddler("text/html", tid).replace("$primary$", setColor(col, m)).replace("</p>", "").replace("<p>", ""));
        return ('data:image/svg+xml;charset=UTF-8,' + icone);
    }

    // create marker
    // ?todo only if there are points to display;
    function lfltIcon(col, tid, m) {
        // checking if marker is defined. Fallback to default
        if(tid === undefined || tid === null) tid = "$:/plugins/sycom/leaflet/images/marker.svg";
        else tid = "$:/plugins/sycom/leaflet/images/" + tid + ".svg";
        if($tw.wiki.getTiddler(tid) === undefined) tid = "$:/plugins/sycom/leaflet/images/marker.svg";
        // !todo  create shadow from icon by transform matrix?
        var shad = tid.split(".svg")[0] + "shadow.svg",
            shadowUrl = 'data:image/svg+xml;charset=UTF-8,' + escape($tw.wiki.getTiddlerText(shad));
        // get dimensions in tiddler
        var MarkDim = $tw.wiki.getTiddler(tid).fields.marker_dim.split(" ");
        var ShadDim = $tw.wiki.getTiddler(shad).fields.marker_dim.split(" ");
        var theIcon = L.icon({
            iconUrl: iconUrl(col, tid, m),
            iconRetinaUrl: iconUrl(col, tid, m),
            iconSize: [MarkDim[0], MarkDim[1]],
            iconAnchor: [MarkDim[2], MarkDim[3]],
            popupAnchor: [0, -MarkDim[3]],
            shadowUrl: shadowUrl,
            shadowRetinaUrl: shadowUrl,
            shadowSize: [ShadDim[0], ShadDim[1]],
            shadowAnchor: [ShadDim[2], ShadDim[3]]
        });
        return theIcon;
    }

    // set color with fallback to map color or wiki...
    function setColor(col, m) {
        if(m === undefined) m = map;
        if (col === undefined || col === null) col = Colour[m];
        if (col === undefined || col === null) col = Colour.wiki;
        return col;
    }

    // set style with fallback to map color or wiki...
    function checkStyle(sty, col) {
        if (col === undefined || col === null) {
            if(sty.color === undefined) sty.color = setColor(col, map);
            if(sty.fillColor === undefined) sty.fillColor = setColor(col, map);
        }
        else {
            sty.color = col;
            sty.fillColor = col;
        }
        return sty;
    }

    // coordinate error message
    function displayError(objectType, error) {
        $tw.utils.error("there was an error when mapping a " + objectType + " - error : " + error);
    }

    // adjust bounds to layer
    function extBounds(feat) {
        try {
            if (bounds) {
                bounds.extend(feat.getBounds());
            } else {
                if (feat.getBounds()._northEast) {
                    bounds = feat.getBounds();
                }
            }
        } catch (error) {
            $tw.utils.error("there was an error when trying to zoom on bounds. error : " + error);
        }
    }

    // cluster icon creation
    function createCluster(clust) {
        // getting back map number
        var m = this.name.split("Cluster")[1],
            t = this.name.split("Cluster")[2],
            zC = Map[m].getZoom(),
            z0,cTot,cCol,cOpa;
        // checking object density mean for the map
        if (t === undefined) {
            if (fCluster[m].z0 === undefined) fCluster[m].z0 = zC;
            z0 = fCluster[m].z0;
            if (fCluster[m].count === undefined) fCluster[m].count = 1;
            cTot = fCluster[m].count;
            cCol = setColor(Colour[m],m);
            cOpa = 0.85
        }
        else {
            if (fCluster["t" + t].z0 === undefined) fCluster["t" + t].z0 = zC;
            z0 = fCluster["t" + t].z0;
            if (fCluster["t" + t].count === undefined) fCluster["t" + t].count = 1;
            cTot = fCluster["t" + t].count;
            cCol = setColor(Colour["t" + t],m);
            cOpa = 0.65
        }
        // cluster icon size will be based on item number and zoom
        // !todo: use density to get a more "local" percentage before calculating size
        var cC = clust.getChildCount(),
            cS = 20 * Math.log(clusterRadius[m]) * (1 + Math.log(cTot)/Math.max(cTot * Math.pow(2,zC-z0),Math.log(cTot))) * (1 - 1 / ((Math.log(cTot) / cTot) * Math.pow(2,zC-z0) * cC + 1));
        if (cS < 34) cS = 34;
        var cF; // font size of cluster text
        if (cC > 9999) cF = cS / 3;
        else {if (cC > 999) cF = cS / 3.5;
        else cF = cS / 2}
        if (cF < 12) cF = 12;
        // creating icon. Checking tiddler or whole clustering before
        return new L.DivIcon({
            html: '<div style="width:' + cS + 'px;height:' + cS + 'px;font-size:' + cF + 'px;background-color:' + cCol + ';border-color:' + cCol + ';opacity:'+cOpa+'"><div><span style="line-height:' + cS + 'px;opacity:'+(cOpa+0.12)+'">' + cC + "</span></div></div>",
            className: "marker-cluster marker-cluster-" + cC,
            iconSize: new L.Point(cS, cS)
        });
    }

    // popup function for Json
    function jsonPop(feat) {
        // extracting data to create popup (all non-null data!)
        var Prop = feat.properties,
            jsontitle = "",
            jsondesc = "",
            jsonhtml = "";
        // testing if properties title or name exists
        if (Prop.name) jsontitle += Prop.name + " ";
        if (Prop.title) jsontitle += Prop.title + " ";
        if (Prop.description) jsondesc +=  Prop.description + "";
        // populating other data
        // if we got a title
        if (jsontitle !== "") {
            jsonhtml += "<h4>" + jsontitle + "</h4>";
            // if we got a description let's give it
            if (jsondesc !== "") jsonhtml += jsondesc;
            else {
                jsonhtml+= "<ul>";
                for (var p in Prop) {
                    if (Prop[p] !== null && Prop[p] !== "" && p != "name" && p != "title") jsonhtml += "<li>" + p + " : " + Prop[p] + "</li>";
                }
                jsonhtml += "</ul>";
            }
        }
        // if we have no title, giving one with first fields
        else {
            // in case we've got a description. Stop after title
            if (jsondesc !== "") {
                for (var pr in Prop) {
                    // if title is really to short (as an id), taking next field
                    if (jsontitle.length < 8) jsontitle += Prop[pr] + " ";
                    else break;
                }
                jsonhtml = "<h4>" + jsontitle + "</h4>" + jsonhtml;
            }
            else {
                for (var po in Prop) {
                    // if title is really to short (as an id), taking next field
                    if (jsontitle.length < 4) jsontitle += Prop[po] + " ";
                    else {
                        if (Prop[po] !== null && Prop[po] !== "") jsonhtml += "<li>" + po + " : " + Prop[po] + "</li>";
                    }
                }
                jsonhtml = "<h4>" + jsontitle + "</h4><ul>" + jsonhtml + "</ul>";
            }
        }
        return jsonhtml;
    }

    exports.leafmap = mapWidget;

})();
/*
MISC NOTES for later
JSON.parse(tiddler.fields.text);
var jsonData = this.wiki.getTiddlerAsJson(this.to),
*/
<$list filter="[all[current]has[point]] [all[current]has[points]] [all[current]has[polyline]] [all[current]has[polylines]] [all[current]has[polygon]] [all[current]has[polygons]] [all[current]has[places]] [all[current]has[geojson]]">
  <$leafmap  places='{"tiddler":" "}' height='240px'/>
</$list>
{
    "tiddlers": {
        "$:/plugins/tg/layout/combination": {
            "created": "20180316161209354",
            "text": "In case two or three of the following plugins:\n\n* Top menu  ^^1^^ or Top-left menu ^^1^^\n* Top toolbar ^^1^^\n* Tiddlersbar ^^1^^\n\nare to be combined, some adjustments to the layout are necessary to prevent overlapping parts. The following gives the general procedure.\n\n# Click the ''Adjust layout'' button (<<icn $:/plugins/tg/layout/images/layout>>) in the top right bar or click [[Plugin tweaks|$:/plugins/tg/layout/tweaks]] and select the Theme tweaks tab\n## To create extra room on top, increase ''Story top position''\n# Select the Layout tab and increase ''Height topbar''\n# If required, adjust the 'Top' settings of<div>\n\n* 'Top menu' (tab Top menu, setting ''Top 'Top menu''')\n* 'Top-left menu' (tab Top-left menu, setting ''Top 'Top menu''' & setting ''Top 'Left menu''')\n* 'Toolbar' (tab Toolbar, setting ''Top 'Toolbar''')\n* 'Tiddlersbar (tab Tiddlersbar, setting ''Top 'Tiddlersbar''')\n</div>\n# Some tweaking of the above values\n# Adjust ''Sidebar top position'' in Theme tweaks tab until wiki title and tiddler title are level.\n\n\n\n^^''1''^^ Available at http://tongerner.tiddlyspot.com/\n\n<<<\n''Note:''<br>http://tongerner.tiddlyspot.com/ shows the combination of 'Top menu', 'Toolbar' and 'Tiddlersbar'.\n<<<\n\n",
            "title": "$:/plugins/tg/layout/combination",
            "tags": "",
            "modified": "20200313135445072"
        },
        "$:/plugins/tg/layout/configuration-button": {
            "created": "20171203165317769",
            "text": "<$button class=\"tc-btn-invisible\" tooltip=\"Adjust layout\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/tweaks\" height=\"800px\" width=\"720px\"/>\n{{$:/plugins/tg/layout/images/layout}}\n</$button>\n\n\n",
            "title": "$:/plugins/tg/layout/configuration-button",
            "tags": "$:/tags/TopRightBar",
            "modified": "20200313135507564",
            "list-before": "$:/core/ui/TopBar/menu",
            "description": "Adjust layout",
            "caption": "{{$:/plugins/tg/layout/icon}} adjust layout"
        },
        "$:/plugins/tg/layout/css-units": {
            "text": "<br>\n\n* You can enter values in allowed CSS units, e.g. `%`, `px`, `em`, ...\n* You can enter colors:\n** by name, e.g. `red`, `blue`, ... see [[w3schools|https://www.w3schools.com/tags/ref_colornames.asp]]\n** as 6 (sometimes 3) digit Hex color code, e.g. `#FF0000` (or `#F00`)\n** with the color macro, e.g. `<<colour primary>>`.\n",
            "title": "$:/plugins/tg/layout/css-units",
            "modified": "20191216151510179",
            "created": "20190722175502370"
        },
        "$:/plugins/tg/layout/icon": {
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n <metadata id=\"metadata7\">image/svg+xml</metadata>\n <g>\n  <title>Layer 1</title>\n  <g id=\"layer1\">\n   <path d=\"m48.98237,97.8691l-41.98313,-24.239l0,-48.47796l41.98313,-24.23897l41.98313,24.23897l0,48.47796l-41.98313,24.239z\" id=\"path4142\" stroke-miterlimit=\"4\" stroke-width=\"1.2218\" stroke=\"#a0a0ff\" fill=\"#a0a0ff\"/>\n   <path id=\"svg_3\" d=\"m73.1813,28.26401l-15.55706,15.81597c0.61319,0.6247 0.61206,1.63724 0,2.25944c-0.61371,0.62398 -1.60823,0.62448 -2.22362,0l-6.66496,-6.77579c-0.61439,-0.62462 -0.61363,-1.63801 0,-2.26065c0.61329,-0.62358 1.60695,-0.62444 2.22244,0l0,0l15.55707,-15.81609c1.84112,-1.87179 4.8262,-1.87179 6.66732,0c1.84113,1.87178 1.84112,4.90654 -0.00001,6.77832l-0.00118,-0.0012zm-50.00484,46.31849l-2.22244,-2.2595l3.30621,-5.6205l3.36112,-1.1578l23.33557,-23.72413l2.22243,2.25941l-23.33556,23.72422l-1.13868,3.417l-5.52865,3.3613z\" fill-rule=\"evenodd\"/>\n  </g>\n </g>\n</svg>",
            "type": "image/svg+xml",
            "title": "$:/plugins/tg/layout/icon",
            "modifier": "TonGerner",
            "modified": "20191216151535498",
            "creator": "TonGerner",
            "created": "20160109160239631"
        },
        "$:/plugins/tg/layout/info": {
            "created": "20190902161718650",
            "text": "\\define slidertg(label,tiddler)\n<$button popup=\"$:/state/$tiddler$\" class=\"tc-btn-invisible tgc-slider\"><$text text=\"$label$ »\"/></$button>\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=\"$:/state/$tiddler$\" animate=\"yes\">\n\n{{$tiddler$}}\n\n</$reveal>\n\\end\n\n* <<slidertg \"CSS units\" $:/plugins/tg/layout/css-units>>\n* <<slidertg \"Combine plugins\" $:/plugins/tg/layout/combination>>\n* <<slidertg \"Upgrading plugins\" $:/plugins/tg/layout/upgrade>>\n\n\n",
            "title": "$:/plugins/tg/layout/info",
            "tags": "$:/tags/plugin-tweaks",
            "order": "1",
            "modified": "20191230140536247",
            "caption": "General info"
        },
        "$:/plugins/tg/layout/license": {
            "text": "[[Layout tweaks plugin|http://tongerner.tiddlyspot.com/#Layout%20adjustment%20plugin]] &copy; Ton Gerner &mdash; 2018-2020\n\nMIT License: https://opensource.org/licenses/MIT\n",
            "title": "$:/plugins/tg/layout/license",
            "tags": "",
            "modified": "20191227193112628",
            "created": "20180124162829244"
        },
        "$:/plugins/tg/layout/readme": {
            "text": "''Note:''<br>This plugin contains 'general' settings for the layout and is additionally required for my following plugins: ^^1^^\n\n* Top menu\n* Top-left menu (top + left menu)\n* Toolbar (on top)\n* Tiddlersbar\n* ~TabStory (alternative tiddlersbar at top of story)\n* Uptoolbar (toolbar above title)\n* Tristate (tristate sidebar)\n\nThis plugin contains layout code common to the mentioned plugins and let you adjust:\n\n!! Theme tweaks\n* Sidebar layout\n* Story left position\n* Story top position\n* Story right\n* Story width\n* Tiddler width\n* Sidebar top position\n* Sidebar width\n\n!! Layout tweaks\n* Checkboxes\n** Display layout button (<<icn $:/plugins/tg/layout/images/layout>>)\n** Search above story\n** Toolbar to toggle editor toolbar + preview\n** Sort recent results alphabetical\n** Button to top of story river\n** Hide description Tools tab buttons\n** System tags tab\n** Recent dates bold\n** Sticky titles\n*** Add sticky editor toolbar (when titles are sticky)\n** Set tiddler toolbar above the tiddler title\n** Tagging in view mode\n** Field handling in view mode\n** Setting type in view mode\n\n* Other settings\n** Color and height of the top bar (as a boundary for top menu, toolbar, tiddlersbar, etc.)\n** Top padding of a tiddler\n** Color for  displaying the  'active' state of some toggle buttons\n\nSettings for the layout can be found in ''~ControlPanel > Appearance > [[Plugin tweaks|$:/plugins/tg/layout/tweaks]]'', also available via the 'Adjust layout' button (<<icn $:/plugins/tg/layout/images/layout>>) in the Toprightbar.\n\n|borderless|k\n|^^^1^^ |&nbsp;&nbsp;|All these plugins contain a 'Settings' tiddler tagged with $:/tags/plugin-tweaks and will display - when installed - a tab under 'Plugin tweaks'.|\n\n<<<\n''Note:''<br>@@color:red;A sticky editor toolbar works ''only'' well in non-preview mode!.@@\n<<<",
            "title": "$:/plugins/tg/layout/readme",
            "modifier": "TonGerner",
            "modified": "20200622175838948",
            "creator": "TonGerner",
            "created": "20150731184044439"
        },
        "$:/plugins/tg/layout/search": {
            "created": "20181228194403881",
            "text": "{{$:/AdvancedSearch}}",
            "title": "$:/plugins/tg/layout/search",
            "tags": "",
            "modified": "20200115143633717"
        },
        "$:/plugins/tg/layout/settings": {
            "created": "20150729190109349",
            "text": "!!Layout tweaks\n\n|Layout tweaks |<|h\n|<$checkbox tiddler=\"$:/plugins/tg/layout/configuration-button\" tag=\"$:/tags/TopRightBar\"> 'Adjust layout' button</$checkbox>|<<icn $:/plugins/tg/layout/images/layout>>|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/search\" tag=\"$:/tags/AboveStory\"> 'Search above story river'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/toggle_toolbar\" tag=\"$:/tags/EditTemplate\"> Toolbar 'Toggle editortoolbar/preview'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/timeline-macro\" tag=\"$:/tags/Macro\"> 'Sort recent alphabetical'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/button2top/style\" tag=\"$:/tags/Stylesheet\"> 'Button to top of story river'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/tools/style\" tag=\"$:/tags/Stylesheet\"> 'Hide description Tools tab buttons'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/systemtags\" tag=\"$:/tags/MoreSideBar\"> 'System tags tab'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/recent-dates-bold/style\" tag=\"$:/tags/Stylesheet\"> 'Recent dates bold'</$checkbox>|<|\n|{{$:/plugins/tg/layout/sticky-editor-toolbar}}|<|\n|{{$:/plugins/tg/layout/toolbar-up/ckeckbox}}|<|\n|||\n|||\n|View mode extensions |<|h\n|<$checkbox tiddler=\"$:/core/ui/EditTemplate/tags\" tag=\"$:/tags/ViewTemplate\">  Tagging in view mode</$checkbox>|If checked, reorder via<br><<tag $:/tags/ViewTemplate>>|\n|{{$:/plugins/tg/layout/field-handling-checkbox}}|~|\n|<$checkbox tiddler=\"$:/core/ui/EditTemplate/type\" tag=\"$:/tags/ViewTemplate\"> Setting type in view mode</$checkbox>|~|\n\n\n<table class=\"tablestyle\">\n@@.brown ''Top bar''@@\n<<tableRow \"Background color 'Top bar'\" \"$:/plugins/tg/layout/styles\" \"topbar-background-color\">>\n<<tableRow \"Height 'Top bar'\" \"$:/plugins/tg/layout/styles\" \"topbar-height\">>\n@@.brown ''Tiddler''@@\n<<tableRow \"Top padding\" \"$:/plugins/tg/layout/styles\" \"tiddler-padding-top\">>\n@@.brown ''Button color''@@\n<<tableRow \"Active button color\" \"$:/plugins/tg/layout/styles\" \"active-state-color\">>\n</table>\n\n<<<\n''Note:''\n\n* @@color:red;For a 'Top bar' to become visible, a ''color'' (and a ''height > 0px'') need to be entered!@@\n* The height of the Top bar is also the offset for sticky titles; the sticky editor toolbar gets an extra 40px offset\n** @@color:red;A sticky editor toolbar works ''only'' correct in non-preview mode!@@\n<<<\n\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/settings-help\" height=\"800px\" width=\"720px\"/>Help</$button>",
            "up": "yes",
            "title": "$:/plugins/tg/layout/settings",
            "tags": "$:/tags/plugin-tweaks",
            "sticky": "yes",
            "order": "3",
            "modifier": "TonGerner",
            "modified": "20200921182029331",
            "creator": "TonGerner",
            "caption": "Layout tweaks"
        },
        "$:/plugins/tg/layout/settings-help": {
            "text": "|Layout tweaks |<|<|<|h\n|Item|Entry |Description |Default |h\n|'Adjust layout' button |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|'Adjust layout' button in Toprightbar| <input type=\"checkbox\" checked /> |\n|'Search above story river' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Advanced search above story river&nbsp;^^''1''^^| <input type=\"checkbox\" /> |\n|Toolbar 'toggle editortoolbar/preview' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Toolbar - in edit mode - below tags| <input type=\"checkbox\" checked /> |\n|Sort recent results alphabetical |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Sort recent results each day in alphabetical order| <input type=\"checkbox\" checked /> |\n|'Button to top of story river' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Button to jump to top of story river| <input type=\"checkbox\" checked /> |\n|'Hide description Tools tab buttons' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Hide decriptions next to buttons under Tools tab| <input type=\"checkbox\" checked /> |\n|'System tags tab' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Add a System tags tab| <input type=\"checkbox\" checked /> |\n|'Recent dates bold' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Show dates in recent tab bold| <input type=\"checkbox\" checked /> |\n|Sticky titles|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Causes tiddler titles to \"stick\" to the top| <input type=\"checkbox\" /> |\n| Sticky editor toolbar|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|If titles are sticky, editor toolbar will be sticky as well when checked| <input type=\"checkbox\"/> |\n|Set tiddler toolbar above the tiddler title|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Creates more room for tiddler title ^^2^^| <input type=\"checkbox\" /> |\n|View mode extensions ^^''3''^^|<|<|<|h\n|Tagging in view mode|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Adds the tag picker in view mode| <input type=\"checkbox\" /> |\n|Field handling in view mode|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Adds adding /editing fields in view mode| <input type=\"checkbox\" /> |\n|Setting type in view mode|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Adds  setting type in view mode| <input type=\"checkbox\" /> |\n\n|Top bar / tiddler / button color|<|<|<|h\n|Item |Entry |Description |Default |h\n|''Topbar'' |Background color 'Top bar'|Background color of the top bar<br>Transparent when left 'blank'!| `<<colour page-background>>` |\n|~|Height 'Top bar'|Height of the top bar| 40px |\n|''Tiddler'' |Top padding |Top padding of tiddler  | 30px |\n|''Button color''|Active button color |Color indicating 'active' state of toggle button | `<<colour primary>>` |\n\n\n|borderless|k\n|^''@@font-size: 0.8em;1@@'' |&nbsp;&nbsp;|&bull; In classic storyview: scroll up to reach search<br>&bull; In zoomin view search always visible|\n|^''@@font-size: 0.8em;2@@'' ||Adds 'Toolbar - title' tab to Plugin tweaks with settings for layout of tiddler toolbar|\n|^''@@font-size: 0.8em;3@@'' ||You can reorder these entries by clicking <<tag $:/tags/ViewTemplate>> + drag & drop|\n\n\n\n\n\n",
            "title": "$:/plugins/tg/layout/settings-help",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20200622175651648",
            "creator": "TonGerner",
            "created": "20150801124528672"
        },
        "$:/plugins/tg/layout/sidebar-top": {
            "text": "0px",
            "title": "$:/plugins/tg/layout/sidebar-top",
            "tags": "",
            "modified": "20191216152841842",
            "created": "20161213115930178"
        },
        "$:/plugins/tg/layout/styles": {
            "text": "<pre>/* LAYOUT SETTINGS */\n\n/* VERTICAL OFFSET FOR TOP OF SIDEBAR */\nhtml .tc-sidebar-scrollable {\n    top: {{$:/plugins/tg/layout/sidebar-top}};\n}\n\n* BACKGROUND COLOR TOPRIGHTBAR (with double chevron) */\n.tc-topbar {\n     background-color: {{!!topbar-background-color}};\n}\n\n/* TOPBAR */\n.tgc-toolbar {\n     display:block;\n     position:fixed;\n     left:0px;\n     top:0px;\n     width:100%;\n     height: {{!!topbar-height}};\n     background-color: {{!!topbar-background-color}};\n     z-index: 600;\n}\n\n/* TOP PADDING TIDDLER */\nbody.tc-body .tc-tiddler-frame {\n     padding-top: {{!!tiddler-padding-top}};\n}\n\n/* COLOR ACTIVE STATE TOGGLE BUTTON */\nbody.tc-body .tgc-active-indicator {\n     color: {{!!active-state-color}};\n}\nbody.tc-body .tgc-active-indicator svg {\n     fill: {{!!active-state-color}};\n}\n\nbody.tc-body .tgc-active-indicator:hover svg {\n     fill: <<colour \"foreground\">>;\n}\n\n/* HIDE BUTTON2TOP WHEN NOT ACTIVE */\n.tgc-fixed-bottom {\n     display: none;\n}\n\n/* TITLE - TOOLBAR SPACING */\nhtml .tgc-tiddler-title-space {\n     line-height: {{!!title-toolbar-spacing}}; \n}\n\n/* SIZE OF TIDDLER BUTTONS */\nhtml .tc-tiddler-controls button svg {\n     height: {{!!tiddler-button-size}};\n}\n\n/* SPACE BETWEEN TIDDLER BUTTONS */\nhtml .tc-tiddler-controls button {\n     margin-left: {{!!tiddler-button-spacing}};\n}\n\n/* SETTINGS TABLE */\n/* WIDTH SETTINGS TABLE */\ninput[type='text'].settings {\n     width: 150px;\n}\ntable.tablestyle {\n     font-size: 0.9em;\n     border-width: 0px;\n     border-style: solid;\n     padding: 2px;\n     border-color: #DDD;\n     border-collapse: collapse;\n}\ntable.tablestyle th {\n     background-color: #F0F0F0;\n     border-color: #DDD;\n     text-align: left;\n     vertical-align: top;\n     border-style: solid;\n     border-width: 1px;\n     padding: 5px;\n}\ntable.tablestyle tr {\n     background-color: #F0F0F0;\n     padding: 0px;\n}\ntable.tablestyle td {\n     border-color: #DDD;\n     border-style: solid;\n     border-width: 1px;\n     padding:2px;\n}\n/* COLOR HEADINGS TABLE */\n.brown {\n     color: #884411;\n     font-weight: bold;\n}\n/* BORDERLESS TABLES */\n.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody {\n     border:0 !important;\n     margin:0 !important;\n     padding:0 !important;\n}\n</pre>",
            "topbar-height": "40px",
            "topbar-background-color": "<<colour page-background>>",
            "title-toolbar-spacing": "1.3em",
            "title": "$:/plugins/tg/layout/styles",
            "tiddler-padding-top": "30px",
            "tiddler-button-spacing": "0px",
            "tiddler-button-size": "0.6em",
            "tags": "$:/tags/Stylesheet",
            "story-river-top": "0px",
            "sidebar-top": "0px",
            "modifier": "TonGerner",
            "modified": "20200314160330594",
            "list-after": "$:/themes/tiddlywiki/vanilla/base",
            "creator": "TonGerner",
            "created": "20161212103011213",
            "active-state-color": "<<colour primary>>"
        },
        "$:/plugins/tg/layout/themetweaks-help": {
            "text": "|Item |Entry |Description |Default |h\n|Theme tweaks |^Sidebar layout |^Choice between Fluid story, fixed sidebar and Fixed story, fluid sidebar|Fluid story, fixed sidebar&nbsp;^^1^^|\n|~|^Story left position |^How far the left margin of the story river (tiddler area) is from the left of the page| 0px|\n|~|^Story top position |^How far the top margin of the story river is from the top of the page| 0px ^^2^^|\n|~|^Story right |^How far the left margin of the sidebar is from the left of the page| 770px|\n|~|^Story width |^The overall width of the story river| 770px|\n|~|^Tiddler width |^Within the story river| 686px|\n|~|^Sidebar top position |^Start of the sidebar<br>(from the top)| 0px ^^2^^|\n|~|^Sidebar width |^The width of the sidebar in fluid-fixed layout| 350px|\n\n|borderless|k\n|^''@@font-size: 0.8em;1@@'' ||''Fluid story, fixed sidebar interferes with Tristate plugin'' => select Fixed story, fluid sidebar for Tristate plugin |\n|^''@@font-size: 0.8em;2@@'' |&nbsp;&nbsp;|Default values; ''need to be adjusted (increased) in case of adding a top menu, toolbar, tiddlersbar, ... to the wiki!''|",
            "title": "$:/plugins/tg/layout/themetweaks-help",
            "tags": "",
            "modified": "20191227170019117",
            "created": "20161212130221042"
        },
        "$:/plugins/tg/layout/toggle_toolbar": {
            "created": "20190221194645657",
            "text": "Toggle editor toolbar <$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"></$checkbox>&nbsp;&nbsp;&nbsp;Toggle preview <$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/showeditpreview\" setTo=\"no\" tooltip=\"Hide preview\" class=\"tc-btn-invisible\">{{$:/core/images/preview-open}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/showeditpreview\" setTo=\"yes\" tooltip=\"Show preview\" class=\"tc-btn-invisible\">{{$:/core/images/preview-closed}}</$button>\n</$reveal>\n&nbsp;Scrollable preview <$checkbox tiddler=\"$:/plugins/tg/layout/style_scroll_preview\" tag=\"$:/tags/Stylesheet\"></$checkbox>&nbsp;&nbsp;Toggle sidebar {{$:/core/ui/TopBar/menu}}\n\n",
            "title": "$:/plugins/tg/layout/toggle_toolbar",
            "tags": "$:/tags/EditTemplate",
            "modifier": "TonGerner",
            "modified": "20191216153840057",
            "list-after": "$:/core/ui/EditTemplate/tags",
            "creator": "TonGerner"
        },
        "$:/plugins/tg/layout/topbar": {
            "text": "<div class=\"tgc-toolbar tc-adjust-top-of-scroll\"></div>\n",
            "title": "$:/plugins/tg/layout/topbar",
            "tags": "$:/tags/PageTemplate",
            "modifier": "TonGerner",
            "modified": "20191216153308624",
            "creator": "TonGerner",
            "created": "20150731184520854"
        },
        "$:/plugins/tg/layout/tweaks": {
            "created": "20150801100456266",
            "text": "The general layout adjustments can be found under the 'Themes tweak' and 'Layout tweaks' tabs. Dependent on installed plugins other tabs are available ('Top menu', 'Top-left menu', 'Top toolbar', 'Tiddlersbar, '~TabStory', 'Uptoolbar', 'Tristate').\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/plugin-tweaks]nsort[order]]\" \"$:/plugins/tg/layout/settings\" \"\" \"tc-vertical\">>",
            "title": "$:/plugins/tg/layout/tweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "status": "yes",
            "modifier": "TonGerner",
            "modified": "20200314172835412",
            "creator": "TonGerner",
            "caption": "Plugin tweaks",
            "up": "no"
        },
        "$:/plugins/tg/layout/upgrade": {
            "text": "Recommended before upgrading one of the following plugins:\n\n* Layout adjustment\n* Top menu\n* Top toolbar\n* Tiddlersbar\n\n<hr>\n\n\n# Note down all adjustments made in the Settings section of the plugin\n# Delete the following overridden shadow tiddlers of the plugin:\n#* Settings\n#* Styles\n# Upgrade the plugin\n# Reapply the settings",
            "title": "$:/plugins/tg/layout/upgrade",
            "tags": "",
            "modified": "20191216153509327",
            "created": "20190816185216079"
        },
        "$:/plugins/tg/layout/style_scroll_preview": {
            "text": ".tc-edit-texteditor, .tc-tiddler-preview-preview {\n     max-height:80vh;\n     overflow-y:auto;\n}",
            "type": "text/css",
            "title": "$:/plugins/tg/layout/style_scroll_preview",
            "tags": "",
            "modified": "20200312125033755",
            "created": "20191222101746570"
        },
        "$:/plugins/tg/layout/table-macros": {
            "created": "20150801122014492",
            "text": "\\define inputBox() <$edit-text tiddler=\"$(reftarget)$\" field=\"$(reffield)$\" class=\"$(refclass)$\"/>\n\n\\define tableRow(header,target,field,class)\n<$set name=\"reftarget\" value=\"$target$\">\n<$set name=\"reffield\" value=\"$field$\">\n<$set name=\"refclass\" value=\"settings\">\n<tr><th>$header$ </th><td><<inputBox>></td></tr>\n</$set>\n</$set>\n</$set>\n\\end\n",
            "title": "$:/plugins/tg/layout/table-macros",
            "tags": "$:/tags/Macro",
            "modifier": "TonGerner",
            "modified": "20200110204107672",
            "creator": "TonGerner"
        },
        "$:/plugins/tg/layout/themetweaks": {
            "text": "!! Theme tweaks\n\n@@.brown ''Theme tweaks''@@<br>\nexcerpt from 'Theme Tweaks' tab\n\n|tablestyle|k\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\">Sidebar layout</$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\">Fixed story, Fluid sidebar</option><option value=\"fluid-fixed\">Fluid story, Fixed sidebar</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\">Story left position</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\">Story top position</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\">Story right</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\">Story width</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\">Tiddler width</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/plugins/tg/layout/sidebar-top\">Sidebar top position</$link> |^<$edit-text tiddler=\"$:/plugins/tg/layout/sidebar-top\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\">Sidebar width</$link> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/themetweaks-help\" height=\"500px\" width=\"700px\"/>Help</$button>\n",
            "title": "$:/plugins/tg/layout/themetweaks",
            "tags": "$:/tags/plugin-tweaks",
            "order": "2",
            "modified": "20191231182438547",
            "created": "20161212090056554",
            "caption": "Theme tweaks"
        },
        "$:/plugins/tg/layout/timeline-macro": {
            "text": "\\define timeline-title()\n<!-- This macro overwrites the core macro; \n     the recent results will be sorted \n     each day in alpabetical order.\n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$sort[]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n",
            "title": "$:/plugins/tg/layout/timeline-macro",
            "tags": "$:/tags/Macro",
            "modified": "20200310171616511",
            "created": "20160130112819603"
        },
        "$:/plugins/tg/layout/button2top": {
            "text": "<div class=\"tgc-fixed-bottom\">\n<$button class=\"tc-btn-invisible tgc-button-color\">\n&#9650;\n<$list variable='Target' filter='[list[$:/StoryList]first[]]'>\n<$action-navigate $to=<<Target>>/>\n</$list>\n</$button>\n</div>\n\n",
            "title": "$:/plugins/tg/layout/button2top",
            "tags": "$:/tags/PageTemplate",
            "modifier": "TonGerner",
            "modified": "20200114111444798",
            "list-after": "$:/plugins/tg/layout/styles",
            "creator": "TonGerner",
            "created": "20180304212804838"
        },
        "$:/plugins/tg/layout/button2top/style": {
            "text": "<pre>/* BUTTON TO TOP */\n.tgc-fixed-bottom {\n     display: block;\n     position: fixed;\n     bottom: 10px;\n     right: 10px;\n     padding: 8px;\n     background-color: <<colour page-background>>;\n}\n.tgc-button-color {\n     color: {{$:/plugins/tg/layout/styles!!active-state-color}};\n}\n.tgc-button-color:hover {\n     color: <<colour sidebar-controls-foreground-hover>>;\n}\n</pre>",
            "title": "$:/plugins/tg/layout/button2top/style",
            "tags": "$:/tags/Stylesheet",
            "modified": "20200310171626305",
            "created": "20200113122827159"
        },
        "$:/plugins/tg/layout/recent-dates-bold/style": {
            "created": "20200115151655355",
            "text": "/* RECENT TAB DATE BOLD */\n.tc-sidebar-lists .tc-timeline {\n   font-weight: bold;\n}\n",
            "title": "$:/plugins/tg/layout/recent-dates-bold/style",
            "tags": "$:/tags/Stylesheet",
            "modified": "20200310172022137",
            "type": "text/css"
        },
        "$:/plugins/tg/layout/systemtags": {
            "created": "20170323185212447",
            "text": "<$list filter=\"[all[shadows+tiddlers]tags[]is[system]sort[title]]\">\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/> <small class=\"tc-menu-list-count\"><$count filter=\"[all[current]tagging[]]\"/></small>\n\n</$list>\n",
            "title": "$:/plugins/tg/layout/systemtags",
            "tags": "$:/tags/MoreSideBar",
            "modifier": "TonGerner",
            "modified": "20200310172011553",
            "list-after": "$:/core/ui/MoreSideBar/Tags",
            "creator": "TonGerner",
            "caption": "System tags"
        },
        "$:/plugins/tg/layout/tools/style": {
            "created": "20200115141940681",
            "text": "/* REMOVE DESCRIPTIONS OF BUTTONS IN TOOLS TAB */\n.tc-sidebar-lists .tc-muted {\n     display:none;\n}\n",
            "type": "text/css",
            "title": "$:/plugins/tg/layout/tools/style",
            "tags": "$:/tags/Stylesheet",
            "modified": "20200310172113537"
        },
        "$:/plugins/tg/layout/sticky": {
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n     position: -webkit-sticky;\n     position: -moz-sticky;\n     position: -o-sticky;\n     position: -ms-sticky;\n     position: sticky;\n     top: ``{{$:/plugins/tg/layout/styles!!topbar-height}}``;\n     background: ``<<colour tiddler-background>>``;\n     z-index: 500;\n}\n.tc-editor-toolbar {\n     position: -webkit-sticky;\n     position: -moz-sticky;\n     position: -o-sticky;\n     position: -ms-sticky;\n     position: sticky;\n     top: ``calc({{$:/plugins/tg/layout/styles!!topbar-height}} + 40px)``;\n     background: ``<<colour tiddler-background>>``;\n     z-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/tg/layout/sticky",
            "tags": "",
            "modified": "20200312155210620",
            "created": "20170330150510113"
        },
        "$:/plugins/tg/layout/macros/doc": {
            "created": "20200313125315847",
            "text": "\\define icn(icon)\n<button class=\"tc-btn-invisible\"> {{$icon$}}</button>\n\\end\n",
            "title": "$:/plugins/tg/layout/macros/doc",
            "tags": "$:/tags/Macro",
            "modified": "20200313130334028"
        },
        "$:/plugins/tg/layout/images/layout": {
            "text": "<svg class=\"tgc-layout-button tc-image-button\" height=\"22pt\" width=\"22pt\" viewBox=\"0 0 22 22\">\n<path  d=\"m19.84313,0.21698l-17.65497,0c-1.08334,0 -1.96191,0.9235 -1.96191,2.0571l0,17.48416c0,1.1359 0.87857,2.0571 1.96191,2.0571l17.65497,0c1.08334,0 1.96191,-0.92119 1.96191,-2.0571l0,-17.48416c0,-1.1336 -0.87857,-2.0571 -1.96191,-2.0571zm-17.65497,7.80127l5.71838,0l0,11.73768l-5.71838,0l0,-11.73768zm7.67809,11.73768l0,-11.73768l9.97689,0l0,-2.0571l-17.65497,0l0,-3.68707l17.65497,0l0.0022,17.48416l-9.97909,0l0,-0.00231z\"/>\n</svg>",
            "title": "$:/plugins/tg/layout/images/layout",
            "tags": "",
            "modified": "20200313130134669",
            "created": "20171203171851124"
        },
        "$:/plugins/tg/layout/settings-toolbar-up": {
            "text": "!!Tiddler toolbar settings\n<table class=\"tablestyle\">\n<<tableRow \"Spacing title &harr; toolbar\" \"$:/plugins/tg/layout/styles\" \"title-toolbar-spacing\">>\n<<tableRow \"Size of tiddler buttons\" \"$:/plugins/tg/layout/styles\" \"tiddler-button-size\">>\n<<tableRow \"Button spacing 'Tiddler toolbar'\" \"$:/plugins/tg/layout/styles\" \"tiddler-button-spacing\">>\n</table>\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/settings-toolbar-up-help\" height=\"200px\" width=\"720px\"/>Help</$button>",
            "title": "$:/plugins/tg/layout/settings-toolbar-up",
            "order": "9",
            "modified": "20200622175804571",
            "created": "20200314154628735",
            "caption": "Toolbar - title"
        },
        "$:/plugins/tg/layout/settings-toolbar-up-help": {
            "text": "|Entry |Description |Default |h\n|Spacing title &harr; toolbar |Space between toolbar and title of tiddler | 1.3em |\n|Size of tiddler buttons |Size of tiddler buttons | 0.6em |\n|Button spacing 'Tiddler toolbar' |Spacing between buttons of tiddler toolbar | 0px |",
            "title": "$:/plugins/tg/layout/settings-toolbar-up-help",
            "tags": "",
            "modified": "20200314172011820",
            "created": "20200314154755381"
        },
        "$:/plugins/tg/layout/toolbar-up": {
            "created": "20200314153228277",
            "text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<div class=\"tgc-tiddler-title-space\">&nbsp;</div>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>",
            "title": "$:/plugins/tg/layout/toolbar-up",
            "modified": "20200316201335735"
        },
        "$:/plugins/tg/layout/toolbar-up/ckeckbox": {
            "text": "<$checkbox\nfield=\"up\"\nchecked=\"yes\"\nunchecked=\"no\"\ndefault=\"no\"\ncheckactions=\"\"\"<$action-setfield $tiddler=\"$:/plugins/tg/layout/toolbar-up\" title=\"$:/core/ui/ViewTemplate/title\"/>\n<$action-setfield $tiddler=\"$:/plugins/tg/layout/settings-toolbar-up\" tags=\"$:/tags/plugin-tweaks\"/>\n<$action-setfield $tiddler=\"$:/core/ui/ViewTemplate/title\" tags=\"$:/tags/ViewTemplate\"/>\"\"\"\nuncheckactions=\"\"\"\n<$action-deletetiddler $tiddler=\"$:/core/ui/ViewTemplate/title\"/>\n<$action-deletefield $tiddler=\"$:/plugins/tg/layout/settings-toolbar-up\" tags/>\"\"\"\n>\n Set tiddler toolbar above the tiddler title\n</$checkbox>\n",
            "up": "no",
            "title": "$:/plugins/tg/layout/toolbar-up/ckeckbox",
            "tags": "",
            "modified": "20200622175804542",
            "created": "20200316192402200"
        },
        "$:/plugins/tg/layout/field-handling": {
            "created": "20200619121059091",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n",
            "title": "$:/plugins/tg/layout/field-handling",
            "tags": "",
            "modified": "20200701200950835"
        },
        "$:/plugins/tg/layout/field-handling-checkbox": {
            "text": "<$checkbox tiddler=\"$:/plugins/tg/layout/field-handling\" tag=\"$:/tags/ViewTemplate\">  Field handling in view mode</$checkbox>",
            "title": "$:/plugins/tg/layout/field-handling-checkbox",
            "tags": "",
            "modified": "20200619121610153",
            "created": "20200619121347163"
        },
        "$:/plugins/tg/layout/sticky-editor-toolbar": {
            "created": "20200614162810798",
            "text": "<$checkbox tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"\ncheckactions=\"\"\" \n<$action-setfield $tiddler=\"$:/plugins/tg/layout/sticky\" title=\"$:/themes/tiddlywiki/vanilla/sticky\">\n\"\"\"\nuncheckactions=\"\"\"\n<$action-deletetiddler $tiddler=\"$:/themes/tiddlywiki/vanilla/sticky\"/>\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" text=\"no\">\n\"\"\"> Sticky titles + sticky editor toolbar</$checkbox>",
            "title": "$:/plugins/tg/layout/sticky-editor-toolbar",
            "tags": "",
            "modified": "20200921181944980"
        },
        "$:/plugins/tg/layout/fields": {
            "text": "{{$:/core/ui/EditTemplate/fields}}",
            "title": "$:/plugins/tg/layout/fields",
            "tags": "",
            "modified": "20200916192221213",
            "list-after": "$:/core/ui/ViewTemplate/body",
            "created": "20200916190155341"
        }
    }
}
<$button class="tc-btn-invisible" tooltip="Adjust layout">
<$action-sendmessage $message="tm-open-window" $param="$:/plugins/tg/layout/tweaks" height="800px" width="720px"/>
{{$:/plugins/tg/layout/images/layout}}
</$button>


/* RECENT TAB DATE BOLD */
.tc-sidebar-lists .tc-timeline {
   font-weight: bold;
}
\define timeline-title()
<!-- This macro overwrites the core macro; 
     the recent results will be sorted 
     each day in alpabetical order.
     -->
<span class="lightweight"><$view field="article"/></span><$view field="title"/>
\end
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
<div class="tc-timeline">
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]">
<div class="tc-menu-list-item">
<$view field="$dateField$" format="date" template="$format$"/>
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$sort[]]">
<div class="tc-menu-list-subitem">
<$link to={{!!title}}>
<<timeline-title>>
</$link>
</div>
</$list>
</div>
</$list>
</div>
\end
Toggle editor toolbar <$checkbox tiddler="$:/config/TextEditor/EnableToolbar" field="text" checked="yes" unchecked="no" default="yes"></$checkbox>&nbsp;&nbsp;&nbsp;Toggle preview <$reveal state="$:/state/showeditpreview" type="nomatch" text="no">
<$button set="$:/state/showeditpreview" setTo="no" tooltip="Hide preview" class="tc-btn-invisible">{{$:/core/images/preview-open}}</$button>
</$reveal>
<$reveal state="$:/state/showeditpreview" type="match" text="no">
<$button set="$:/state/showeditpreview" setTo="yes" tooltip="Show preview" class="tc-btn-invisible">{{$:/core/images/preview-closed}}</$button>
</$reveal>
&nbsp;Scrollable preview <$checkbox tiddler="$:/plugins/tg/layout/style_scroll_preview" tag="$:/tags/Stylesheet"></$checkbox>&nbsp;&nbsp;Toggle sidebar {{$:/core/ui/TopBar/menu}}

{
    "tiddlers": {
        "$:/plugins/tg/tiddlersbar/button": {
            "created": "20170325114731405",
            "text": "<$fieldmangler tiddler=\"$:/plugins/tg/tiddlersbar/styles\">\n<$list filter=\"[[$:/plugins/tg/tiddlersbar/styles]tag[$:/tags/Stylesheet]]\"><$button message=\"tm-remove-tag\" tooltip=\"Hide Tiddlersbar\" param=\"$:/tags/Stylesheet\" class=<<tv-config-toolbar-class>>>\n<span class=\"tgc-active-indicator\">\n{{$:/plugins/tg/tiddlersbar/image-tiddlersbar-on}}\n</span>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tgc-active-indicator\">\n<$text text=\"tiddlersbar\"/>\n</span>\n</$list>\n</$button>\n</$list>\n<$list filter=\"[[$:/plugins/tg/tiddlersbar/styles]!tag[$:/tags/Stylesheet]]\">\n<$button message=\"tm-add-tag\" tooltip=\"Show tiddlersbar\" param=\"$:/tags/Stylesheet\" class=<<tv-config-toolbar-class>>>{{$:/plugins/tg/tiddlersbar/image-tiddlersbar-off}}\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<$text text=\"tiddlersbar\"/>\n</$list>\n</$button>\n</$list>\n</$fieldmangler>\n",
            "title": "$:/plugins/tg/tiddlersbar/button",
            "tags": "$:/tags/PageControls",
            "modifier": "TonGerner",
            "modified": "20200323103546936",
            "description": "Toggle tiddlersbar on/off",
            "creator": "TonGerner",
            "caption": "{{$:/plugins/tg/tiddlersbar/image-tiddlersbar-on}} tiddlersbar"
        },
        "$:/plugins/tg/tiddlersbar/icon": {
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n  <path fill=\"#a0a0ff\" stroke=\"#a0a0ff\" stroke-width=\"1.2218\" stroke-miterlimit=\"4\" d=\"m48.98237,97.86909l-41.98313,-24.239l0,-48.47796l41.98313,-24.23897l41.98313,24.23897l0,48.47796l-41.98313,24.239z\" id=\"path4142\"/>\n  <rect fill=\"#000000\" stroke=\"#000000\" stroke-width=\"8.78819\" stroke-miterlimit=\"4\" stroke-opacity=\"0\" y=\"25.08274\" x=\"8.68744\" height=\"9.10985\" width=\"16.25652\" id=\"rect4807\"/>\n  <rect fill=\"#000000\" stroke=\"#000000\" stroke-width=\"8.78819\" stroke-miterlimit=\"4\" stroke-opacity=\"0\" id=\"rect4809\" width=\"16.25652\" height=\"9.10985\" x=\"54.08981\" y=\"25.08274\"/>\n  <rect fill=\"#000000\" stroke=\"#000000\" stroke-width=\"8.78819\" stroke-miterlimit=\"4\" stroke-opacity=\"0\" y=\"25.08274\" x=\"31.38863\" height=\"9.10985\" width=\"16.25652\" id=\"rect4820\"/>\n</svg>",
            "type": "image/svg+xml",
            "title": "$:/plugins/tg/tiddlersbar/icon",
            "tags": "",
            "modified": "20191228200121464",
            "created": "20170325114817530"
        },
        "$:/plugins/tg/tiddlersbar/image-tiddlersbar-off": {
            "text": "<svg class=\"tgc-image-tiddlersbar-off tc-image-button\" viewBox=\"0 0 22 22\" width=\"22pt\" height=\"22pt\"><path d=\"m7.3572,12.30506c-0.13915,-0.39832 -0.23057,-0.82001 -0.23057,-1.26429c0,-2.13671 1.74588,-3.87591 3.889,-3.87591c0.44658,0 0.8689,0.09111 1.26856,0.2298l1.84701,-1.84079c-1.05983,-0.44185 -2.12289,-0.73293 -3.11557,-0.73293c-6.10492,0 -10.92187,6.21983 -10.92187,6.21983s1.75316,2.2504 4.47392,4.04523l2.78953,-2.78094zm9.7407,-5.14664l-2.47239,2.46407c0.17556,0.44024 0.27911,0.91757 0.27911,1.4191c0,2.1351 -1.74588,3.87591 -3.889,3.87591c-0.50321,0 -0.98135,-0.10321 -1.42389,-0.27818l-1.99749,1.99157c1.07358,0.38622 2.22078,0.63134 3.42138,0.63134c4.6689,0 10.92188,-6.22064 10.92188,-6.22064s-2.13664,-2.11816 -4.8396,-3.88316zm1.63747,-5.05392l-16.73636,16.68002l1.14477,1.14173l16.73555,-16.68083l-1.14396,-1.14092z\"/></svg>",
            "title": "$:/plugins/tg/tiddlersbar/image-tiddlersbar-off",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20191228200145294",
            "creator": "TonGerner",
            "created": "20170325114839090"
        },
        "$:/plugins/tg/tiddlersbar/image-tiddlersbar-on": {
            "text": "<svg class=\"tgc-image-tiddlersbar-on tc-image-button\" viewBox=\"0 0 22 22\" width=\"22pt\" height=\"22pt\">\n<path  d=\"m10.98438,4.786c-6.10492,0 -10.92187,6.2141 -10.92187,6.2141s4.81695,6.2149 10.92187,6.2149c4.6689,0 10.92188,-6.2149 10.92188,-6.2149s-6.25298,-6.2141 -10.92188,-6.2141zm0,10.08643c-2.14311,0 -3.889,-1.73759 -3.889,-3.87233s1.74588,-3.87233 3.889,-3.87233s3.889,1.7384 3.889,3.87233s-1.74588,3.87233 -3.889,3.87233zm0,-6.13273c-1.25318,0 -2.27013,1.01178 -2.27013,2.2604c0,1.24862 1.01614,2.2604 2.27013,2.2604c1.25399,0 2.27013,-1.01179 2.27013,-2.2604c0,-1.24781 -1.01614,-2.2604 -2.27013,-2.2604z\"/>\n</svg>",
            "title": "$:/plugins/tg/tiddlersbar/image-tiddlersbar-on",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20191228200159990",
            "creator": "TonGerner",
            "created": "20170325114911997"
        },
        "$:/plugins/tg/tiddlersbar/license": {
            "text": "!!! Buggy j's ~StoryTopTabs plugin\n\nMIT License\n\nCopyright &copy; Jeffrey Wikinson aka Buggyj &mdash; 2015\n\n<hr>\n\n[[Tiddlersbar plugin|http://tongerner.tiddlyspot.com/#Tiddlersbar%20plugin]] &copy; Ton Gerner &mdash; 2018-2020\n\nMIT License: https://opensource.org/licenses/MIT\n",
            "title": "$:/plugins/tg/tiddlersbar/license",
            "tags": "",
            "modified": "20191228200225470",
            "created": "20180124182128080"
        },
        "$:/plugins/tg/tiddlersbar/readme": {
            "text": "This plugin - based on Buggy j's [[StoryTopTabs plugin|http://bjtools.tiddlyspot.com/#StoryTopTabs]] - creates a 'Tiddlersbar' of open tiddlers (as tabs) on top of the screen. It works best in Zoomin view.<br>\nThe Tiddlersbar can be toggled on/off (<<icn $:/plugins/tg/tiddlersbar/image-tiddlersbar-on>>/<<icn $:/plugins/tg/tiddlersbar/image-tiddlersbar-off>>) with a button in the Page toolbar and/or the View toolbar.\n\n<<<\n''Note:''<br>''This plugin needs my $:/plugins/tg/layout plugin for general layout settings (available at http://tongerner.tiddlyspot.com/).''\n<<<\n\nSettings for the layout can be found in ''~ControlPanel > Appearance > [[Plugin tweaks|$:/plugins/tg/layout/tweaks]]''.\n",
            "title": "$:/plugins/tg/tiddlersbar/readme",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20200315132513150",
            "creator": "TonGerner",
            "created": "20170325115014248"
        },
        "$:/plugins/tg/tiddlersbar/settings": {
            "created": "20170325115624509",
            "text": "!!Tiddlersbar settings\n@@.brown ''Toggle tiddlersbar in ~PageControls''@@<br>\n<$checkbox tiddler=\"$:/plugins/tg/tiddlersbar/button\" tag=\"$:/tags/PageControls\"> Button active</$checkbox>\n\n@@.brown ''Toggle tiddlersbar in ~ViewToolbar ''@@<br>\n<$checkbox tiddler=\"$:/plugins/tg/tiddlersbar/button\" tag=\"$:/tags/ViewToolbar\"> Button active</$checkbox>\n\n<table class=\"tablestyle\">\n<<tableRow \"Left 'Tiddlersbar'\" \"$:/plugins/tg/tiddlersbar/styles\" \"left-tiddlersbar\">>\n<<tableRow \"Top 'Tiddlersbar'\" \"$:/plugins/tg/tiddlersbar/styles\" \"top-tiddlersbar\">>\n<<tableRow \"Font size 'Tiddlersbar'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-font-size\">>\n<<tableRow \"Background color 'Tiddler tabs'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-color\">>\n<<tableRow \"Text color 'Tiddler tabs'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-text-color\">>\n<<tableRow \"Background color 'Tiddler tab selected'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-selected-color\">>\n<<tableRow \"Text color 'Tiddler tab selected'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-selected-text-color\">>\n<<tableRow \"Rounded corners 'tiddler tabs'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-border-radius\">>\n</table>\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/tiddlersbar/settings-help\" height=\"380px\" width=\"700px\"/>Help</$button>\n",
            "title": "$:/plugins/tg/tiddlersbar/settings",
            "tags": "$:/tags/plugin-tweaks",
            "order": "7",
            "modifier": "TonGerner",
            "modified": "20191228205719769",
            "list-after": "$:/plugins/tg/layout",
            "creator": "TonGerner",
            "caption": "Tiddlersbar"
        },
        "$:/plugins/tg/tiddlersbar/settings-help": {
            "text": "|Item |Description |Default |h\n|Toggle tiddlersbar in ~PageControls |'Toggle tiddlersbar' button in ~PageControls| <input type=\"checkbox\" checked /> |\n|Toggle tiddlersbar in ~ViewToolbar |'Toggle tiddlersbar' button in ~ViewToolbar| <input type=\"checkbox\" /> |\n|Left 'Tiddlersbar'  |Start (from the left) of the Tiddlersbar| 42px |\n|Top 'Tiddlersbar' |Start (from the top) of the Tiddlersbar| 10px |\n|Font size 'Tiddlersbar' |Font size of Tiddlersbar | 0.9em |\n|Background color 'Tiddler tabs' |Background color of breadcrumbs | `<<colour tab-background>>` |\n|Text color 'Tiddler tabs' |Text color of tiddler tabs | `<<colour tab-foreground>>` |\n|Background color 'Tiddler tab selected' |Background color of selected tiddler tab| `<<colour tab-background-selected>>` |\n|Text color 'Tiddler tab selected' |Text color of selected tiddler tab | `<<colour tab-foreground-selected>>` |\n|Rounded corners 'tiddler tabs' |Rounded corners of tiddlersbar | 1px |\n",
            "title": "$:/plugins/tg/tiddlersbar/settings-help",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20191230170358959",
            "creator": "TonGerner",
            "created": "20170325115648290"
        },
        "$:/plugins/tg/tiddlersbar/style-no-tiddlersbar": {
            "text": "/* DEFAULT: HIDDEN TIDDLERSBAR */\n.tgc-tiddlersbar {\n     display: none;\n}",
            "type": "text/css",
            "title": "$:/plugins/tg/tiddlersbar/style-no-tiddlersbar",
            "tags": "$:/tags/Stylesheet",
            "modifier": "TonGerner",
            "modified": "20191228200615839",
            "creator": "TonGerner",
            "created": "20170325115709994"
        },
        "$:/plugins/tg/tiddlersbar/styles": {
            "text": "<pre>/* BREADCRUMBS TOP MENU */\n.tgc-tiddlersbar {\n     display: block;\n     position: fixed;\n     left: 0;\n     top: {{!!top-tiddlersbar}};  /* vertical start of tiddlersbar 'menu' */\n     width: calc(100% - 60px); /* right margin for '>>' icon */\n     margin-left: {{!!left-tiddlersbar}};\n     z-index: 900;\n}\n\n/* TIDDLERSBAR */\n.tgc-tiddlersbar button {\n     font-size: {{!!tiddlersbar-font-size}};\n     color: {{!!tiddlersbar-text-color}};\n     padding: 3px 5px 3px 5px;\n     border: none;\n     border-radius: {{!!tiddlersbar-border-radius}};\n     background: none;\n     background-color: {{!!tiddlersbar-color}};\n     border-left: 1px solid #cccccc;\n     border-top: 1px solid #cccccc;\n     border-right: 1px solid #cccccc;\n}\n\n/* TIDDLERBAR SELECTED */\n.tgc-tiddlersbar button.tgc-tiddlersbar-selected {\n     color: {{!!tiddlersbar-selected-text-color}};\n     background: none;\n     background-color: {{!!tiddlersbar-selected-color}};\n}\n/* HOVER over 'x' */\n.tgc-tiddlersbar button.tgc-x:hover {\n     font-weight: bold;\n}\n.tgc-tiddlersbar button.tgc-tiddlersbar-selected.tgc-x:hover {\n     font-weight: bold;\n}\n</pre>",
            "top-tiddlersbar": "10px",
            "title": "$:/plugins/tg/tiddlersbar/styles",
            "tiddlersbar-text-color": "<<colour tab-foreground>>",
            "tiddlersbar-selected-text-color": "<<colour tab-foreground-selected>>",
            "tiddlersbar-selected-color": "<<colour tab-background-selected>>",
            "tiddlersbar-font-size": "0.9em",
            "tiddlersbar-color": "<<colour tab-background>>",
            "tiddlersbar-border-radius": "1px",
            "tags": "$:/tags/Stylesheet",
            "modifier": "TonGerner",
            "modified": "20191228200650043",
            "list-after": "$:/plugins/tg/tiddlersbar/style-no-tiddlersbar",
            "left-tiddlersbar": "42px",
            "creator": "TonGerner",
            "created": "20170325123352694"
        },
        "$:/plugins/tg/tiddlersbar/tiddlersbar": {
            "text": "<div class=\"tgc-tiddlersbar\" >\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" variable=\"currentTab\">\n<$reveal type=\"match\" state=\"$:/HistoryList!!current-tiddler\" text=<<currentTab>>>\n<div style=\"display:inline-block;\">\n<$button to=<<currentTab>> class=\"tgc-tiddlersbar-selected\" style=\"margin-right: -0.4em; border-right: 0.0em\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$button>\n<$button message=\"tm-close-tiddler\" param=<<currentTab>> class=\"tgc-tiddlersbar-selected tgc-x\" style=\"border-left: 0.0em;\">X</$button></div></$reveal>\n<$reveal type=\"nomatch\" state=\"$:/HistoryList!!current-tiddler\" text=<<currentTab>>>\n<div style=\"display:inline-block;\">\n<$button to=<<currentTab>>  style=\"margin-right: 0.0em;\" >\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$button><$button message=\"tm-close-tiddler\" param=<<currentTab>> class=\"tgc-x\">\nX</$button></div></$reveal>\n</$list>\n</div>\n",
            "title": "$:/plugins/tg/tiddlersbar/tiddlersbar",
            "tags": "$:/tags/PageTemplate",
            "modifier": "TonGerner",
            "modified": "20191228200736188",
            "creator": "TonGerner",
            "created": "20170325114702089"
        }
    }
}
<pre>/* BREADCRUMBS TOP MENU */
.tgc-tiddlersbar {
     display: block;
     position: fixed;
     left: 0;
     top: {{!!top-tiddlersbar}};  /* vertical start of tiddlersbar 'menu' */
     width: calc(100% - 60px); /* right margin for '>>' icon */
     margin-left: {{!!left-tiddlersbar}};
     z-index: 900;
}

/* TIDDLERSBAR */
.tgc-tiddlersbar button {
     font-size: {{!!tiddlersbar-font-size}};
     color: {{!!tiddlersbar-text-color}};
     padding: 3px 5px 3px 5px;
     border: none;
     border-radius: {{!!tiddlersbar-border-radius}};
     background: none;
     background-color: {{!!tiddlersbar-color}};
     border-left: 1px solid #cccccc;
     border-top: 1px solid #cccccc;
     border-right: 1px solid #cccccc;
}

/* TIDDLERBAR SELECTED */
.tgc-tiddlersbar button.tgc-tiddlersbar-selected {
     color: {{!!tiddlersbar-selected-text-color}};
     background: none;
     background-color: {{!!tiddlersbar-selected-color}};
}
/* HOVER over 'x' */
.tgc-tiddlersbar button.tgc-x:hover {
     font-weight: bold;
}
.tgc-tiddlersbar button.tgc-tiddlersbar-selected.tgc-x:hover {
     font-weight: bold;
}
</pre>
<div class="tgc-tiddlersbar" >
<$list filter="[list[$:/StoryList]]" history="$:/HistoryList" variable="currentTab">
<$reveal type="match" state="$:/HistoryList!!current-tiddler" text=<<currentTab>>>
<div style="display:inline-block;">
<$button to=<<currentTab>> class="tgc-tiddlersbar-selected" style="margin-right: -0.4em; border-right: 0.0em">
<$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/>
</$button>
<$button message="tm-close-tiddler" param=<<currentTab>> class="tgc-tiddlersbar-selected tgc-x" style="border-left: 0.0em;">✕</$button></div></$reveal>
<$reveal type="nomatch" state="$:/HistoryList!!current-tiddler" text=<<currentTab>>>
<div style="display:inline-block;">
<$button to=<<currentTab>>  style="margin-right: 0.0em;" >
<$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/>
</$button><$button message="tm-close-tiddler" param=<<currentTab>> class="tgc-x">
✕</$button></div></$reveal>
</$list>
</div>

Notes for Eberron game
Eberron TW
$:/core/ui/AdvancedSearch/Filter
$:/temp/commander/logs/tid-14
closed


hide
show
show
show
show
show
$:/plugins/kookma/commander/field/uicomp/set-field-value
$:/core/ui/TiddlerInfo/References
$:/core/ui/AdvancedSearch/Filter
$:/core/ui/ControlPanel/Toolbars
$:/core/ui/ControlPanel/Advanced
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/EditorTypes
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
Find Spells
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/Appearance
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/plugins/kookma/commander/field/ui
$:/core/ui/MoreSideBar/System
Map
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
no




$:/themes/tiddlywiki/vanilla
{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\ninput[type=\"search\"] {\n  outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml, body {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n        background-color: transparent;\n}\n\n\"\"\">>\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n\tfont-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n  vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour foreground>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-topbar-right {\n\t\tright: 10px;\n\t}\n\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\n\t\ttransform: rotate(-90deg);\n\t}\n\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n  font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-sidebar-lists .tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\ttransition:  min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\n\t}\n\t\n\t<<if-no-sidebar \"\"\"\n\n\t\t.tc-sidebar-header {\n\t\t\tmin-height: 0;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\"\"\">>\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.tc-story-river.tc-static-story-river {\n\t\tmargin-right: 0;\n\t\tpadding-right: 42px;\n\t}\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-tiddler-info {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-dropdown-wrapper {\n\tdisplay: inline-block;\n}\n\n<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n.tc-edit-fields.tc-edit-fields-small {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-edit-field-add-value {\n\t\twidth: 35%;\n\t}\n\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n\n/*\n** Centered modals\n*/\n.tc-modal-centered .tc-modal {\n\twidth: auto;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) !important;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Import table\n*/\n\n.tc-import-table {\n\twidth: 100%;\n}\n\n.tc-import-table svg.tc-image-edit-button {\n\tmax-width: unset;\n}\n\n.tc-import-table th:first-of-type {\n\twidth: 10%;\n}\n\n.tc-import-table th:last-of-type {\n\twidth: 30%;\n}\n\n.tc-import-table .tc-row-disabled {\n\tbackground: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour diff-delete-background>>50;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n    line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n    font-size: 0.8em;\n    margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n    align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n    margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n    padding: 2px 7px;\n    font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n    margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n    text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n    margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n::-webkit-file-upload-button {\n\tcursor:pointer;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n    \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n    \tlist-style-type: none;\n    \tpadding-left: 0;\n    \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n    \tpadding-left: 1em;    \n}\n\n.tc-tree button { \n    \tcolor: #acacac;\n}\n\n.tc-tree svg {\n     \tfill: #acacac;\n}\n\n.tc-tree span svg {\n    \twidth: 1em;\n    \theight: 1em;\n    \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n    \tcolor: lightgray;\n}\n\nselect {\n        color: <<colour select-tag-foreground>>;\n        background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n\n/*\n** Flexbox utility classes\n*/\n\n.tc-flex {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-flex-column {\n\tflex-direction: column;\n}\n\n.tc-flex-row {\n\tflex-direction: row;\n}\n\n.tc-flex-grow-1 {\n\tflex-grow: 1;\n}\n\n.tc-flex-grow-2 {\n\tflex-grow: 2;\n}\n\n/*\n** Other utility classes\n*/\n\n.tc-small-gap {\n\tmargin-left: .5em;\n\tmargin-right: .5em;\n}\n\n.tc-small-gap-left {\n\tmargin-left: .5em;\n}\n\n.tc-small-gap-right {\n\tmargin-right: .5em;\n}\n\n.tc-big-gap {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-big-gap-left {\n\tmargin-left: 1em;\n}\n\n.tc-big-gap-right {\n\tmargin-right: 1em;\n}\n\n.tc-word-break {\n\tword-break: break-all;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n  -moz-tab-size: 4;\n  tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n  line-height: 1.15; /* 1 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n  margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n  font-family:\n    system-ui,\n    -apple-system, /* Firefox supports this but not yet `system-ui` */\n    'Segoe UI',\n    Roboto,\n    Helvetica,\n    Arial,\n    sans-serif,\n    'Apple Color Emoji',\n    'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n  height: 0; /* 1 */\n  color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n  text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n  font-family:\n    ui-monospace,\n    SFMono-Regular,\n    Consolas,\n    'Liberation Mono',\n    Menlo,\n    monospace; /* 1 */\n  font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n  font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n  text-indent: 0; /* 1 */\n  border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  font-family: inherit; /* 1 */\n  font-size: 100%; /* 1 */\n  line-height: 1.15; /* 1 */\n  margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n  text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n  -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n  border-style: none;\n  padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n  outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n  box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n  padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n  vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n  -webkit-appearance: textfield; /* 1 */\n  outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n  -webkit-appearance: button; /* 1 */\n  font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n  display: list-item;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
        }
    }
}
\define custom-background-datauri()
<$set name="background" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>
<$list filter="[<background>is[image]]">
`background: url(`
<$list filter="[<background>!has[_canonical_uri]]">
`"`<$macrocall $name="datauri" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`"`
</$list>
<$list filter="[<background>has[_canonical_uri]]">
`"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field="_canonical_uri"/>`"`
</$list>
`) center center;`
`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;
-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`
</$list>
</$set>
\end

\define if-fluid-fixed(text,hiddenSidebarText)
<$reveal state="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" type="match" text="fluid-fixed">
$text$
<$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">
$hiddenSidebarText$
</$reveal>
</$reveal>
\end

\define if-editor-height-fixed(then,else)
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="fixed">
$then$
</$reveal>
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="auto">
$else$
</$reveal>
\end

\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock

/*
** Start with the normalize CSS reset, and then belay some of its effects
*/

{{$:/themes/tiddlywiki/vanilla/reset}}

*, input[type="search"] {
	box-sizing: border-box;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
}

html button {
	line-height: 1.2;
	color: <<colour button-foreground>>;
	background: <<colour button-background>>;
	border-color: <<colour button-border>>;
}

/*
** Basic element styles
*/

html {
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};
	text-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

html:-webkit-full-screen {
	background-color: <<colour page-background>>;
}

body.tc-body {
	font-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};
	line-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};
	word-wrap: break-word;
	<<custom-background-datauri>>
	color: <<colour foreground>>;
	background-color: <<colour page-background>>;
	fill: <<colour foreground>>;
}

<<if-background-attachment """

body.tc-body {
        background-color: transparent;
}

""">>

h1, h2, h3, h4, h5, h6 {
	line-height: 1.2;
	font-weight: 500;
}

pre {
	display: block;
	padding: 14px;
	margin-top: 1em;
	margin-bottom: 1em;
	word-break: normal;
	word-wrap: break-word;
	white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
	background-color: <<colour pre-background>>;
	border: 1px solid <<colour pre-border>>;
	padding: 0 3px 2px;
	border-radius: 3px;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}

code {
	color: <<colour code-foreground>>;
	background-color: <<colour code-background>>;
	border: 1px solid <<colour code-border>>;
	white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
	padding: 0 3px 2px;
	border-radius: 3px;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}

blockquote {
	border-left: 5px solid <<colour blockquote-bar>>;
	margin-left: 25px;
	padding-left: 10px;
	quotes: "\201C""\201D""\2018""\2019";
}

blockquote.tc-big-quote {
	font-family: Georgia, serif;
	position: relative;
	background: <<colour pre-background>>;
	border-left: none;
	margin-left: 50px;
	margin-right: 50px;
	padding: 10px;
    border-radius: 8px;
}

blockquote.tc-big-quote cite:before {
	content: "\2014 \2009";
}

blockquote.tc-big-quote:before {
	font-family: Georgia, serif;
	color: <<colour blockquote-bar>>;
	content: open-quote;
	font-size: 8em;
	line-height: 0.1em;
	margin-right: 0.25em;
	vertical-align: -0.4em;
	position: absolute;
    left: -50px;
    top: 42px;
}

blockquote.tc-big-quote:after {
	font-family: Georgia, serif;
	color: <<colour blockquote-bar>>;
	content: close-quote;
	font-size: 8em;
	line-height: 0.1em;
	margin-right: 0.25em;
	vertical-align: -0.4em;
	position: absolute;
    right: -80px;
    bottom: -20px;
}

dl dt {
	font-weight: bold;
	margin-top: 6px;
}

button, textarea, input, select {
	outline-color: <<colour primary>>;
}

textarea,
input[type=text],
input[type=search],
input[type=""],
input:not([type]) {
	color: <<colour foreground>>;
	background: <<colour background>>;
}

input[type="checkbox"] {
  vertical-align: middle;
}

.tc-muted {
	color: <<colour muted-foreground>>;
}

svg.tc-image-button {
	padding: 0px 1px 1px 0px;
}

.tc-icon-wrapper > svg {
	width: 1em;
	height: 1em;
}

kbd {
	display: inline-block;
	padding: 3px 5px;
	font-size: 0.8em;
	line-height: 1.2;
	color: <<colour foreground>>;
	vertical-align: middle;
	background-color: <<colour background>>;
	border: solid 1px <<colour muted-foreground>>;
	border-bottom-color: <<colour muted-foreground>>;
	border-radius: 3px;
	box-shadow: inset 0 -1px 0 <<colour muted-foreground>>;
}

/*
Markdown likes putting code elements inside pre elements
*/
pre > code {
	padding: 0;
	border: none;
	background-color: inherit;
	color: inherit;
}

table {
	border: 1px solid <<colour table-border>>;
	width: auto;
	max-width: 100%;
	caption-side: bottom;
	margin-top: 1em;
	margin-bottom: 1em;
}

table th, table td {
	padding: 0 7px 0 7px;
	border-top: 1px solid <<colour table-border>>;
	border-left: 1px solid <<colour table-border>>;
}

table thead tr td, table th {
	background-color: <<colour table-header-background>>;
	font-weight: bold;
}

table tfoot tr td {
	background-color: <<colour table-footer-background>>;
}

.tc-csv-table {
	white-space: nowrap;
}

.tc-tiddler-frame img,
.tc-tiddler-frame svg,
.tc-tiddler-frame canvas,
.tc-tiddler-frame embed,
.tc-tiddler-frame iframe {
	max-width: 100%;
}

.tc-tiddler-body > embed,
.tc-tiddler-body > iframe {
	width: 100%;
	height: 600px;
}

/*
** Links
*/

button.tc-tiddlylink,
a.tc-tiddlylink {
	text-decoration: none;
	font-weight: 600;
	color: <<colour tiddler-link-foreground>>;
	-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */
}

.tc-sidebar-lists a.tc-tiddlylink {
	color: <<colour sidebar-tiddler-link-foreground>>;
}

.tc-sidebar-lists a.tc-tiddlylink:hover {
	color: <<colour sidebar-tiddler-link-foreground-hover>>;
}

button.tc-tiddlylink:hover,
a.tc-tiddlylink:hover {
	text-decoration: underline;
}

a.tc-tiddlylink-resolves {
}

a.tc-tiddlylink-shadow {
	font-weight: bold;
}

a.tc-tiddlylink-shadow.tc-tiddlylink-resolves {
	font-weight: normal;
}

a.tc-tiddlylink-missing {
	font-style: italic;
	font-weight: 400;
}

a.tc-tiddlylink-external {
	text-decoration: underline;
	color: <<colour external-link-foreground>>;
	background-color: <<colour external-link-background>>;
}

a.tc-tiddlylink-external:visited {
	color: <<colour external-link-foreground-visited>>;
	background-color: <<colour external-link-background-visited>>;
}

a.tc-tiddlylink-external:hover {
	color: <<colour external-link-foreground-hover>>;
	background-color: <<colour external-link-background-hover>>;
}

/*
** Drag and drop styles
*/

.tc-tiddler-dragger {
	position: relative;
	z-index: -10000;
}

.tc-tiddler-dragger-inner {
	position: absolute;
	top: -1000px;
	left: -1000px;
	display: inline-block;
	padding: 8px 20px;
	font-size: 16.9px;
	font-weight: bold;
	line-height: 20px;
	color: <<colour dragger-foreground>>;
	text-shadow: 0 1px 0 rgba(0, 0, 0, 1);
	white-space: nowrap;
	vertical-align: baseline;
	background-color: <<colour dragger-background>>;
	border-radius: 20px;
}

.tc-tiddler-dragger-cover {
	position: absolute;
	background-color: <<colour page-background>>;
}

.tc-dropzone {
	position: relative;
}

.tc-dropzone.tc-dragover:before {
	z-index: 10000;
	display: block;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	background: <<colour dropzone-background>>;
	text-align: center;
	content: "<<lingo DropMessage>>";
}

.tc-droppable > .tc-droppable-placeholder {
	display: none;
}

.tc-droppable.tc-dragover > .tc-droppable-placeholder {
	display: block;
	border: 2px dashed <<colour dropzone-background>>;
}

.tc-draggable {
	cursor: move;
}

.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,
.tc-links-draggable-list .tc-droppable-placeholder {
	line-height: 2em;
	height: 2em;
}

.tc-sidebar-tab-open-item {
	position: relative;
}

.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {
	font-size: 0.7em;
	fill: <<colour muted-foreground>>;
}

/*
** Plugin reload warning
*/

.tc-plugin-reload-warning {
	z-index: 1000;
	display: block;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	background: <<colour alert-background>>;
	text-align: center;
}

/*
** Buttons
*/

button svg, button img, label svg, label img {
	vertical-align: middle;
}

.tc-btn-invisible {
	padding: 0;
	margin: 0;
	background: none;
	border: none;
    	cursor: pointer;
	color: <<colour foreground>>;
}

.tc-btn-boxed {
	font-size: 0.6em;
	padding: 0.2em;
	margin: 1px;
	background: none;
	border: 1px solid <<colour tiddler-controls-foreground>>;
	border-radius: 0.25em;
}

html body.tc-body .tc-btn-boxed svg {
	font-size: 1.6666em;
}

.tc-btn-boxed:hover {
	background: <<colour muted-foreground>>;
	color: <<colour background>>;
}

html body.tc-body .tc-btn-boxed:hover svg {
	fill: <<colour background>>;
}

.tc-btn-rounded {
	font-size: 0.5em;
	line-height: 2;
	padding: 0em 0.3em 0.2em 0.4em;
	margin: 1px;
	border: 1px solid <<colour muted-foreground>>;
	background: <<colour muted-foreground>>;
	color: <<colour background>>;
	border-radius: 2em;
}

html body.tc-body .tc-btn-rounded svg {
	font-size: 1.6666em;
	fill: <<colour background>>;
}

.tc-btn-rounded:hover {
	border: 1px solid <<colour muted-foreground>>;
	background: <<colour background>>;
	color: <<colour muted-foreground>>;
}

html body.tc-body .tc-btn-rounded:hover svg {
	fill: <<colour muted-foreground>>;
}

.tc-btn-icon svg {
	height: 1em;
	width: 1em;
	fill: <<colour muted-foreground>>;
}

.tc-btn-text {
	padding: 0;
	margin: 0;
}

/* used for documentation "fake" buttons */
.tc-btn-standard {
	line-height: 1.8;
	color: #667;
	background-color: #e0e0e0;
	border: 1px solid #888;
	padding: 2px 1px 2px 1px;
	margin: 1px 4px 1px 4px;
}

.tc-btn-big-green {
	display: inline-block;
	padding: 8px;
	margin: 4px 8px 4px 8px;
	background: <<colour download-background>>;
	color: <<colour download-foreground>>;
	fill: <<colour download-foreground>>;
	border: none;
	border-radius: 2px;
	font-size: 1.2em;
	line-height: 1.4em;
	text-decoration: none;
}

.tc-btn-big-green svg,
.tc-btn-big-green img {
	height: 2em;
	width: 2em;
	vertical-align: middle;
	fill: <<colour download-foreground>>;
}

.tc-primary-btn {
 	background: <<colour primary>>;
}

.tc-sidebar-lists input {
	color: <<colour foreground>>;
}

.tc-sidebar-lists button {
	color: <<colour sidebar-button-foreground>>;
	fill: <<colour sidebar-button-foreground>>;
}

.tc-sidebar-lists button.tc-btn-mini {
	color: <<colour sidebar-muted-foreground>>;
}

.tc-sidebar-lists button.tc-btn-mini:hover {
	color: <<colour sidebar-muted-foreground-hover>>;
}

button svg.tc-image-button, button .tc-image-button img {
	height: 1em;
	width: 1em;
}

.tc-unfold-banner {
	position: absolute;
	padding: 0;
	margin: 0;
	background: none;
	border: none;
	width: 100%;
	width: calc(100% + 2px);
	margin-left: -43px;
	text-align: center;
	border-top: 2px solid <<colour tiddler-info-background>>;
	margin-top: 4px;
}

.tc-unfold-banner:hover {
	background: <<colour tiddler-info-background>>;
	border-top: 2px solid <<colour tiddler-info-border>>;
}

.tc-unfold-banner svg, .tc-fold-banner svg {
	height: 0.75em;
	fill: <<colour tiddler-controls-foreground>>;
}

.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {
	fill: <<colour tiddler-controls-foreground-hover>>;
}

.tc-fold-banner {
	position: absolute;
	padding: 0;
	margin: 0;
	background: none;
	border: none;
	width: 23px;
	text-align: center;
	margin-left: -35px;
	top: 6px;
	bottom: 6px;
}

.tc-fold-banner:hover {
	background: <<colour tiddler-info-background>>;
}

@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {

	.tc-unfold-banner {
		position: static;
		width: calc(100% + 59px);
	}

	.tc-fold-banner {
		width: 16px;
		margin-left: -16px;
		font-size: 0.75em;
	}

}

/*
** Tags and missing tiddlers
*/

.tc-tag-list-item {
	position: relative;
	display: inline-block;
	margin-right: 7px;
}

.tc-tags-wrapper {
	margin: 4px 0 4px 0;
}

.tc-missing-tiddler-label {
	font-style: italic;
	font-weight: normal;
	display: inline-block;
	font-size: 11.844px;
	line-height: 14px;
	white-space: nowrap;
	vertical-align: baseline;
}

button.tc-tag-label, span.tc-tag-label {
	display: inline-block;
	padding: 0.16em 0.7em;
	font-size: 0.9em;
	font-weight: 400;
	line-height: 1.2em;
	color: <<colour tag-foreground>>;
	white-space: nowrap;
	vertical-align: baseline;
	background-color: <<colour tag-background>>;
	border-radius: 1em;
}

.tc-sidebar-scrollable .tc-tag-label {
	text-shadow: none;
}

.tc-untagged-separator {
	width: 10em;
	left: 0;
	margin-left: 0;
	border: 0;
	height: 1px;
	background: <<colour tab-divider>>;
}

button.tc-untagged-label {
	background-color: <<colour untagged-background>>;
}

.tc-tag-label svg, .tc-tag-label img {
	height: 1em;
	width: 1em;
	vertical-align: text-bottom;
}

.tc-edit-tags button.tc-remove-tag-button svg {
	font-size: 0.7em;
	vertical-align: middle;
}

.tc-tag-manager-table .tc-tag-label {
	white-space: normal;
}

.tc-tag-manager-tag {
	width: 100%;
}

button.tc-btn-invisible.tc-remove-tag-button {
	outline: none;
}

/*
** Page layout
*/

.tc-topbar {
	position: fixed;
	z-index: 1200;
}

.tc-topbar-left {
	left: 29px;
	top: 5px;
}

.tc-topbar-right {
	top: 5px;
	right: 29px;
}

.tc-topbar button {
	padding: 8px;
}

.tc-topbar svg {
	fill: <<colour muted-foreground>>;
}

.tc-topbar button:hover svg {
	fill: <<colour foreground>>;
}

.tc-sidebar-header {
	color: <<colour sidebar-foreground>>;
	fill: <<colour sidebar-foreground>>;
}

.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {
	font-weight: 300;
}

.tc-sidebar-header .tc-sidebar-lists p {
	margin-top: 3px;
	margin-bottom: 3px;
}

.tc-sidebar-header .tc-missing-tiddler-label {
	color: <<colour sidebar-foreground>>;
}

.tc-advanced-search input {
	width: 60%;
}

.tc-search a svg {
	width: 1.2em;
	height: 1.2em;
	vertical-align: middle;
}

.tc-page-controls {
	margin-top: 14px;
	font-size: 1.5em;
}

.tc-page-controls .tc-drop-down {
  font-size: 1rem;
}

.tc-page-controls button {
	margin-right: 0.5em;
}

.tc-page-controls a.tc-tiddlylink:hover {
	text-decoration: none;
}

.tc-page-controls img {
	width: 1em;
}

.tc-page-controls svg {
	fill: <<colour sidebar-controls-foreground>>;
}

.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {
	fill: <<colour sidebar-controls-foreground-hover>>;
}

.tc-menu-list-item {
	white-space: nowrap;
}

.tc-menu-list-count {
	font-weight: bold;
}

.tc-menu-list-subitem {
	padding-left: 7px;
}

.tc-story-river {
	position: relative;
}

@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {

	.tc-sidebar-header {
		padding: 14px;
		min-height: 32px;
		margin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
	}

	.tc-story-river {
		position: relative;
		padding: 0;
	}
}

@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {

	.tc-message-box {
		margin: 21px -21px 21px -21px;
	}

	.tc-sidebar-scrollable {
		position: fixed;
		top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
		left: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
		bottom: 0;
		right: 0;
		overflow-y: auto;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		margin: 0 0 0 -42px;
		padding: 71px 0 28px 42px;
	}

	html[dir="rtl"] .tc-sidebar-scrollable {
		left: auto;
		right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
	}

	.tc-story-river {
		position: relative;
		left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
		top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
		width: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};
		padding: 42px 42px 42px 42px;
	}

<<if-no-sidebar "

	.tc-story-river {
		width: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});
	}

">>

}

@media print {

	body.tc-body {
		background-color: transparent;
	}

	.tc-sidebar-header, .tc-topbar {
		display: none;
	}

	.tc-story-river {
		margin: 0;
		padding: 0;
	}

	.tc-story-river .tc-tiddler-frame {
		margin: 0;
		border: none;
		padding: 0;
	}
}

/*
** Tiddler styles
*/

.tc-tiddler-frame {
	position: relative;
	margin-bottom: 28px;
	background-color: <<colour tiddler-background>>;
	border: 1px solid <<colour tiddler-border>>;
}

{{$:/themes/tiddlywiki/vanilla/sticky}}

.tc-tiddler-info {
	padding: 14px 42px 14px 42px;
	background-color: <<colour tiddler-info-background>>;
	border-top: 1px solid <<colour tiddler-info-border>>;
	border-bottom: 1px solid <<colour tiddler-info-border>>;
}

.tc-tiddler-info p {
	margin-top: 3px;
	margin-bottom: 3px;
}

.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {
	background-color: <<colour tiddler-info-tab-background>>;
	border-bottom: 1px solid <<colour tiddler-info-tab-background>>;
}

.tc-view-field-table {
	width: 100%;
}

.tc-view-field-name {
	width: 1%; /* Makes this column be as narrow as possible */
	text-align: right;
	font-style: italic;
	font-weight: 200;
}

.tc-view-field-value {
}

@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
	.tc-tiddler-frame {
		padding: 14px 14px 14px 14px;
	}

	.tc-tiddler-info {
		margin: 0 -14px 0 -14px;
	}
}

@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
	.tc-tiddler-frame {
		padding: 28px 42px 42px 42px;
		width: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};
		border-radius: 2px;
	}

<<if-no-sidebar "

	.tc-tiddler-frame {
		width: 100%;
	}

">>

	.tc-tiddler-info {
		margin: 0 -42px 0 -42px;
	}
}

.tc-site-title,
.tc-titlebar {
	font-weight: 300;
	font-size: 2.35em;
	line-height: 1.2em;
	color: <<colour tiddler-title-foreground>>;
	margin: 0;
}

.tc-site-title {
	color: <<colour site-title-foreground>>;
}

.tc-tiddler-title-icon {
	vertical-align: middle;
}

.tc-system-title-prefix {
	color: <<colour muted-foreground>>;
}

.tc-titlebar h2 {
	font-size: 1em;
	display: inline;
}

.tc-titlebar img {
	height: 1em;
}

.tc-subtitle {
	font-size: 0.9em;
	color: <<colour tiddler-subtitle-foreground>>;
	font-weight: 300;
}

.tc-tiddler-missing .tc-title {
  font-style: italic;
  font-weight: normal;
}

.tc-tiddler-frame .tc-tiddler-controls {
	float: right;
}

.tc-tiddler-controls .tc-drop-down {
	font-size: 0.6em;
}

.tc-tiddler-controls .tc-drop-down .tc-drop-down {
	font-size: 1em;
}

.tc-tiddler-controls > span > button,
.tc-tiddler-controls > span > span > button,
.tc-tiddler-controls > span > span > span > button {
	vertical-align: baseline;
	margin-left:5px;
}

.tc-tiddler-controls button svg, .tc-tiddler-controls button img,
.tc-search button svg, .tc-search a svg {
	fill: <<colour tiddler-controls-foreground>>;
}

.tc-tiddler-controls button svg, .tc-tiddler-controls button img {
	height: 0.75em;
}

.tc-search button svg, .tc-search a svg {
    height: 1.2em;
    width: 1.2em;
    margin: 0 0.25em;
}

.tc-tiddler-controls button.tc-selected svg,
.tc-page-controls button.tc-selected svg  {
	fill: <<colour tiddler-controls-foreground-selected>>;
}

.tc-tiddler-controls button.tc-btn-invisible:hover svg,
.tc-search button:hover svg, .tc-search a:hover svg {
	fill: <<colour tiddler-controls-foreground-hover>>;
}

@media print {
	.tc-tiddler-controls {
		display: none;
	}
}

.tc-tiddler-help { /* Help prompts within tiddler template */
	color: <<colour muted-foreground>>;
	margin-top: 14px;
}

.tc-tiddler-help a.tc-tiddlylink {
	color: <<colour very-muted-foreground>>;
}

.tc-tiddler-frame .tc-edit-texteditor {
	width: 100%;
	margin: 4px 0 4px 0;
}

.tc-tiddler-frame input.tc-edit-texteditor,
.tc-tiddler-frame textarea.tc-edit-texteditor,
.tc-tiddler-frame iframe.tc-edit-texteditor {
	padding: 3px 3px 3px 3px;
	border: 1px solid <<colour tiddler-editor-border>>;
	background-color: <<colour tiddler-editor-background>>;
	line-height: 1.3em;
	-webkit-appearance: none;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};
}

.tc-tiddler-frame .tc-binary-warning {
	width: 100%;
	height: 5em;
	text-align: center;
	padding: 3em 3em 6em 3em;
	background: <<colour alert-background>>;
	border: 1px solid <<colour alert-border>>;
}

canvas.tc-edit-bitmapeditor  {
	border: 6px solid <<colour tiddler-editor-border-image>>;
	cursor: crosshair;
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	margin-top: 6px;
	margin-bottom: 6px;
}

.tc-edit-bitmapeditor-width {
	display: block;
}

.tc-edit-bitmapeditor-height {
	display: block;
}

.tc-tiddler-body {
	clear: both;
}

.tc-tiddler-frame .tc-tiddler-body {
	font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
	line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};
}

.tc-titlebar, .tc-tiddler-edit-title {
	overflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */
}

html body.tc-body.tc-single-tiddler-window {
	margin: 1em;
	background: <<colour tiddler-background>>;
}

.tc-single-tiddler-window img,
.tc-single-tiddler-window svg,
.tc-single-tiddler-window canvas,
.tc-single-tiddler-window embed,
.tc-single-tiddler-window iframe {
	max-width: 100%;
}

/*
** Editor
*/

.tc-editor-toolbar {
	margin-top: 8px;
}

.tc-editor-toolbar button {
	vertical-align: middle;
	background-color: <<colour tiddler-controls-foreground>>;
	color: <<colour tiddler-controls-foreground-selected>>;
	fill: <<colour tiddler-controls-foreground-selected>>;
	border-radius: 4px;
	padding: 3px;
	margin: 2px 0 2px 4px;
}

.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {
	margin-left: 1px;
	width: 1em;
	border-radius: 8px;
}

.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {
	margin-left: 11px;
}

.tc-editor-toolbar button.tc-selected {
	background-color: <<colour primary>>;
}

.tc-editor-toolbar button svg {
	width: 1.6em;
	height: 1.2em;
}

.tc-editor-toolbar button:hover {
	background-color: <<colour tiddler-controls-foreground-selected>>;
	fill: <<colour background>>;
	color: <<colour background>>;
}

.tc-editor-toolbar .tc-text-editor-toolbar-more {
	white-space: normal;
}

.tc-editor-toolbar .tc-text-editor-toolbar-more button {
	display: inline-block;
	padding: 3px;
	width: auto;
}

.tc-editor-toolbar .tc-search-results {
	padding: 0;
}

/*
** Adjustments for fluid-fixed mode
*/

@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {

<<if-fluid-fixed text:"""

	.tc-story-river {
		padding-right: 0;
		position: relative;
		width: auto;
		left: 0;
		margin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
		margin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
	}

	.tc-tiddler-frame {
		width: 100%;
	}

	.tc-sidebar-scrollable {
		left: auto;
		bottom: 0;
		right: 0;
		width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
	}

	body.tc-body .tc-storyview-zoomin-tiddler {
		width: 100%;
		width: calc(100% - 42px);
	}

""" hiddenSidebarText:"""

	.tc-story-river {
		padding-right: 3em;
		margin-right: 0;
	}

	body.tc-body .tc-storyview-zoomin-tiddler {
		width: 100%;
		width: calc(100% - 84px);
	}

""">>

}

/*
** Toolbar buttons
*/

.tc-page-controls svg.tc-image-new-button {
  fill: <<colour toolbar-new-button>>;
}

.tc-page-controls svg.tc-image-options-button {
  fill: <<colour toolbar-options-button>>;
}

.tc-page-controls svg.tc-image-save-button {
  fill: <<colour toolbar-save-button>>;
}

.tc-tiddler-controls button svg.tc-image-info-button {
  fill: <<colour toolbar-info-button>>;
}

.tc-tiddler-controls button svg.tc-image-edit-button {
  fill: <<colour toolbar-edit-button>>;
}

.tc-tiddler-controls button svg.tc-image-close-button {
  fill: <<colour toolbar-close-button>>;
}

.tc-tiddler-controls button svg.tc-image-delete-button {
  fill: <<colour toolbar-delete-button>>;
}

.tc-tiddler-controls button svg.tc-image-cancel-button {
  fill: <<colour toolbar-cancel-button>>;
}

.tc-tiddler-controls button svg.tc-image-done-button {
  fill: <<colour toolbar-done-button>>;
}

/*
** Tiddler edit mode
*/

.tc-tiddler-edit-frame em.tc-edit {
	color: <<colour muted-foreground>>;
	font-style: normal;
}

.tc-edit-type-dropdown a.tc-tiddlylink-missing {
	font-style: normal;
}

.tc-edit-tags {
	border: 1px solid <<colour tiddler-editor-border>>;
	padding: 4px 8px 4px 8px;
}

.tc-edit-add-tag {
	display: inline-block;
}

.tc-edit-add-tag .tc-add-tag-name input {
	width: 50%;
}

.tc-edit-add-tag .tc-keyboard {
	display:inline;
}

.tc-edit-tags .tc-tag-label {
	display: inline-block;
}

.tc-edit-tags-list {
	margin: 14px 0 14px 0;
}

.tc-remove-tag-button {
	padding-left: 4px;
}

.tc-tiddler-preview {
	overflow: auto;
}

.tc-tiddler-preview-preview {
	float: right;
	width: 49%;
	border: 1px solid <<colour tiddler-editor-border>>;
	margin: 4px 0 3px 3px;
	padding: 3px 3px 3px 3px;
}

<<if-editor-height-fixed then:"""

.tc-tiddler-preview-preview {
	overflow-y: scroll;
	height: {{$:/config/TextEditor/EditorHeight/Height}};
}

""">>

.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {
	width: 49%;
}

.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {
	max-width: 49%;
}

.tc-edit-fields {
	width: 100%;
}


.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {
	border: none;
	padding: 4px;
}

.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {
	background-color: <<colour tiddler-editor-fields-odd>>;
}

.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {
	background-color: <<colour tiddler-editor-fields-even>>;
}

.tc-edit-field-name {
	text-align: right;
}

.tc-edit-field-value input {
	width: 100%;
}

.tc-edit-field-remove {
}

.tc-edit-field-remove svg {
	height: 1em;
	width: 1em;
	fill: <<colour muted-foreground>>;
	vertical-align: middle;
}

.tc-edit-field-add-name {
	display: inline-block;
	width: 15%;
}

.tc-edit-field-add-value {
	display: inline-block;
	width: 40%;
}

.tc-edit-field-add-button {
	display: inline-block;
	width: 10%;
}

/*
** Storyview Classes
*/

.tc-storyview-zoomin-tiddler {
	position: absolute;
	display: block;
	width: 100%;
}

@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {

	.tc-storyview-zoomin-tiddler {
		width: calc(100% - 84px);
	}

}

/*
** Dropdowns
*/

.tc-btn-dropdown {
	text-align: left;
}

.tc-btn-dropdown svg, .tc-btn-dropdown img {
	height: 1em;
	width: 1em;
	fill: <<colour muted-foreground>>;
}

.tc-drop-down-wrapper {
	position: relative;
}

.tc-drop-down {
	min-width: 380px;
	border: 1px solid <<colour dropdown-border>>;
	background-color: <<colour dropdown-background>>;
	padding: 7px 0 7px 0;
	margin: 4px 0 0 0;
	white-space: nowrap;
	text-shadow: none;
	line-height: 1.4;
}

.tc-drop-down .tc-drop-down {
	margin-left: 14px;
}

.tc-drop-down button svg, .tc-drop-down a svg  {
	fill: <<colour foreground>>;
}

.tc-drop-down button.tc-btn-invisible:hover svg {
	fill: <<colour foreground>>;
}

.tc-drop-down p {
	padding: 0 14px 0 14px;
}

.tc-drop-down svg {
	width: 1em;
	height: 1em;
}

.tc-drop-down img {
	width: 1em;
}

.tc-drop-down a, .tc-drop-down button {
	display: block;
	padding: 0 14px 0 14px;
	width: 100%;
	text-align: left;
	color: <<colour foreground>>;
	line-height: 1.4;
}

.tc-drop-down .tc-tab-set .tc-tab-buttons button {
	display: inline-block;
    width: auto;
    margin-bottom: 0px;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.tc-drop-down .tc-prompt {
	padding: 0 14px;
}

.tc-drop-down .tc-chooser {
	border: none;
}

.tc-drop-down .tc-chooser .tc-swatches-horiz {
	font-size: 0.4em;
	padding-left: 1.2em;
}

.tc-drop-down .tc-file-input-wrapper {
	width: 100%;
}

.tc-drop-down .tc-file-input-wrapper button {
	color: <<colour foreground>>;
}

.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {
	color: <<colour tiddler-link-background>>;
	background-color: <<colour tiddler-link-foreground>>;
	text-decoration: none;
}

.tc-drop-down .tc-tab-buttons button {
	background-color: <<colour dropdown-tab-background>>;
}

.tc-drop-down .tc-tab-buttons button.tc-tab-selected {
	background-color: <<colour dropdown-tab-background-selected>>;
	border-bottom: 1px solid <<colour dropdown-tab-background-selected>>;
}

.tc-drop-down-bullet {
	display: inline-block;
	width: 0.5em;
}

.tc-drop-down .tc-tab-contents a {
	padding: 0 0.5em 0 0.5em;
}

.tc-block-dropdown-wrapper {
	position: relative;
}

.tc-block-dropdown {
	position: absolute;
	min-width: 220px;
	border: 1px solid <<colour dropdown-border>>;
	background-color: <<colour dropdown-background>>;
	padding: 7px 0;
	margin: 4px 0 0 0;
	white-space: nowrap;
	z-index: 1000;
	text-shadow: none;
}

.tc-block-dropdown.tc-search-drop-down {
	margin-left: -12px;
}

.tc-block-dropdown a {
	display: block;
	padding: 4px 14px 4px 14px;
}

.tc-block-dropdown.tc-search-drop-down a {
	display: block;
	padding: 0px 10px 0px 10px;
}

.tc-drop-down .tc-dropdown-item-plain,
.tc-block-dropdown .tc-dropdown-item-plain {
	padding: 4px 14px 4px 7px;
}

.tc-drop-down .tc-dropdown-item,
.tc-block-dropdown .tc-dropdown-item {
	padding: 4px 14px 4px 7px;
	color: <<colour muted-foreground>>;
}

.tc-block-dropdown a:hover {
	color: <<colour tiddler-link-background>>;
	background-color: <<colour tiddler-link-foreground>>;
	text-decoration: none;
}

.tc-search-results {
	padding: 0 7px 0 7px;
}

.tc-image-chooser, .tc-colour-chooser {
	white-space: normal;
}

.tc-image-chooser a,
.tc-colour-chooser a {
	display: inline-block;
	vertical-align: top;
	text-align: center;
	position: relative;
}

.tc-image-chooser a {
	border: 1px solid <<colour muted-foreground>>;
	padding: 2px;
	margin: 2px;
	width: 4em;
	height: 4em;
}

.tc-colour-chooser a {
	padding: 3px;
	width: 2em;
	height: 2em;
	vertical-align: middle;
}

.tc-image-chooser a:hover,
.tc-colour-chooser a:hover {
	background: <<colour primary>>;
	padding: 0px;
	border: 3px solid <<colour primary>>;
}

.tc-image-chooser a svg,
.tc-image-chooser a img {
	display: inline-block;
	width: auto;
	height: auto;
	max-width: 3.5em;
	max-height: 3.5em;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	margin: auto;
}

/*
** Modals
*/

.tc-modal-wrapper {
	position: fixed;
	overflow: auto;
	overflow-y: scroll;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 900;
}

.tc-modal-backdrop {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 1000;
	background-color: <<colour modal-backdrop>>;
}

.tc-modal {
	z-index: 1100;
	background-color: <<colour modal-background>>;
	border: 1px solid <<colour modal-border>>;
}

@media (max-width: 55em) {
	.tc-modal {
		position: fixed;
		top: 1em;
		left: 1em;
		right: 1em;
	}

	.tc-modal-body {
		overflow-y: auto;
		max-height: 400px;
		max-height: 60vh;
	}
}

@media (min-width: 55em) {
	.tc-modal {
		position: fixed;
		top: 2em;
		left: 25%;
		width: 50%;
	}

	.tc-modal-body {
		overflow-y: auto;
		max-height: 400px;
		max-height: 60vh;
	}
}

.tc-modal-header {
	padding: 9px 15px;
	border-bottom: 1px solid <<colour modal-header-border>>;
}

.tc-modal-header h3 {
	margin: 0;
	line-height: 30px;
}

.tc-modal-header img, .tc-modal-header svg {
	width: 1em;
	height: 1em;
}

.tc-modal-body {
	padding: 15px;
}

.tc-modal-footer {
	padding: 14px 15px 15px;
	margin-bottom: 0;
	text-align: right;
	background-color: <<colour modal-footer-background>>;
	border-top: 1px solid <<colour modal-footer-border>>;
}

/*
** Notifications
*/

.tc-notification {
	position: fixed;
	top: 14px;
	right: 42px;
	z-index: 1300;
	max-width: 280px;
	padding: 0 14px 0 14px;
	background-color: <<colour notification-background>>;
	border: 1px solid <<colour notification-border>>;
}

/*
** Tabs
*/

.tc-tab-set.tc-vertical {
	display: -webkit-flex;
	display: flex;
}

.tc-tab-buttons {
	font-size: 0.85em;
	padding-top: 1em;
	margin-bottom: -2px;
}

.tc-tab-buttons.tc-vertical  {
	z-index: 100;
	display: block;
	padding-top: 14px;
	vertical-align: top;
	text-align: right;
	margin-bottom: inherit;
	margin-right: -1px;
	max-width: 33%;
	-webkit-flex: 0 0 auto;
	flex: 0 0 auto;
}

.tc-tab-buttons button.tc-tab-selected {
	color: <<colour tab-foreground-selected>>;
	background-color: <<colour tab-background-selected>>;
	border-left: 1px solid <<colour tab-border-selected>>;
	border-top: 1px solid <<colour tab-border-selected>>;
	border-right: 1px solid <<colour tab-border-selected>>;
}

.tc-tab-buttons button {
	color: <<colour tab-foreground>>;
	padding: 3px 5px 3px 5px;
	margin-right: 0.3em;
	font-weight: 300;
	border: none;
	background: inherit;
	background-color: <<colour tab-background>>;
	border-left: 1px solid <<colour tab-border>>;
	border-top: 1px solid <<colour tab-border>>;
	border-right: 1px solid <<colour tab-border>>;
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}

.tc-tab-buttons.tc-vertical button {
	display: block;
	width: 100%;
	margin-top: 3px;
	margin-right: 0;
	text-align: right;
	background-color: <<colour tab-background>>;
	border-left: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
	border-right: none;
	border-top-left-radius: 2px;
	border-bottom-left-radius: 2px;
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
}

.tc-tab-buttons.tc-vertical button.tc-tab-selected {
	background-color: <<colour tab-background-selected>>;
	border-right: 1px solid <<colour tab-background-selected>>;
}

.tc-tab-divider {
	border-top: 1px solid <<colour tab-divider>>;
}

.tc-tab-divider.tc-vertical  {
	display: none;
}

.tc-tab-content {
	margin-top: 14px;
}

.tc-tab-content.tc-vertical  {
    word-break: break-word;
	display: inline-block;
	vertical-align: top;
	padding-top: 0;
	padding-left: 14px;
	border-left: 1px solid <<colour tab-border>>;
	-webkit-flex: 1 0 70%;
	flex: 1 0 70%;
}

.tc-sidebar-lists .tc-tab-buttons {
	margin-bottom: -1px;
}

.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
	background-color: <<colour sidebar-tab-background-selected>>;
	color: <<colour sidebar-tab-foreground-selected>>;
	border-left: 1px solid <<colour sidebar-tab-border-selected>>;
	border-top: 1px solid <<colour sidebar-tab-border-selected>>;
	border-right: 1px solid <<colour sidebar-tab-border-selected>>;
}

.tc-sidebar-lists .tc-tab-buttons button {
	background-color: <<colour sidebar-tab-background>>;
	color: <<colour sidebar-tab-foreground>>;
	border-left: 1px solid <<colour sidebar-tab-border>>;
	border-top: 1px solid <<colour sidebar-tab-border>>;
	border-right: 1px solid <<colour sidebar-tab-border>>;
}

.tc-sidebar-lists .tc-tab-divider {
	border-top: 1px solid <<colour sidebar-tab-divider>>;
}

.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {
	display: block;
	width: 100%;
	background-color: <<colour sidebar-tab-background>>;
	border-top: none;
	border-left: none;
	border-bottom: none;
	border-right: 1px solid #ccc;
	margin-bottom: inherit;
}

.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {
	background-color: <<colour sidebar-tab-background-selected>>;
	border: none;
}

/*
** Manager
*/

.tc-manager-wrapper {
	
}

.tc-manager-controls {
	
}

.tc-manager-control {
	margin: 0.5em 0;
}

.tc-manager-list {
	width: 100%;
	border-top: 1px solid <<colour muted-foreground>>;
	border-left: 1px solid <<colour muted-foreground>>;
	border-right: 1px solid <<colour muted-foreground>>;
}

.tc-manager-list-item {

}

.tc-manager-list-item-heading {
    display: block;
    width: 100%;
    text-align: left;	
	border-bottom: 1px solid <<colour muted-foreground>>;
	padding: 3px;
}

.tc-manager-list-item-heading-selected {
	font-weight: bold;
	color: <<colour background>>;
	fill: <<colour background>>;
	background-color: <<colour foreground>>;
}

.tc-manager-list-item-heading:hover {
	background: <<colour primary>>;
	color: <<colour background>>;
}

.tc-manager-list-item-content {
	display: flex;
}

.tc-manager-list-item-content-sidebar {
    flex: 1 0;
    background: <<colour tiddler-editor-background>>;
    border-right: 0.5em solid <<colour muted-foreground>>;
    border-bottom: 0.5em solid <<colour muted-foreground>>;
    white-space: nowrap;
}

.tc-manager-list-item-content-item-heading {
	display: block;
	width: 100%;
	text-align: left;
    background: <<colour muted-foreground>>;
	text-transform: uppercase;
	font-size: 0.6em;
	font-weight: bold;
    padding: 0.5em 0 0.5em 0;
}

.tc-manager-list-item-content-item-body {
	padding: 0 0.5em 0 0.5em;
}

.tc-manager-list-item-content-item-body > pre {
	margin: 0.5em 0 0.5em 0;
	border: none;
	background: inherit;
}

.tc-manager-list-item-content-tiddler {
    flex: 3 1;
    border-left: 0.5em solid <<colour muted-foreground>>;
    border-right: 0.5em solid <<colour muted-foreground>>;
    border-bottom: 0.5em solid <<colour muted-foreground>>;
}

.tc-manager-list-item-content-item-body > table {
	border: none;
	padding: 0;
	margin: 0;
}

.tc-manager-list-item-content-item-body > table td {
	border: none;
}

.tc-manager-icon-editor > button {
	width: 100%;
}

.tc-manager-icon-editor > button > svg,
.tc-manager-icon-editor > button > button {
	width: 100%;
	height: auto;
}

/*
** Alerts
*/

.tc-alerts {
	position: fixed;
	top: 0;
	right: 0;
	max-width: 500px;
	z-index: 20000;
}

.tc-alert {
	position: relative;
	margin: 28px;
	padding: 14px 14px 14px 14px;
	border: 2px solid <<colour alert-border>>;
	background-color: <<colour alert-background>>;
}

.tc-alert-toolbar {
	position: absolute;
	top: 14px;
	right: 14px;
}

.tc-alert-toolbar svg {
	fill: <<colour alert-muted-foreground>>;
}

.tc-alert-subtitle {
	color: <<colour alert-muted-foreground>>;
	font-weight: bold;
}

.tc-alert-highlight {
	color: <<colour alert-highlight>>;
}

@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {

	.tc-static-alert {
		position: relative;
	}

	.tc-static-alert-inner {
		position: absolute;
		z-index: 100;
	}

}

.tc-static-alert-inner {
	padding: 0 2px 2px 42px;
	color: <<colour static-alert-foreground>>;
}

/*
** Floating drafts list
*/

.tc-drafts-list {
	z-index: 2000;
	position: fixed;
	font-size: 0.8em;
	left: 0;
	bottom: 0;
}

.tc-drafts-list a {
	margin: 0 0.5em;
	padding: 4px 4px;
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	border: 1px solid <<colour background>>;
	border-bottom-none;
	background: <<colour dirty-indicator>>;
	color: <<colour background>>;
	fill: <<colour background>>;
}

.tc-drafts-list a:hover {
	text-decoration: none;
	background: <<colour foreground>>;
	color: <<colour background>>;
	fill: <<colour background>>;
}

.tc-drafts-list a svg {
	width: 1em;
	height: 1em;
	vertical-align: text-bottom;
}

/*
** Control panel
*/

.tc-control-panel td {
	padding: 4px;
}

.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {
	width: 100%;
}

.tc-plugin-info {
	display: block;
	border: 1px solid <<colour muted-foreground>>;
	background-colour: <<colour background>>;
	margin: 0.5em 0 0.5em 0;
	padding: 4px;
}

.tc-plugin-info-disabled {
	background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
	background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
}

.tc-plugin-info-disabled:hover {
	background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
	background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
}

a.tc-tiddlylink.tc-plugin-info:hover {
	text-decoration: none;
	background-color: <<colour primary>>;
	color: <<colour background>>;
	fill: <<colour foreground>>;
}

a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {
	fill: <<colour foreground>>;
}

.tc-plugin-info-chunk {
	display: inline-block;
	vertical-align: middle;
}

.tc-plugin-info-chunk h1 {
	font-size: 1em;
	margin: 2px 0 2px 0;
}

.tc-plugin-info-chunk h2 {
	font-size: 0.8em;
	margin: 2px 0 2px 0;
}

.tc-plugin-info-chunk div {
	font-size: 0.7em;
	margin: 2px 0 2px 0;
}

.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {
	width: 2em;
	height: 2em;
	fill: <<colour foreground>>;
}

.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {
	width: 2em;
	height: 2em;
	fill: <<colour muted-foreground>>;
}

.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {
	width: 1em;
	height: 1em;
}

.tc-plugin-info-dropdown {
	border: 1px solid <<colour muted-foreground>>;
	margin-top: -8px;
}

.tc-plugin-info-dropdown-message {
	background: <<colour message-background>>;
	padding: 0.5em 1em 0.5em 1em;
	font-weight: bold;
	font-size: 0.8em;
}

.tc-plugin-info-dropdown-body {
	padding: 1em 1em 1em 1em;
}

.tc-check-list {
	line-height: 2em;
}

.tc-check-list .tc-image-button {
	height: 1.5em;
}

/*
** Message boxes
*/

.tc-message-box {
	border: 1px solid <<colour message-border>>;
	background: <<colour message-background>>;
	padding: 0px 21px 0px 21px;
	font-size: 12px;
	line-height: 18px;
	color: <<colour message-foreground>>;
}

.tc-message-box svg {
	width: 1em;
	height: 1em;
    vertical-align: text-bottom;
}

/*
** Pictures
*/

.tc-bordered-image {
	border: 1px solid <<colour muted-foreground>>;
	padding: 5px;
	margin: 5px;
}

/*
** Floats
*/

.tc-float-right {
	float: right;
}

/*
** Chooser
*/

.tc-chooser {
	border-right: 1px solid <<colour table-header-background>>;
	border-left: 1px solid <<colour table-header-background>>;
}


.tc-chooser-item {
	border-bottom: 1px solid <<colour table-header-background>>;
	border-top: 1px solid <<colour table-header-background>>;
	padding: 2px 4px 2px 14px;
}

.tc-drop-down .tc-chooser-item {
	padding: 2px;
}

.tc-chosen,
.tc-chooser-item:hover {
	background-color: <<colour table-header-background>>;
	border-color: <<colour table-footer-background>>;
}

.tc-chosen .tc-tiddlylink {
	cursor:default;
}

.tc-chooser-item .tc-tiddlylink {
	display: block;
	text-decoration: none;
	background-color: transparent;
}

.tc-chooser-item:hover .tc-tiddlylink:hover {
	text-decoration: none;
}

.tc-drop-down .tc-chosen .tc-tiddlylink,
.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {
	color: <<colour foreground>>;
}

.tc-chosen > .tc-tiddlylink:before {
	margin-left: -10px;
	position: relative;
	content: "» ";
}

.tc-chooser-item svg,
.tc-chooser-item img{
	width: 1em;
	height: 1em;
	vertical-align: middle;
}

.tc-language-chooser .tc-image-button img {
	width: 2em;
	vertical-align: -0.15em;
}

/*
** Palette swatches
*/

.tc-swatches-horiz {
}

.tc-swatches-horiz .tc-swatch {
	display: inline-block;
}

.tc-swatch {
	width: 2em;
	height: 2em;
	margin: 0.4em;
	border: 1px solid #888;
}

input.tc-palette-manager-colour-input {
	width: 100%;
	padding: 0;
}

/*
** Table of contents
*/

.tc-sidebar-lists .tc-table-of-contents {
	white-space: nowrap;
}

.tc-table-of-contents button {
	color: <<colour sidebar-foreground>>;
}

.tc-table-of-contents svg {
	width: 0.7em;
	height: 0.7em;
	vertical-align: middle;
	fill: <<colour sidebar-foreground>>;
}

.tc-table-of-contents ol {
	list-style-type: none;
	padding-left: 0;
}

.tc-table-of-contents ol ol {
	padding-left: 1em;
}

.tc-table-of-contents li {
	font-size: 1.0em;
	font-weight: bold;
}

.tc-table-of-contents li a {
	font-weight: bold;
}

.tc-table-of-contents li li {
	font-size: 0.95em;
	font-weight: normal;
	line-height: 1.4;
}

.tc-table-of-contents li li a {
	font-weight: normal;
}

.tc-table-of-contents li li li {
	font-size: 0.95em;
	font-weight: 200;
	line-height: 1.5;
}

.tc-table-of-contents li li li li {
	font-size: 0.95em;
	font-weight: 200;
}

.tc-tabbed-table-of-contents {
	display: -webkit-flex;
	display: flex;
}

.tc-tabbed-table-of-contents .tc-table-of-contents {
	z-index: 100;
	display: inline-block;
	padding-left: 1em;
	max-width: 50%;
	-webkit-flex: 0 0 auto;
	flex: 0 0 auto;
	background: <<colour tab-background>>;
	border-left: 1px solid <<colour tab-border>>;
	border-top: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
	display: block;
	padding: 0.12em 1em 0.12em 0.25em;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {
	border-top: 1px solid <<colour tab-background>>;
	border-left: 1px solid <<colour tab-background>>;
	border-bottom: 1px solid <<colour tab-background>>;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {
	text-decoration: none;
	border-top: 1px solid <<colour tab-border>>;
	border-left: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
	background: <<colour tab-border>>;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
	border-top: 1px solid <<colour tab-border>>;
	border-left: 1px solid <<colour tab-border>>;
	border-bottom: 1px solid <<colour tab-border>>;
	background: <<colour background>>;
	margin-right: -1px;
}

.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {
	text-decoration: none;
}

.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {
	display: inline-block;
	vertical-align: top;
	padding-left: 1.5em;
	padding-right: 1.5em;
	border: 1px solid <<colour tab-border>>;
	-webkit-flex: 1 0 50%;
	flex: 1 0 50%;
}

/*
** Dirty indicator
*/

body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {
	fill: <<colour dirty-indicator>>;
	color: <<colour dirty-indicator>>;
}

/*
** File inputs
*/

.tc-file-input-wrapper {
	position: relative;
	overflow: hidden;
	display: inline-block;
	vertical-align: middle;
}

.tc-file-input-wrapper input[type=file] {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	font-size: 999px;
	max-width: 100%;
	max-height: 100%;
	filter: alpha(opacity=0);
	opacity: 0;
	outline: none;
	background: white;
	cursor: pointer;
	display: inline-block;
}

/*
** Thumbnail macros
*/

.tc-thumbnail-wrapper {
	position: relative;
	display: inline-block;
	margin: 6px;
	vertical-align: top;
}

.tc-thumbnail-right-wrapper {
	float:right;
	margin: 0.5em 0 0.5em 0.5em;
}

.tc-thumbnail-image {
	text-align: center;
	overflow: hidden;
	border-radius: 3px;
}

.tc-thumbnail-image svg,
.tc-thumbnail-image img {
	filter: alpha(opacity=1);
	opacity: 1;
	min-width: 100%;
	min-height: 100%;
	max-width: 100%;
}

.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {
	filter: alpha(opacity=0.8);
	opacity: 0.8;
}

.tc-thumbnail-background {
	position: absolute;
	border-radius: 3px;
}

.tc-thumbnail-icon svg,
.tc-thumbnail-icon img {
	width: 3em;
	height: 3em;
	<<filter "drop-shadow(2px 2px 4px rgba(0,0,0,0.3))">>
}

.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {
	fill: #fff;
	<<filter "drop-shadow(3px 3px 4px rgba(0,0,0,0.6))">>
}

.tc-thumbnail-icon {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	display: -webkit-flex;
	-webkit-align-items: center;
	-webkit-justify-content: center;
	display: flex;
	align-items: center;
	justify-content: center;
}

.tc-thumbnail-caption {
	position: absolute;
	background-color: #777;
	color: #fff;
	text-align: center;
	bottom: 0;
	width: 100%;
	filter: alpha(opacity=0.9);
	opacity: 0.9;
	line-height: 1.4;
	border-bottom-left-radius: 3px;
	border-bottom-right-radius: 3px;
}

.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {
	filter: alpha(opacity=1);
	opacity: 1;
}

/*
** Diffs
*/

.tc-diff-equal {
	background-color: <<colour diff-equal-background>>;
	color: <<colour diff-equal-foreground>>;
}

.tc-diff-insert {
	background-color: <<colour diff-insert-background>>;
	color: <<colour diff-insert-foreground>>;
}

.tc-diff-delete {
	background-color: <<colour diff-delete-background>>;
	color: <<colour diff-delete-foreground>>;
}

.tc-diff-invisible {
	background-color: <<colour diff-invisible-background>>;
	color: <<colour diff-invisible-foreground>>;
}

.tc-diff-tiddlers th {
	text-align: right;
	background: <<colour background>>;
	font-weight: normal;
	font-style: italic;
}

.tc-diff-tiddlers pre {
    margin: 0;
    padding: 0;
    border: none;
    background: none;
}

/*
** Errors
*/

.tc-error {
	background: #f00;
	color: #fff;
}

/*
** Tree macro
*/

.tc-tree div {
    	padding-left: 14px;
}

.tc-tree ol {
    	list-style-type: none;
    	padding-left: 0;
    	margin-top: 0;
}

.tc-tree ol ol {
    	padding-left: 1em;    
}

.tc-tree button { 
    	color: #acacac;
}

.tc-tree svg {
     	fill: #acacac;
}

.tc-tree span svg {
    	width: 1em;
    	height: 1em;
    	vertical-align: baseline;
}

.tc-tree li span {
    	color: lightgray;
}

select {
        color: <<colour select-tag-foreground>>;
        background: <<colour select-tag-background>>;
}

fixed-fluid

''Tooltip: ''<$edit-text tag="input" tiddler="$:/ToolTipTemp" default="" focus="true"/>

<$button tag="a">

<$action-sendmessage $message="tm-add-field"
$name="tooltip"
$value={{$:/ToolTipTemp}}/>

<$action-deletetiddler
	$tiddler=<<dropdown-state>>
/>
<$action-deletetiddler
	$tiddler="$:/ToolTipTemp"
/>
Apply
</$button>

\define toolbar-button-category-inner()
<$button tag="a">

<$action-sendmessage $message="tm-add-field"
$name="category"
$value="$(snippetTitle)$"/>

<$action-deletetiddler
	$tiddler=<<dropdown-state>>
/>

<$view tiddler=<<snippetTitle>> field="title" mode="inline"/>

</$button>
\end

<$list filter="[each[category]get[category]sort[]]" variable="snippetTitle">

<<toolbar-button-category-inner>>

</$list>

\define toolbar-button-tier-inner()
<$button tag="a">

<$action-sendmessage $message="tm-add-field"
$name="tier"
$value="$(snippetTitle)$"/>

<$action-deletetiddler
	$tiddler=<<dropdown-state>>
/>

<$view tiddler=<<snippetTitle>> field="title" mode="inline"/>

</$button>
\end

<$list filter="[range[6]]" variable="snippetTitle">

<<toolbar-button-tier-inner>>

</$list>
classic
1: cluster of small snakes
2: cluster of small snakes
3: cluster of small snakes
4: cluster of small snakes
5: single large snake
6: single large snake
7: single large snake
8: single large snake
9: single large snake
10: scaly humanoid arm with snake head for a hand
1: a large snake tail
2: a large snake tail
3: a large snake tail
4: a large snake tail
5: a large snake tail
6: a large snake tail
7: a large snake tail
8: multiple small snake tails
9: multiple small snake tails
10: multiple small snake tails
11: scaly legs and a large snake tail
12: scaly legs and a large snake tail
13: scaly legs and a large snake tail
14: scaly legs and a large snake tail
15: scaly legs and a large snake tail
16: scaly legs and a large snake tail
17: scaly legs and multiple small snake tails
18: scaly legs and multiple small snake tails
19: scaly legs and multiple small snake tails
20: scaly legs and multiple small snake tails
1: blue
2: brown
3: green
4: red
5: tan
6: yellow
1: broad and rounded
2: broad and rounded
3: broad and rounded
4: broad and rounded
5: broad and rounded
6: flattened
7: flattened
8: flattened
9: flattened
10: hooded
11: hooded
12: slender
13: slender
14: slender
15: slender
16: triangular
17: triangular
18: triangular
19: triangular
20: triangular
1: dark brown
2: dark brown
3: dark brown
4: dark brown
5: green-brown
6: light brown
7: light brown
8: light brown
9: light brown
10: medium brown
11: medium brown
12: medium brown
13: medium brown
14: medium brown
15: medium brown
16: pale brown
17: red-brown
18: red-brown
19: yellow-brown
20: yellow-brown
1: black
2: black
3: black
4: black
5: black
6: black
7: black and brown
8: black and brown
9: black and brown
10: black and brown
11: black and brown
12: black and brown
13: black and green
14: black and green
15: black and green
16: black and green
17: black and green
18: black and green
19: black and red
20: black and red
21: black and red
22: black and red
23: black and red
24: black and white
25: black and white
26: black and white
27: black and yellow
28: black and yellow
29: black and yellow
30: black and yellow
31: black, gold, and red
32: black, gold, and red
33: black, gold, and red
34: black, gold, and red
35: black, gold, and red
36: black, gold, and red
37: black, red, and white
38: black, red, and white
39: black, red, and white
40: black, red, and white
41: black, red, and white
42: black, red, and white
43: blue
44: blue
45: blue
46: blue and black
47: blue and black
48: blue and black
49: blue and gray
50: blue and gray
51: blue and gray
52: blue and yellow
53: blue and yellow
54: blue and yellow
55: brown
56: brown
57: brown
58: brown
59: brown
60: brown
61: brown and green
62: brown and green
63: brown and green
64: brown and green
65: brown and green
66: brown and green
67: green
68: green
69: green
70: green
71: green
72: green
73: green
74: green and tan
75: green and tan
76: green and tan
77: green and tan
78: green and tan
79: green and tan
80: green and white
81: green and white
82: green and white
83: green and white
84: green and white
85: green and yellow
86: green and yellow
87: green and yellow
88: green and yellow
89: green and yellow
90: green and yellow
91: red and tan
92: red and tan
93: red and tan
94: red and tan
95: red and tan
96: red and tan
97: white
98: white
99: white
100: white
1: mottled
2: blotched
3: reticulated
4: speckled
5: striped
1: thick
2: 
3: 
4: sleek
1: a black
2: a blue
3: an orange
4: a pale
5: a red
6: a red
Aasimar are humanoids with an angelic spark in their souls, which grants them supernatural power. They are a people of otherworldly visages, often with luminous features that reveal their [[celestial]] heritage. 

Divine magic is usually the product of deep faith and unyielding
conviction, but an aasimar has a direct tie to a source of divine
power and receives guidance from a celestial entity. Usually,
these gifts aren't hereditary, and you can't necessarily identify
an aasimar in [[Eberron]] by their appearance; there is no single
recognized trait that defines an aasimar, and no reliable way of
producing one. While the existence of aasimar may seem to fly
in the face of Eberron's distant gods, it's important to remember
that an aasimar needs no direct connection to a deity. An
aasimar draws power from a divine energy source, and their
spiritual guide is a celestial being—an [[angel]], a [[couatl]], or similar
spirit. The aasimar may be marked as a champion of the faith,
but even they can't prove the existence of the [[Sovereigns|Sovereign Host]].

As a general rule, aasimar are so rare and diverse in their
appearance and traits that you wouldn't be recognized by
the common populace. However, most people devoted to a
particular [[religion]] will recognize an aasimar associated with
their faith when you manifest your divine gifts. Aasimar are
usually seen as blessed beings by those who share your faith,
and they will likely assume that you are a devoted servant
of that faith called to serve a divine purpose. By contrast,
people who don't share your faith may not recognize your
nature; for example, few outsiders are familiar with the
manifestations of a [[Blood of Vol]] aasimar.

Your celestial nature might draw you into schemes or danger.
Authority figures tied to your faith may have their own plans for
you. There could be prophecies you're expected to fulfill. Or you
could be targeted by enemies you never knew you had; perhaps
the [[Lords of Dust]] need the blood of a Sovereign aasimar to
complete a ritual that's performed only once in a generation. 

!! Aasimar Origins

Aasimar have an innate connection to a divine power and a
celestial guide. But when and how did this manifest? Were
you born an aasimar, or was the power thrust upon you?
The table below presents a few possibilities.

| !<<dr d6>> |!Aasimar Origin |
| 1 |''Aasimar Bloodline.'' Typically, aasimar nature isn't hereditary... but in your case, it is. Where did your lineage begin? How large is your family? Are you closely tied to the church and celebrated for your gifts? Or was your family cast out long ago, branded as heretics and apostates? |
| 2 |''Noble Birth.'' While your line manifests an aasimar only once in a generation or so, your family is well known for its piety and virtue. Other members of your family might be [[cleric]]s or [[paladin]]s, and your family estate could be in a [[manifest zone]] tied to [[Daanvi]], [[Irian]], or [[Syrania]]. Are you a proud heir of your family, or do you chafe at its noble traditions? |
| 3 |''Blessed Event.'' You developed your gifts at birth or as a child. Your community had no history of producing aasimar, but the people celebrated you and your gifts. Do you maintain close ties to your home, or was it destroyed by the [[Last War]] or forces of evil?  |
| 4 |''Celestial Connection.'' You weren't born an aasimar. Your aasimar nature manifested after you had an encounter with the [[celestial]] being who serves as your guide. You agreed to serve as this celestial's hand on Eberron, and you have a stronger tie to it than is typical for an aasimar. What does this celestial want, and why did it choose you? |
| 5 |''Experiment.'' Your gifts weren't given freely; they were seized through arcane science. Perhaps House [[Vadalis]] is trying to produce divine souls. Maybe you've been fused to a [[Khyber shard|dragonshard]] that contains the essence of a trapped celestial. Did you volunteer for these experiments, or are you a victim? Do you work with your celestial guide, or do you consider it to be your servant? |
| 6 |''Mysterious Past.'' You remember absolutely nothing about your childhood. Perhaps you awoke in the [[Mournland]], or were the only survivor of a terrible battlefield. Your only clues to your past and your purpose come from dreamlike visions from your celestial guide. Can you unravel the mystery? Are you sure you want to? |

!! Faiths and Aasimar

As an aasimar, you're tied to a divine force... but which one?
The [[Undying Court]] and the [[Silver Flame]] are both known
sources of divine power, but they are quite different from one
another. This section looks at the major religions of Eberron
and how aasimar are typically tied to each faith.

!!! The Blood of Vol

As an aasimar of the [[Blood of Vol]], you weren't chosen by some
distant [[angel]]; your power comes from within. The potential
for divinity lies within you, and it is your own divine spark
that guides you on the path toward ascension.

//''Appearance.''// Seeker aasimar appear [[human]]. Some have
a pale, almost [[vampiric|vampire]] complexion, while others appear
exceptionally vibrant and healthy. Your eyes often glow when
channeling divine energy, and your energy manifestations are
typically red or black.

//''Spiritual Guide.''// Your guide is an aspect of yourself; think of it as the
god you could become, working to guide you toward ascension.
Guidance usually takes the form of instincts or visions; you can't
converse with it directly. Is your guide primarily concerned with
your own ascension? Or is it driven by the Seeker principles of
protecting your community and opposing death?

!! The Silver Flame

The [[Silver Flame]] is the most common source of aasimar in
Eberron. Some believe that [[Tira Miron]] was an aasimar of the
Silver Flame; it's likewise possible that all Keepers of the Silver
Flame become aasimar when they assume their post. Most
followers of the Flame have heard stories of champions with
rainbow wings, and they will place their trust in you once your
true nature is revealed.

//''Appearance.''// Typically, Flame aasimar appear entirely
[[human]] (or [[orc]], if appearing among the [[Ghaash'kala]]) until they reveal their rainbow-feathered wings. However, some Flame aasimar manifest other couatl traits,
like having rainbow feathers instead of hair or serpentine
eyes. There are rumors that there's an entire race of serpent-people—the [[shulassakar]]—devoted to the Silver Flame. The
manifestations of a Flame aasimar's energy are either silvery-white or prismatic.

//''Spiritual Guide.''// Typically, your guide is a [[couatl]]—one of the beings
who first brought the Flame into existence. Another option
is that you are in touch with the Voice of the Flame itself, the
ascended spirit of [[Tira Miron]]. The primary purpose of the
Flame is to protect the innocent from supernatural threats. Is
this what your guide encourages you to do? Or do you have a
greater purpose?

!! The Sovereign Host

[[Host|Sovereign Host]] aasimar are chosen by a particular Sovereign, or at least, by a [[celestial]] devoted to that Sovereign. As a Host aasimar,
you are encouraged to act as an avatar of that Sovereign,
embodying their virtues and inspiring the faithful. If you're an
aasimar of [[Dol Arrah]], be the most virtuous warrior possible. If
you're an aasimar of [[Aureon]], acquire knowledge and use it to
guide others and strengthen civilization. Followers of the Host
generally show respect to Sovereign aasimar, and may ask you
for assistance.

//''Appearance.''// Host aasimar typically appear fully human,
usually conforming to the common image of the archetype the
Sovereign embodies—the sturdy blacksmith for [[Onatar]], the
wise sage for [[Aureon]], the weathered farmer for [[Arawai]]. Energy
manifestations are typically golden light.

//''Spiritual Guide.''// Your guide is a celestial devoted to the same
Sovereign as you—typically an [[angel]] of [[Irian]] or [[Syrania]]. They
will encourage you to embody the virtues of the Sovereign you
represent. Do they have any deeper purpose for you?

!! The Undying Court

You have been chosen by one of the ascendant councilors of
the [[Undying Court]]—one of your [[deathless]] elven ancestors—and
imbued with a fraction of their power. You serve as their hands
and eyes in the world beyond [[Aerenal]], while proving your worth
to ascend to the Court yourself.

//''Appearance.''// As an aasimar of the Undying Court, you
physically resemble an [[Aereni]] elf. Most Aereni aasimar appear
like normal elves, with luminous eyes and a general aura of
health. However, you could have a desiccated appearance,
similar to a [[mummy]]—even though you are still fully alive and
healthy. Your energy manifestations are typically blue or violet.

//''Spiritual Guide.''// Your spirit guide is one of the deathless councilors
of the Undying Court, quite possibly one of your own distant
ancestors. Do they want you to serve the general interests of
Aerenal and the Undying Court, or have they recruited you as
their personal agent? Do they want you to help in a struggle with
a deathless rival, in pursuit of the [[Draconic Prophecy]], or in a
conflict over corruption within the court itself?

Elves don't dream, but your ancestor can speak to you when
you trance. Your ancestor was once mortal themselves, and your
relationship may be more direct and personal than the typical
relationship between aasimar and guide.

!! Planetouched Aasimar

When you were born, you were imbued with a sliver of the
immortal essence of an [[angel]]. Most likely this was an accident:
you were conceived in a [[manifest zone]] at the precise moment
the angel's physical form was destroyed, and while it reformed,
a fragment of its spirit went into you. But it's also possible that
the angel chose you to be its avatar or agent in the Material
Plane. Either way, this spirit embodies the positive aspects of
the concept of the [[plane]], and it encourages you to embody that principle.

As a planetouched aasimar, your appearance is more exotic
than most other aasimar. You have an alien aspect that reflects
the plane and the angel you're tied to, and this becomes more
dramatic when you manifest your abilities. Only scholars and
sages might recognize you for what you are, while common folk
will generally view you with curiosity.

The following planes are most likely to produce aasimar.

!!! [[Daanvi]]

You're tied to an angel that embodies the concept
of law in the service of justice. Your skin and hair have a
metallic sheen, often copper or bronze, and your wings have
the appearance of clever clockwork. Your instincts drive you to fight for the greater good, but within the structure of the law. Your guide could
be a [[planetar]]—a judge on an inevitable tribunal, who urges
you to enforce the law. Or you could be bound to one of the
[[solar]]s of the [[Panopticon]], each bound to enforce justice within
a particular plane. [[Hazariel]], the Solar of [[Syrania]], has exiled
[[radiant idol]]s to the Material Plane; perhaps it's concerned
about the damage these fallen angels are doing on [[Eberron]]
and is grooming you to deal with them.

!!! [[Fernia]]

Your guide embodies the positive aspects of fire:
the flame that provides light and warmth, driving back the
darkness. Fernian aasimar typically have crimson skin,
and eyes or hair that burn with cold flame. Your guide drives
you to provide comfort to the frightened and to battle forces
of darkness. Fernian aasimar are often [[sorcerer]]s wielding
elemental flame.

!!! [[Irian]]

You're bound to an angel of light, a spirit that inspires
hope and life. Your skin and hair have a luminous appearance
and your wings are formed from pure light; when you cast the
[[light]] [[cantrip|spell]], you can describe it as your body itself radiating
light. Your guide could be a lesser angel, or more unusually, you might be tied
to one of the [[Architect]]s of Irian. [[Araam]], the Architect of the
[[Refuge]], would urge you to provide hope to the hopeless. The
[[Gardener]] would inspire you to heal the injured and fight for
life. The [[Dawn Empress]] would charge you to achieve your
full potential and help others do the same. Any of these could
also direct you to battle the forces of [[Mabar]]—life-draining
[[undead]] and other dark forces. Prince [[Lorrister]] of the
[[Lhazaar Principalities]] is an Irian aasimar who has risen
to rule the principality he calls the [[Heavenly Fleet]].

!!! [[Mabar]]

You're connected to an angel that's trapped in
Mabar and slowly being transformed by the plane's dark
powers. Choose any other plane from this section; the angel
is originally from that plane, and you have a generally similar
appearance to other aasimar touched by that plane—but your
colors are dull, as if the light is being leached away from you,
and your eyes are pure darkness. Your guide still inspires you
to follow the principles of its plane of origin, but it's fighting
against Mabar's overwhelming despair and a hunger to drain
the light and life from mortal creatures; when you use your
//consuming touch//, you're channeling this energy to your guide.
Your guide might hope you can someday release it from Mabar,
though no immortal has ever escaped its corruption before. Or
it could simply encourage you to follow the general principles
of its plane of origin—balanced against its growing hunger and
despair. 

!!! [[Shavarath]]

The angels of Shavarath are martial champions.
Your skin and hair have the appearance of iron or steel.
Your wings are formed from knives. If your guide is from the
Legion of [[Justice]], it urges you to fight for a just cause. If your guide is tied to the Legion
of [[Freedom]], it urges you to battle all forms of tyranny and
oppression. This can be an interesting option for a hexblade [[warlock]]; your guide has
given you their celestial weapon, and it urges you into battle.

!!! [[Syrania]]

You are tied to a [[dominion]] of Syrania. Each
dominion has a particular domain, reflecting its area of
influence and interest; is your dominion an angel of war? Of
nature? Of commerce? What's its specialty within that broad
domain? Syranian aasimar typically have classic feathered wings; however, your appearance might reflect the domain of your guide in some way. Your guide
will urge you to exemplify its domain—if it's the Angel of
Swords, it will want you to master the sword! It also observes
the world through your eyes, and it might send you to observe
events or take actions tied to its domain.
//Your sigil creates, child of [[Cannith]]. Mine holds the power to destroy.//

<div align="right">—[[Rotting Bal]], [[Tarkanan]] enforcer</div>

The twelve [[dragonmark]]s are predictable, and their powers are generally constructive. But there is another kind of dragonmark, which is dangerous to both the bearer and the people around them. Aberrant marks often appear when people from different [[dragonmarked families|dragonmarked house]] produce a child, and for this reason such unions are forbidden by the [[Twelve]]. But aberrant dragonmarks can appear on members of any race, at any age, regardless of bloodline. No two aberrant dragonmarks are exactly
alike—even if they grant the same power, they might manifest in different ways.

It usually takes time for a character to learn to control an aberrant mark, and in time, people might be hurt by it. This factor has led to the general superstition that people with aberrant dragonmarks are dangerous.

Aberrant marks are feared for another reason, too. Long ago, aberrant marks were more common and some held great powers. Aberrant leader [[Halas Tarkanan]] could devastate cities with powerful earthquakes. The [[Lady of the Plague]] wielded disease and commanded hordes of vermin. The [[dragonmarked house]]s
united in an inquisition called the [[War of the Mark]].
Some say this was a persecution of innocents, but most
feared the aberrants and stood by as the houses hunted
them down. Following the War of the Mark, aberrant
dragonmarks were few in number and relatively weak.
But since the [[Mourning]], aberrant marks have been appearing in greater numbers. 

Mechanically, an aberrant dragonmark grants some kind of [[sorcerous|sorcerer]] power, but the bearer also develops a flaw.

| !<<dr d8>> |!Aberrant Dragonmark Flaw |
| 1 |Your mark is a source of constant physical pain. |
| 2 |Your mark whispers to you. Its meaning can be unclear. |
| 3 |When you're stressed, the mark hisses audibly. |
| 4 |The skin around the mark is burned, scaly, or withered. |
| 5 |Animals are uneasy around you. |
| 6 |You have a mood swing any time you use your mark. |
| 7 |Your looks change slightly whenever you use the mark. |
| 8 |You have horrific nightmares after you use your mark. |
In the northwest [[Shadow Marches]], a glistening spit
of stone protrudes from the [[Crawling Swamp]]. Its
surface is marred by jagged cracks that bear a strange
resemblance to [[aberrant dragonmark]]s, and that seem
to spell out the letters of a forgotten script. Whatever
their source, these runes have power. Mages who
have studied this so-called Aberrant Scar swear that
the markings are mystical in nature, and that a possible future can be read within their weathered lines.

Sages and explorers have claimed to find secret
meaning and portents of the future in the markings
of the Scar. More than a few have gone mad in the
attempt to decipher those secrets. The last concerted
effort occurred in the earliest years of the kingdom of
[[Galifar]]. An expedition sent by the [[Twelve]] was charged
with learning the Aberrant Scar’s secrets. This group
built a great tower of black stone beside the protruding rock to serve as a place of study and research. When contact was lost with the tower, a follow-up
expedition was dispatched. It found the members of
the original party dead—murdered by one of their
own, who finally took his own life in madness.

The tower has remained vacant for centuries, but in recent years, lights have been seen in its ivy-curtained windows. The [[warlock]] ''Ghalerath'' has taken up residence here, believing that she alone understands
the prophecies locked within the Aberrant Scar, and
that only she can prevent the horrific future they
portend—a goal she pursues at any cost. The PCs
might encounter Ghalerath as a result of her plans to
kill an ally, an important personage, or even one of
the party—an action the warlock believes to be vital to
preventing the dark future she sees.

Within the tower, Ghalerath discovered a number
of [[aberrant creatures|aberration]] that had been drawn to the
power of the Scar—creatures that now do her bidding.
Shortly after her arrival, a nearby tribe of Marcher
[[orc]]s (the Scarbrands) besieged the tower in an attempt to drive her out.
Soon corrupted in mind and body, they too now serve
the [[warlock]].
Aberrations are utterly alien beings. Many of them have innate magical abilities drawn from the creature's alien mind rather than the mystical forces of the world.

In [[Eberron]], all aberrations share a common bond. Thousands of years ago, beings known as the [[daelkyr]] led an extraplanar incursion into Eberron. True lords of madness, these shapers of flesh brought with them a host of horrors from the plane of [[Xoriat]]. As the daelkyr sank their talons into Eberron, they twisted and corrupted any other creatures unfortunate enough to fall into their clutches. Eventually, the shapers of flesh were defeated and sealed in the underworld [[demiplane]]s of [[Khyber]], where they continue to create new terrors even now.

<<list-links-article "[tag{!!title}!tag[daelkyr]category[creature]sort[title]]">>
Abjuration spells are protective in nature, though some of them have aggressive uses. They create magical barriers, negate harmful effects, harm trespassers, or banish creatures to other [[plane]]s of existence.

!!! <<showspells-school {{!!title}}>>
At first glance, this seems a primeval forest, but on closer
inspection, it's filled with horrors. The [[demiplane]] is tangled in
crimson vines filled with blood. It teems with monstrosities,
twisted beasts that aren't as alien as the [[aberration]]s of the
[[daelkyr]], but just as deadly; even its most charming songbirds are
carnivorous and cruel. The forest's strange vegetation can be
used to make potions or deadly poisons, valuable resources—for those willing to brave its horrors. While in the Abyssal Forest of Khaar, any creature that's not naturally immune to
poison becomes more vulnerable to poison.
<<list-links-article "[tag{!!title}sort[title]]">>
The substance contained by the glass vial is an unstable soup of acid and explosive chemicals. When the container shatters, green flames erupt and spread boiling acid in all directions. 

These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
This spool of pure white twine seems completely ordinary to an untrained eye. When a piece of this twine is cut free, it begins to excrete a potent acid for 1 minute. This acid will eat through flesh and even most metals. A new spool contains 20 feet of twine.
First Warlord and Minister of Magic, Adal ir'Wynarn holds both significant formal and informal power in [[Aundair]]. While he shares his [[older sister|Aurala ir'Wynarn]]'s vision for a united [[Galifar]] under Aundair, he believes himself to be more suited to the task. Despite his respect for Lord [[Darro ir'Lain]], he rejects Darro's plans to retake the [[Eldeen Reaches]] by force, seeing it as a waste of time and resources.

During the negotiations of the [[Treaty of Thronehold]], Adal refused to allow [[Aurala|Aurala ir'Wynarn]] to concede the pieces of Western [[Thrane]] that Aundair had seized during the war in exchange for the return of [[Thaliost]]. In particular, he saw great value in [[Arcanix]]—once a small village with an unusually prodigious school of [[arcane magic]], now the ground base of the [[Arcane Congress]]' floating islands. Many in [[Fairhaven]]'s court, including Aurala to some degree, believe Adal's refusal to trade Arcanix the village for Thaliost to have been a mistake. As such, Adal seeks to prove them wrong—his plans and research all focus on how to retake Thaliost, even if it means provoking war with [[Thrane]].
Adamantine is an extremely hard and durable metal. When properly smelted in specially-designed forges, it can produce armor that is nearly impenetrable, and weapons that can destroy almost any other material.

The [[goblinoid]]s of [[Dhakaan]] were able to create feats of adamantine smelting that even the best [[Cannith]] smiths cannot reproduce today. 

Most adamantine on [[Khorvaire]] is mined from ancient meteor impact sites, but it is rumored that [[Argonnessen]] has naturally-forming adamantine veins.
When you put on this simple garment, it automatically shrinks or expands to ensure a perfect, tailored fit. In some varieties, the fabric also slowly fades to a color that flatters the wearer.
''Capital:'' [[Kasshta Keep]]<br/>
''Hallmarks:'' [[psionics]], [[kalashtar]], [[Path of Light]], mountain monasteries 

Adar, a Riedran word that translates to “refuge,” hides deep
in the southeast portion of the continent. The region is defined by nearly vertical peaks rise like spikes from the [[Sea of Lost Souls]]. Long before
the [[Inspired]] ever appeared on [[Sarlona]], the mountains
of Adar were a place where the innocent could flee from
persecution—provided that they could survive the perilous
climb to reach the fertile valleys hidden within. Ancient
legends speak of a clan of [[blue dragon]]s that dwells within
the clouds clinging to the tallest peaks. These guardians
are supposed to protect the innocent and punish those who
would abuse the sacred sanctuary of the mountain, sending bolts of lightning down from the clouds to slay transgressors. If these dragons do indeed exist, they keep their
distance from the humanoid inhabitants of the mountain.
But it is easy to look up into the eternal storm clouds and
imagine catching a glimpse of a draconic shadow darting
through the air.

For thousands of years, Adar had a small population of spiritual hermits and exiles from the lowland kingdoms of Sarlona. Then the [[kalashtar]] came. The [[Inspired]] came close on their heels, seeking to finally eradicate these rebellious [[quori]]. As the power of the Inspired spread across Sarlona, the kalashtar were driven into hiding. Ultimately they fled into the mountains, along with many others who had unsuccessfully challenged the might of the Inspired. The sacrifice of [[Taratai]] threw the invading forces back
and left the [[Shroud]] that protects Adar to this day. For over a thousand years the Inspired have laid siege to the great mountains. But the Shroud, Adar's natural fortifications, deadly storms (of draconic origin or not), and the psychic and martial discipline of its defenders have held against all attacks. 

Today, Adar is a place of mystery. While the Inspired
have never broken its defenses, the siege of the mountains
continues. Tales abound of golden temples and beautiful
hidden valleys, and of ancient [[kalashtar]] [[psions|psionics]] and libraries of [[arcane|arcane magic]] lore forbidden by the [[Inspired]], but finding a
path into the mountain sanctuary is the only way to confirm the stories.

Adar has no contact with the outside world, and therefore does not trade with any other nations. However, the [[kalashtar]] preceptors of the [[Path of Light]] are among the
finest instructors of the psionic arts in [[Eberron]]. Adventurers who wish to unlock the powers of the mind or sages who wish to learn more about psychic secrets may brave the
many dangers of Sarlona to reach the hidden monasteries of Adar.

!! Who Rules Adar

No one authority rules Adar. The major points of power in the land are the eight monastic fortresses scattered throughout the mountain range. There is little contact between these hidden temples; the monks and [[psion]]s of each community spend their days in contemplation and meditation, and they have little reason to make contact with the others in the mountain. Within each monastery, the wisest and eldest lead.

Each fortress is responsible for defending one of
the mountain passes against the forces of [[Riedra]] and the
[[Inspired]]. Nonthreatening visitors are tested to ensure
the purity of their intentions; after a few deceptively
simple questions, travelers either are turned away or made
welcome, offered food and shelter, and invited to join in
discussions with the students. Agents of the [[Inspired]] or the [[Dreaming Dark]] are struck down without mercy; others who come with impure intentions are denied shelter and sent back into the harsh mountain passes.

Among [[Adarans]], the [[Speaker of the Word|Chanaakar]] in [[Kasshta Keep]] is a respected figure. The Speaker position has existed far longer than the [[kalashtar]] have been in Adar—even they revere the wisdom of the Speaker of the Word. Although
the Speaker holds no actual authority, words from this
person can move the citizens of Adar to action and sway
the minds of masters in other monasteries. Throughout
the ages, Speakers have been reputed to be dispassionate
and invariably long-sighted. Speakers often suggest their
successors, but the [[Keepers|Keepers of the Word]]' Council of the Wise makes
the final choice. Adarans often speak of former Speakers
as if they were highly regarded ancestors. 

!! Land of Earth-Sky

The earliest tribesfolk who made a home in the deep
mountains and valleys called their land Sthanadiv (Land of Earth-Sky). To this day, Adar is a land of extremes.
[[Korrandar]] is one of Eberron's tallest peaks, measuring
32,495 feet at its storm-shrouded peak. Nearby gorges
plunge to below sea level, filled with the raging waters of
glacial and storm runoff. The ocean off Adar's southern
horn is extremely deep, and the whole coast has none
of the normal shelf found around most other lands.
Instead, the sea floor is toothy with mountains.

Less than half of Adar's land is below 12,000 feet,
and much of that is forested with stout, tough evergreens.
The regions above the tree line are arid and windswept,
useless for farming or herding. Glaciers creep across the
high passes. As the mountains give way to Adar's plateau,
alluvial hills and stretches of green valley appear, making
about 20% of the land arable. The temperatures in deep
valleys can be tropical, though usually mild in humidity, and the flora and fauna in such places are abundant.
Trees can grow tall here, and some bear succulent fruit.
On the high peaks, nothing lives aside from supernatural
creatures. In these places, the cold, clouds, and wind
are constant. 

Adar has many [[manifest zone]]s
to [[Lamannia]] and [[Kythri]]. In a few of these places, such
as [[Ahdryatmin]] (Mountainsoul), crossing the planar
boundary is possible. The [[Shroud]] often interferes with
such passage, but manifest zones are also places where
the Shroud's power can weaken. [[Elementals|elemental]] are common in Adar.

!! Getting There

Getting to Adar is not easy. If one survives the fury of the
[[Sea of Rage]] or the calm of the [[Barren Sea]], deadly storms
swirl around Adar's borders and over its peaks regularly,
making any sort of air or water travel treacherous at best.
The mountains seem to shoot right out of the sea floor.
Smaller peaks hide under the waves, ready to tear open a
hull. No landing spot can be found for a ship on almost
any point of Adar's coast. Freezing temperatures and
mists at high altitudes are fatal for airships, and spots
in Adar seem to unleash [[elemental]]s. People from lands
across the sea who want to visit Adar usually land in
[[Ardhmen]] in [[Syrkarn]] and trek overland, but that path is
fraught with peril. [[Dvaarnava]] has a secret port, but few
know of it and fewer have access. 

Travel is difficult at best in the mountains. If a trail remains along a ridge for long,
gentle creatures aren't likely to be the only ones using it.
Adar has no true roads.

Some people in Adar have a special relationship with
a breed of magical beasts called [[asperi]]s. These
intelligent and gentle horselike creatures ride the winds
of Adar easily, and they just as easily bear riders across
the trackless peaks.

Reasons abound to face the risks of getting to and
around Adar. Legends say Adar was as flat as much of the
rest of [[Sarlona]] in the [[Age of Demons]]—the [[dragon]]s and
[[couatl]]s drove the mountains up and stirred the winds to
hide a great evil. So, many come to gain artifacts of draconic power they think must be hidden among the valleys or in the mighty, mist-shrouded [[Korrandar]]. Others
come seeking the esoteric knowledge of the mystics in
the mountains, such as the [[Keepers of the Word]] or the
[[Tashalatora]]. A few make the journey to learn the [[psionic|psionics]]
teachings of the [[kalashtar]] masters of the [[Path of Light]]. 

!! Places of Interest

Adar is widely varied in its features. The ringing mountains that surround it are a defensive wall into which
eight monasteries are built. Ancient and living places dot
the landscape. Ruins of structures abandoned in bygone
ages are evidence of the legacy of the draconic influence
over this magical land. 

!!! The Eight Monasteries

* [[Kasshta Keep]]
* [[Dvaarnava]]
* [[Ghoza]]
* [[Haztaratain Monastery]]
* [[Malshashar]]
* [[Ruukosi]]
* [[Shalquar]]
* [[Tashalatora]]

!!! Other Cities

* [[Xephanan]]
* [[Zi'til'natek]]

!!! Adventure Sites

* [[Adaran ruins]]
* [[Ahdryatmin]]
* [[Korrandar]]
* [[Uutkleza]]
Among the hills and valleys of [[Adar]], the ancient past
sleeps overgrown by lowland forests, partially buried by
landslides, or ground away by the tireless inertia of a
passing glacier. Massive or strangely sized for humanlike
creatures, these places hold clues to the battle fought here
during the [[Age of Demons]]. Most Adarans shun ruins
near their homes, fearing the ire of the [[Storm Guardians]].
Little do they know that feathered [[shulassakar]] still live
among or below some of the [[couatl]] and [[dragon]] ruins, working to keep Adar
safe. Disappearances near such occupied sites are often
due to the shulassakar finding a new and willing ally. 
Most people of [[Adar]] are [[human]] or [[kalashtar]], rugged mountainfolk who respect wisdom and action. 

Adarans are resilient and industrious, reserved and
incisive. They care about the sensible and the mystical,
and the harshness of life among the peaks has not made
them grim or fatalistic. Typical Adarans are guarded with
strangers but openly emotional among their friends and
family. Life is too short to waste time with pretension,
and the [[Path of Light]] teaches integrity and honesty. 

Adarans are generally distrustful. More than a thousand years of siege has taught them to be that way. Most Adarans tend to reject the novel and the strange, preferring the known and the trustworthy. If someone manages to earn an Adarans gratitude or trust, the resultant loyalty is deep.

Normal Adarans live simply compared to the people
of tamer lands. That is not to say they live without joy or
comfort, but that they have access to fewer diversions and
luxuries. Given this, an Adaran takes great joy in work
and leisure, and similar pride in strong relationships. To
an Adaran, real luxury is found in a sturdy house, loose
and comfortable clothing, and another's warm arms to
curl up in before sleep. An Adaran toils in the fields,
drives animals in small pastures, or hunts in the mountains, then gathers with friends at night to tell stories, make beer and bread, and enjoy a smoke.

Adarans value the spiritual because they know material existence is fleeting. They respect the spirits along
with their ancestors, elders, and those who show good
judgment. Spirituality has its place in everything, from
patterns of weaving to actual meditation.

Arcanists, martial artists, and psychics who protect
[[Adar]] seek perfection in body and mind. They have to.
At any moment, they might be required to offer body
and soul to hold Adar against the [[Inspired]]. Even the
commoners know that meditation on the [[Path of Light]] is
important work, not laziness or inaction. In fact, inaction
can be considered evil.

Real evil lives in Adar, though. Although the vast
majority of folk are concerned with the welfare of at
least their local friends and families, a few of Adar's
residents are descendants of those who came to the land
of refuge to escape persecution or prosecution rightly
deserved. Even so, wicked Adarans try to maintain a
veneer of propriety—acting honest and assiduous so they
can better survive. 

!! Five Things Every Adaran Knows

# ''The legend of Taratai.'' [[Taratai]] was the mysterious spirit that led other spirits into [[Adar]] to create the [[kalashtar]], and teach the [[Path of Light]]. She is a holy mother, a guide, and a warrior. Everyone knows of her sacrifice, and many people in Adar set aside five days of winter to mourn her passing. This "holiday" is called the Void of Taratai.
# ''The dragons created Adar.'' [[Adar]] is an unnatural amalgam of mountains and storms. The [[dragon]]s and [[couatl]]s created the place to make it impossible to get to an evil that sleeps beneath the land. Draconic magic still calls to the unique and the wild to come to Adar and protect it. The [[Storm Guardians]] who rule mysterious [[Korrandar]] are proof.
# ''Some martial arts.'' Many people in Adar know a few dance steps from the path of shadows or a formalized routine from a nearby monastery. Most practice these forms as morning exercise and meditation, and many of them actually know how to fight.
# ''Actions mean more than words.'' Whether it's meditation on the [[Path of Light]], stalking and killing a mountain lion that's been eating livestock, or just planting your barley on time, doing something is better than talking or vacillation. In fact, one of the precepts of the Path of Light is that the worst action to take is no action at all.
# ''Death is not the end.'' Adherents of the [[Path of Light]] believe that nothing in the world or on any plane is eternal. [[Dolurrh]] is a place where the ego dies, but the spirit is immortal, and it returns to the Material Plane again and again. The goal of living is eventually to master the [[Path of Light]], thereby transcending fear and false desires. Those who accomplish this become one with //il-Yannah//. 

!! Adaran Names and Speech

Adaran names follow an ancient tradition of double
vowels. Most Adarans have a single given name followed
by a family or clan name. Some folk reverse this order,
placing the family name first. Many monks and almost
all [[kalashtar]] have only one name, and kalashtar names
are often mixtures of an Adaran syllable with the normal
kalashtar male or female suffixes. Some Adaran humans
take kalashtar suffixes or names as monikers to represent
their faith in the [[Path of Light]]—others are given such
names by devout parents.

//''Feminine Names:''// Aapti, Bhimaa, Chaand, Deena,
Fuulgani, Geetya, Himaadri, Heruuna, Inuu, Jharee,
Kyamun, Leel, Muneera, Neeta, Novaa, Paamin, Rhaaki,
Shameena, Taapasee, Uudipti, Vusgaar.
//''Masculine Names:''// Aadarsh, Biir, Chintuuk, Dileep,
Ekuumbar, Geet, Hazgaal, Ishwaar, Jeevan, Kuumar,
Lhaaksh, Manuu, Neel, Ojaas, Paaras, Praagya, Roopak,
Shreesh, Tyag, Uudhav, Vyed, Yaagya.
//''Surnames:''// Adaran surnames are like given names,
honoring an ancestor seen as the progenitor of the family
or clan. 

!!! Phrases

Adarans are forthright and honest among
those they trust, but taciturn and suspicious among
strangers. Love of the moment is acknowledged even in
conversation, and having met an old friend on the road
is an excuse for being late to work in [[Adar]]. A chance to
talk is not to be missed.

The following turns of phrase are Adaran.

* "//Storm or quake, the path is clear.//" Adarans believe that a person always knows what is right if that person takes the time to focus on the situation at hand. Indecisiveness and idleness earn an Adaran a reputation for being unreliable and even foolish.
* "//Wind and thunder!//" An exclamation of dismay.
* "//Don't drive the goats so you can sit by the fire.//" or "//Don't break your back for a burden you've put down.//" Variations of this phrase exist throughout Adar, admonishing one to take wise actions without concern for the past or future. All that matters is doing the task at hand to the best of one's ability. All else is needless distraction—the past is unchangeable and the future can take care of itself, and it will if one acts well in the present. 

!! Adaran Religion

Traditional Adaran prayers call on Braahyn ([[Balinor]]),
the god of the wilds and the moving earth, and his spouse Aarakti ([[Arawai]]), the goddess of abundance and storms. Many people also respect the spirits of nature and those of their ancestors. The [[Path of Light]], the dominant religion in [[Adar]], has all but eclipsed these other spiritual
practices. Its message has proven preferable to the rule
of remote gods and a cold and meaningless end to life in
[[Dolurrh]]. It is a path of choosing one's own destiny and
possibly even transcending death.

Practitioners on the Path of Light hope to change
the [[Quor Tarai|Dal Quor]] from its current nightmare manifestation
of [[il-Lashtavar]] to a tranquil dream centering on //il-Yannah//, the Great Light. Traditionally, contemplation of peace and kindness coupled with similar
actions in the world are thought to be enough to eventually
change the Quor Tarai. The lightbringers (//yannahsur//) among
the Path's devotees do just that.

Direct action against evil is secondary, and opposition is sometimes seen as reinforcing malevolence by investing energy in it. It is necessary, however, to have
those faithful who are prepared to take action. These
believers are called shadow watchers (//sheshantol//). Younger
[[kalashtar]], and those of [[Khorvaire]] (under the influence
of undisciplined minds or human urges, say some elders)
have taken a stronger stand against the [[Dreaming Dark]].
These spiritual warriors point to the actions of [[Taratai]],
the Path of Light's greatest saint, and have begun to take
the war to the [[Inspired]].

Priests of [[Path of Light]] can be either lightbringers
or shadow watchers, but all such clergy have duties to
their communities that preclude constant meditation.
Such priests are called lightspeakers (//yannahilath//). They
are expected to be shining examples of the Path of Light.
Adaran lightspeakers can be of any race, but most are
[[human]] or [[kalashtar]]. 

!! Adaran Style

Adaran people live modestly. Mountainfolk and monks alike see craft as a leisure activity, and the precepts of the [[Path of Light]] have reinforced this custom for over a millennium. Adaran crafts are usually functional, and they are always products of care. 

!!! Art

Adaran art is more craft than fine art. From carved knife
grips to chanted meditation verses, art in [[Adar]] often
serves a dual purpose. It's also very personal. 

People in Adar take time to do their tasks. They
make beautiful and intricate jewelry and armor, personalized carvings to hang over a house door (which aids in knowing the residents), and even multicolored crystal windows for their temples. Beauty is always coupled with functionality. A golden roof
on a temple not only shows reverence, but it also
never tarnishes. A mural not only recalls the past or
reveres an ancient master of the [[Path of Light]], but it
also beautifies and seals the stone.

A popular art form in Adar is "earth painting." Such works, made of colored earth, are often group efforts and are usually stylized images of intertwining lines of color. The paintings are created in a ritualized and meditative way. Intended to be impermanent, such paintings are at once the product of contemplation and creation.

While storm winds howl, the warm hearth provides a
place to gather and create. It's also where stories are told
and dances performed. Adaran tales tend toward morality
plays, extolling wisdom and survival. Their folk dances
are group affairs involving rings of people switching
partners or couples dancing in time with one another.
The [[kalashtar]] path of shadows martial dance is derived
from ancient Adaran steps.

!!! Architecture

Buildings in Adar are made out of stone, with wood used
for roofs. Built to withstand the wind, precipitation, and
trembling earth, houses are usually broad and low with
sharply slanted sides. To an [[Aundair]]ian, Adaran living
spaces would seem cramped, but a native of [[Adar]] values a house that lasts more than she does a high ceiling. Adarans
take care and time to personalize their dwellings—an
Adaran might spend years carving designs into the walls
of her home. 

Most houses have a central opening in the roof with
another smaller roof built over it, like a small tower.
Such openings allow light in and stale air out. Adarans believe, according to the [[Path of Light]], that these openings are also pathways for the mind and focusers of
positive energy.

Grander edifices, such as the shrines or temples that
form the center of a community, are often domed. Most
Adarans take pride in a well-appointed village shrine.

All buildings face east when possible, or north, but
Adarans never build main entrances facing south. The
east invites the light and life. The north invites wealth.
South is considered a direction of decay and death.

!!! Cuisine

Food holds a special place in Adaran life. It is a requirement for life, but it is also a mode of expression, a blessing from the spirit world, and an experience. An Adaran
avoids cooking and eating when he is angry or grieving,
lest his emotions taint the meal.

Food is usually baked in or roasted on a clay oven
built in the house, though broiling over an open fire is a
common alternative. Adarans avoid using utensils. They
use their hands, sometimes protected by leaves, to pick
up food, intending to involve all five senses in eating.

Adarans like spice. The fragrant herbs used in cooking provide taste, and many also aid digestion and fortify the body. Foreigners can find Adaran food too spicy, and
Adarans often find foreign food bland.

A wide variety of comestibles can be found on the
Adaran table, from broad, woody cavern fungi to the
meat of mountain sheep, from fleshy fruits to the milk of
oxen and goats—along with yogurt and cheeses from this milk. Some Adarans refrain from eating meat, showing their respect for the lives of all creatures.

Monasteries are often more limited in fare, due to the ruggedness of the land around them. Still, the ascetics appreciate food as a manifestation of life.

!!! Fashion

Adarans wear loose and comfortable clothes including
simple sandals when it's warm. In the cold, they layer in
cloth and fur. As with all their crafts, they take the time
to decorate their clothes—leather and cloth are often
richly colored, and patterns of elaborate lines are woven
or painted as highlights. Bright colors in individualized
patterns often make it possible to tell who's coming down
the ridge before that person's face can be recognized.

Skin is a place for adornment as well. Intricate,
temporary body art made with herbs provides a way to
focus the mind while allowing one to share the results.
Herbal paints or powders are also applied to indicate a
spiritual or emotional condition or event, such as yellow
for happiness or ash-gray for grief. Many adherents of
the [[Path of Light]] paint an inverted white triangle between
their brows.

The Adarans' love of craft manifests in a variety of
jewelry. From glass beadwork to tiny silver plates strung
together as a head covering, Adarans spare no effort in
producing beautiful objects to wear. They enjoy bracelets,
armbands, and torcs. Rings are also favored; Adarans
wear just as many rings in their ears and noses, and on
their toes, as on their fingers. 

!!! Supernatural Style

[[Adar]] has a large population of spellcasters and manifesters,
which has a great influence on the crafts of the country.
Although [[magewright]]s are not as prevalent as in Khorvaire,
many settlements have artisans who specialize in the magical or [[psionic|psionics]] augmentation of traditional crafts. Adaran
mystics take their "leisure" pursuits as seriously as common
folk do, and many display pragmatic yet wondrous works. 

!!! Kalashtar Style

[[Kalashtar|kalashtar]] place less value on material objects than on
thoughts and movement. Singers among the kalashtar
often weave emotions into their songs by way of [[psionic|psionics]]
powers. They mix such abilities with all they do, including the path of shadows martial dance. To serve the versatile needs and ways of the kalashtar, many dances have
combat applications.

[[Kalashtar|kalashtar]] artisans create works that shows an alien
sensibility. Many pieces of kalashtar jewelry and clothing
reflect the features of the [[quori]], most commonly the insectile lower castes. Renowned in [[Adar]] is the kalashtar glasswork in many of the monastery-fortresses that is as much
about how the glass moves light as the window or object
itself. 
The Adder Bay lies the coast of [[Q'barra]], and is fed by the [[Adder River]].
The Adder River (also called the Whitecliff River) in [[Q'barra]] flows from the [[Endworld Mountains]], past the settlements of [[Whitecliff]] and [[Newthrone]], into [[Adder Bay]].
Adderport is a small but growing fortified city in [[New Galifar]], located on the [[Adder Bay]]. It was the first [[human]] settlement in [[Q'barra]], founded by Duke [[Ven ir'Kesslan]] and his fleet of like-minded [[Galifar]]an pioneers in 928 YK.
Adventurers' guilds are organizations that provide adventurers with opportunities for work and camaraderie. 

//''Membership Benefits.''// Those who are accepted into either adventurers' guild must pay dues of 2c each year. The primary benefit of belonging to a guild is access to work, since the guildmaster can connect parties of adventurers with patrons and jobs suited to their talents. Beyond that, there are a few additional benefits: 

* You can store items at the guildhall free of charge.
* You can book lodging at the guildhall for 1c per two weeks. The accommodations are modest, but the guild provides stronger security for lodgers and their possessions than you'd find at an inn.
* An adventurers' guild is an excellent source of information. By studying records and working with other guild members, you can gain advantage on any skill check to research a subject in which the guild has expertise or experience. 

!! Adventurer's Guilds

<<list-links-article "[tag{!!title}sort[title]]">>
Aeren's Sound is an inlet of the [[Dragonreach]] found between the northeast islands of [[Aerenal]].
''Capital:'' [[Shae Cairdal]]<br/>

In Aerenal, you might...

* Consult an [[elven|elf]] [[archmage|wizard]] who's been dead for twenty thousand years.
* Battle sinister forces that have crawled into [[Eberron]] from a realm of eternal night.
* Learn secrets of magic unknown in [[Khorvaire]].

The massive island of Aerenal is the ancient kingdom
of the [[elves|elf]]. Its jungles provide strange and valuable
lumbers: [[soarwood]] used for the hulls of [[airship]]s, tough
[[bronzewood]], and trees that remain alive after being felled.

The island's proximity to the planes of [[Irian]] and
[[Mabar]] allows the lines
between life and death to become blurred. Dangerous, dark forces creep in from the plane known as the
Endless Night, but that planar resonance also enables
the elves to perform feats of [[necromancy]] unmatched
elsewhere in [[Eberron]]. Among the [[Aereni]] elves, the
honored dead walk among the living. Heroes who died
in glorious battle return to serve the [[Sibling Kings]]. And
in the depths of [[Shae Mordai]], the deathless lords of the
[[Undying Court]] study the shifting balance of the planes
and the path of the [[Draconic Prophecy]]. 

[[Necromancy|necromancy]] is a pillar of [[Aereni]] society, distinct from
the sinister power most adventurers encounter. Positive
energy sustains the [[deathless]] [[undead]] of Aerenal—both
the light of [[Irian]] and the devotion freely given by their
descendants. The elves of Aerenal despise necromancy
that draws on the negative energy of [[Mabar]], and agents
of the [[Undying Court]] embrace their mandate to seek out
and destroy [[vampire]]s, [[lich]]es, and other such undead.

Aereni civilization is over twenty thousand years old.
Secure in their island sanctuary, the [[elves|elf]] watched nations of [[goblin]]s and [[human]]s rise and fall. The Aereni
possess secrets and powers the rest of [[Khorvaire]] has
yet to discover, but they are more interested in perfecting their ancient traditions than in innovation and discovery. An [[Aereni]] [[wizard]] might spend a decade refining
the pronunciation of a single [[spell]]'s incantation. For
now, [[humanity|human]] can't match the power of the elves. If that
balance changes, will Aerenal take action? 

!! Notable Locations

Aerenal taunts visitors with its ancient secrets and
trackless jungles. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>


!! {{!!title}}'s Influence in Khorvaire

In [[Khorvaire]], you might...

* Team up with an agent of the [[Undying Court]] to bring down a powerful [[vampire]].
* Be summoned by a deathless sage who needs your help to fulfill an ancient prophecy.
* Bargain with a merchant offering rare [[magic item]]s.

Few [[Aereni]] elves are interested in the world beyond
their island. The Aereni see [[Khorvaire]] as a primitive
backwater, and [[human]]s as dangerously impulsive. Aereni who travel to Khorvaire have a concrete purpose for
the journey, which could drive an adventure.

The [[magewright]]s and [[artificer]]s of Aerenal are more
advanced than those of Khorvaire. Aereni artisans
fashion rods, staffs, and wands, and other rare or even
legendary items may come from Aerenal. However, the
nation is less industrialized than Khorvaire. Legendary items aren't mass produced; some are personally
crafted by members of the [[Undying Court]].

Aereni goods make use of exotic plants and woods.
[[Bronzewood|bronzewood]] has the density and even some of the properties of steel; an Aereni [[cleric]] might wear a
bronzewood breastplate, while a [[paladin]] of the [[Undying Court]] could wear a suit of elaborated engraved bronzewood plate armor. Bronzewood leaves are remarkably
tough, and the Aereni craft "leaf weave" armor functionally equivalent to leather, studded leather, or chain mail.
Bronzewood can also be crafted into weapons, and Aereni warriors use spears or swords made from a single
piece of bronzewood. 

!!! Trinkets from Aerenal

| !<<dr d8>> |!Trinket |
| 1 |A [[bronzewood]] ring inscribed with the Elvish word for "hope" |
| 2 |A dried flower; if it's placed in water, it blooms |
| 3 |An ebony locket; when it's opened, an elven voice whispers "Always" |
| 4 |A tiny skull carved from dark wood |
| 5 |A finger bone inscribed with an unknown sigil |
| 6 |An ivory flute which produces no sound |
| 7 |A small journal made from preserved leaves |
| 8 |A book of poetry written by [[undead]] elves |
[[Aerenal]] lumber—[[densewood]], [[bronzewood]], [[darkwood]], and the other products of the great jungles—is an important commodity. Lady Taelira is the consul of Aerenal, and has held this post for over 300 years. Taelira has little interest
in the wars or conflicts of the younger races, and she
is unlikely to take an interest in anything that adventurers bring to her attention; if there’s a problem, her inclination is to wait a year and see if it’s still an
issue. Trade agreements are an exception to this rule,
and Taelira is a vicious negotiator when it comes to
protecting the economic interests of the elves.

While she is rarely helpful, Lady Taelira shows more respect toward characters who possess the Right of Counsel. She is also a confidant of [[Mayne Jhaelian]], the priest of the [[Gates of Passage]] in [[Shae Lias]], and if Mayne sends the characters to Taelira, she listens. 
Aereni, also called high elves, possess a keen mind and a mastery of
at least the basics of magic. They often have pale alabaster skin sometimes tinged with blue, and hair of silver-white, black, or blue,
but various shades of blond, brown, and red are
not uncommon. Their eyes are blue or green and
flecked with gold. 

For thousands of years, the island nation of [[Aerenal]]
has been ruled and protected by the godlike power of
the [[Undying Court]], a council of [[undead]] high elves. The
greatest heroes of the Aereni join the Undying Court after death, joining their heroic ancestors in immortality.

The Aereni are isolationists who have little interest
in the world beyond their island. The [[Five Nations]] are
a place of chaos and war, so why would any sensible
elf venture into that madness? As you make an Aereni
elf character, decide what has caused you to leave your
island home and the protection of the Undying Court in
order to wander the world. Are you in search of a power
that could earn you your place in the Undying Court?
Have you been given a quest by one of your own [[deathless]] ancestors? Or are you an exile, banished from your
homeland for some crime against your people's rulers? 

Consider your character's personal and family history.
What is your family known for, and how can you prove
yourself to be a master of these skills? (See also [[Aereni noble line]]s.) Do you have ancestors in the Undying Court, and if so, what's your relationship with them? Do you find it challenging to deal
with the short-lived races, or are you patient with them? 
This mask's intricate design links it to one of the [[Aereni|Aerenal]] noble
lines, and the guidance it offers comes from spirits of that line.
You can't attune to the mask unless those spirits judge you
worthy to wear it.

An Aereni mask is imbued with one Action when it is created.
While wearing the mask, when you make an attempt using that Action, gain advantage.

The [[elven|elf]] nation of [[Aerenal]] is effectively a collection of city-states, united in devotion to the [[Sibling Kings]] and the [[Undying Court]]. Each region of
the country (save for the northern territory of the [[Tairnadal]])
is governed by a noble line. The original settlers of Aerenal
came from different cultures and environments, and the lines represent this; while all are united by the common customs of
Aerenal, each line has its own unique fashions and traditions. A
line is an alliance of ancient families governed by a noble house
that carries the name of the line. Thus, “the line of [[Mendyrian]]”
refers to multiple families, but someone who uses the surname—such as Belaereth Mendyrian—is a member of the noble line. The noble line represents the best of the region; it's not a hereditary family, but rather, a meritocracy whose members
are chosen from the people of the region. Similarly, the [[Sibling Kings]]—the rulers of the united kingdom—are members of the
same line and symbolically brother and sister, but they aren't
blood relatives. So in life, elves aspire to be appointed to their
noble line; in death, they hope to be raised to the [[Undying Court]].

In creating an [[Aereni]] elf, work with your DM to develop
details about your family and the line you owe allegiance to.
Since each line is an alliance of multiple families, there's room
for you to add your own details even within an existing line. A
few of the noble lines are described below, but look to these as
a source of inspiration rather than a limitation.

!! Noble Lines of Aerenal

<<list-links-article "[tag{!!title}sort[title]]">>
//Period: More than 100,000 years ago//

During the Age of Demons, myths tell us...

* [[Eberron]] was dominated by the [[overlord]]s, thirty arch[[fiend]]s who shaped reality to their will.
* Champions, later known as the [[Sovereign Host]], fought the overlords with an alliance of [[dragon]]s and [[couatl]].
* The sacrifice of the couatl bound the overlords with a force that formed the [[Silver Flame]].

According to the [[Progenitor|Progenitor Dragons]] myth, Eberron became the world
and all natural creatures are her children. But in the first
days of the world, the children of [[Khyber]]—[[fiend]]s, [[aberration]]s,
and other monsters—rose up from the darkness and claimed
dominion over the world. The greatest among these were the
[[overlord]]s, [[immortal]] archfiends embodying the evils that plague
mortals. Each overlord shaped the world to match their whims,
and no civilization could challenge them. It was a time of chaos
that lasted for untold millennia.

The Age of Demons came to an end after an extended war between the overlords and a legendary group of champions—now known as the [[Sovereign Host]]. Believed by some to be [[dragon]]s, by others, gods—or perhaps something else entirely—these rebels raised an army of dragons allied with the [[couatl]],
native [[celestial]]s said to embody the last light of [[Siberys]]. As
the immortal [[overlord]]s couldn't be destroyed, countless couatl
sacrificed themselves, their spirits combining into a prison of pure celestial energy that could bind the overlords. Even today,
the overlords remain bound and the world protected from
immense evil by this force, now known as the [[Silver Flame]].

!! Why Does It Matter?

The Age of Demons ended a hundred thousand years ago, long
before the foundation of any civilization that exists today. But
the time lingers in myth and continues to shape modern life.
It's commonly believed that the deities of the [[Sovereign Host]]
walked the world during this time and physically battled the
[[overlord]]s. However, many scholars assert that these myths are
actually based on the deeds of heroic [[dragon]]s—for example,
the myths of the Sovereign [[Aureon]] might be inspired by the
deeds of a dragon named [[Ourelonastrix]]. It's up to the DM to
decide the truth, but it could be possible for adventurers to
find places or relics tied to the Sovereigns from this age. You
might find the lance [[Dol Arrah]] used when battling [[Katashka]]
the Gatekeeper, or the site where she and [[Dol Dorn]] flayed the
[[Mockery]] for his treachery. Whether tied to gods or dragons,
these sites and relics still hold power.

While the overlords may have been defeated, they cannot be
destroyed. Each overlord is bound in a Khyber [[dragonshard]]
and held in its prison by the power of the [[Silver Flame]].
Though bound, an overlord can influence the world in the
region around its prison... and there's no official list of all of
the overlords or where they are bound. So if a story calls for a
region where the restless dead rise and prey on the living, this
could be the prison of [[Katashka]] the Gatekeeper. If a region is
suddenly overcome by ice and snow, perhaps the shard-prison
of [[Dral Khatuur]] has been brought there.

Each overlord can only be freed if a particular passage of the
[[Draconic Prophecy]] comes to pass. The [[fiend]]s known as the
[[Lords of Dust]] work to discover and enact these prophecies,
while the [[dragon]]s of the [[Chamber]] try to stop them. Both
sides frequently use mortals as pawns, so adventurers can
easily find themselves caught up in these schemes. As they
reach higher levels, adventurers might even become active
participants in this struggle instead of mere pawns. Though
few mortals are aware of it, this is a constant cold war that
determines the fate of the world.

Dungeons from the Age of Demons are rare, few surviving
the passage of time. Any remaining sites would be infused with
fiendish or celestial power. A vault created by the [[couatl]] could
hold a deadly artifact tied to an [[overlord]]. An obsidian fortress
might be imbued with [[Rak Tulkhesh]]'s power, and people who
settle there are consumed by homicidal rage. One of the best
documented sites is [[Ashtakala]], an ancient city in the heart of the
[[Demon Wastes]] said to be the sanctuary of the [[Lords of Dust]].

!! Character Ideas

Though the overlords are bound and the Sovereigns no longer
walk the earth, consider these ways your character might be
caught up in their legendary struggle:

* You have a [[dragonshard]] embedded in your flesh, the source of some of your class abilities (e.g. [[warlock]] magic or barbarian rage). This is a sliver of an overlord's prison. How did it come to be a part of you? Do the [[Lords of Dust]] want to take it from you, or are you destined to become an avatar for an [[overlord]]?
* You possess an object your parents swore once belonged to a [[Sovereign|Sovereign Host]]. Currently it has no magical powers, but perhaps there's some way to activate its potential.
* You were born in the [[Demon Wastes]] and spent your life battling [[fiend]]s. Have you traveled south pursuing a particular fiend? Or do you follow visions granted by the [[Silver Flame]]?
//Period: 80,000–40,000 years ago//

During the Age of Giants, scholars describe how...

* [[Giant|giant]] nations in [[Xen'drik]] unlocked secrets of arcane magic still unmatched in the modern age.
* The giants fought the inhabitants of [[Dal Quor]], ending the conflict by destroying a [[moon]] and thereby breaking Dal Quor's link to [[Eberron]].
* The giants threatened to crush an [[elvish|elf]] rebellion with dangerous epic magics, prompting the [[dragon]]s to step in, utterly destroying Xen'drik and cursing the land.

In the wake of the [[Age of Demons]], the [[dragon]]s were the most
powerful force in [[Eberron]]. Some dragons helped guide lesser
creatures, including the [[giant]]s of [[Xen'drik]], in their mastery of
arcane magic. As the dragons' increasing dominion caused a
surge in the [[Daughter of Khyber|Tiamat]]'s power, the dragons were forced to withdraw to isolation in [[Argonnessen]]. They remain there to this day, in hopes of preventing her
power from increasing further.

Multiple nations of [[giant]]s arose on [[Xen'drik]]: the [[Sulat League]], the [[Group of Eleven]], the [[Cul'sir Dominion|Cul'sir]]. It's not known
whether the Cul'sir attacked [[Dal Quor]] or whether the [[quori]] of
the time sought to invade Eberron, but the two powers fought
an extended war. The giants ended the conflict by destroying
one of the [[moon]]s of Eberron with cataclysmic magic,
damaging the planar connection between Dal Quor and the
world. Since then, the quori have been unable to physically
travel to Eberron, and there are no longer any [[manifest zone]]s
to Dal Quor.

These actions had devastating repercussions for [[giant]]
civilization. In the upheaval, many [[Cul'sir]] subjects used the
opportunity to rebel, but the largest uprising was that of the
[[elves|elf]]—both those oppressed by the Cul'sir, and warrior elves
who had never been conquered by the giants. When the
Cul'sir threatened to draw on their most dangerous magics
once more to destroy the elves, the [[dragon]]s emerged in force
from [[Argonnessen]]. They utterly devastated the civilizations
of [[Xen'drik]], giant and otherwise, then laid curses on the land
that are beyond the comprehension of the modern age. To this
day, the scourge of the land prevents any advanced civilization
from rising again. The Traveler's Curse warps space and
makes travel in Xen'drik unreliable. The curse known as the
Du'rashka Tul—“the madness of crowds”—causes civilizations
that become too advanced or widespread to collapse into
madness. Draconic curses are believed the reason the giants
devolved from mighty titans into [[hill giant]]s and the other
giants known today. The full extent of these draconic curses is
unknown, but the impact is unmistakable.

!! Why Does It Matter?

The curses laid on [[Xen'drik]] mean that the entire continent is in
essence a vast dungeon, a land that can never be fully mapped
or explored. The [[giant]]s mastered secrets of arcane magic as
yet unmatched by [[human]]ity or even by the [[elves|elf]], and as such
Xen'drik is a source for powerful artifacts, [[spell]]s, and [[eldritch machine]]s. Elemental [[airship]]s and the development of the [[warforged]] were both inspired by discoveries tied to the ancient giants, and a new find could be just as important. A race to
recover a [[Cul'sir]] artifact could easily drive an adventure, and
[[Sulat|Sulat League]] weapons could shift the balance of power in [[Khorvaire]]
if they fell into the wrong hands.

While Xen'drik's many curses make it nearly impossible to
colonize the land, that doesn't stop people from trying! The
city of [[Stormreach]] is an outpost on the edge of the unknown,
a gateway through which powerful artifacts, unknown magics,
and exotic creatures flow into Khorvaire. Beyond Stormreach
lies an intriguing continent of ruins and wonders, waiting to
be explored.

!! Character Ideas

Though the Age of Giants has faded into legend, consider these
ideas how your character might encounter its echoes today:

* As an [[elf]], you're haunted by trance-visions of an ancient city of your distant ancestors hidden somewhere in trackless [[Xen'drik]]. What is the force that's calling you there?
* As an [[artificer]], you're on the edge of an arcane breakthrough, but the final piece of the puzzle is tied to the work of the [[giant]]s. You'll need to search through their ruins for clues.
* You possess a trinket from [[Xen'drik]]—a prospector's map? an ancient key?—tied to an ancient [[Sulat|Sulat League]] vault.
* You own a deed to a small stretch of land outside of [[Stormreach]]. Will you try to develop it?
//Period: 40,000–5,000 years ago//

During the Age of Monsters, history recounts that...

* [[Elf|elf]] refugees fleeing the devastation of [[Xen'drik]] settled in [[Aerenal]], birthing the [[Undying Court]], the [[Aereni]], and the [[Tairnadal]].
* [[Goblin|goblinoid]]s and [[orc]]s dominated [[Khorvaire]], while [[dwarves|dwarf]], [[dragonborn]], [[gnome]]s, and [[halfling]]s had a smaller presence and impact on the continent.
* The [[goblinoid]] Empire of [[Dhakaan]] flourished for ten thousand years, then was destroyed when the [[daelkyr]] invaded the Material Plane. Though the daelkyr were defeated, their seeds of madness destroyed the goblinoid civilization.
* The daelkyr conflict destroyed the [[dwarven|dwarf]] [[Realm Below]].

After [[Xen'drik]] was shattered by the [[dragon]]s, they remained
isolated in [[Argonnessen]]. [[Human|human]] civilization was slowly
taking shape on [[Sarlona]], but the most dynamic cultures of
this period were forming on and around the continent of
[[Khorvaire]]. The [[elves|elf]] founded a new homeland on [[Aerenal]]—
“Aeren's rest” in Elvish—instituting the [[Undying Court]] and
establishing the cultures that would become the [[Aereni]]
and the [[Tairnadal]]. On [[Khorvaire]], the [[goblinoid]]s rose to
prominence, founding the Empire of [[Dhakaan]] approximately
16,000 years ago. Over the course of the next ten thousand
years, it expanded to dominate all of central [[Khorvaire]]. The
Dhakaani slowly drove all of their competitors to the fringes—the mountains, the wastes, the marches. They clashed with
the [[dragonborn]] of what's now [[Q'barra]], the [[dwarves|dwarf]] of the
[[Realm Below]], and [[Tairnadal]] explorers, but none could stop
the advance of Dhakaan.

However, when the [[daelkyr]] led armies of [[aberration]]s through
portals from [[Xoriat]], the Empire of [[Dhakaan]] was shattered—along with the [[Realm Below]], the vast subterranean civilization of the dwarves.

Though this bitter conflict came to an end when Dhakaani
champions and [[Gatekeeper|Gatekeepers]] [[druid]]s sealed the [[daelkyr]] in
[[Khyber]], the damage inflicted was irreparable. In addition to
creating monsters such as [[dolgaunt]]s and [[doppelganger]]s, the
daelkyr unleashed more subtle curses and strains of madness.
One of these eroded the connection to the [[goblinoid]]s' [[shared dream|Uul Dhakaan]] that united Dhakaani civilization. Within generations, the ancient empire collapsed into civil war. Cults and cruelty spread among the goblinoids, and soon, all that
remained on the surface of [[Khorvaire]] were ruins and chaos.

!! Why Does It Matter?

[[Dhakaan]]i ruins are scattered across [[Khorvaire]]. Most major
cities of the modern age are built on Dhakaani foundations,
and there are tunnels and warrens beneath them that have
been largely ignored by the human inhabitants. A Dhakaani
ruin could be viewed as a simple dungeon, but these are the
remnants of a proud civilization; what an adventurer sees
merely as a useful magical weapon could be an important
cultural relic of the goblins. While the Empire wasn't as
advanced as the civilizations of giants that came before,
the daashor [[artificer]]s of Dhakaan produced remarkable artifacts and were
master weaponsmiths with a remarkable understanding of
[[adamantine]] and other exotic alloys.

This is the story that underlies both the rise of [[Darguun]]
and the recent emergence of the [[Heirs of Dhakaan]]. Before
the arrival of humanity, [[goblin|goblinoid]]s and [[orc]]s shaped the destiny
of the continent, and there are many who yearn to reclaim
that ancient glory.

Though it occurred thousands of years ago, the impact of the [[daelkyr]] incursion is still felt across [[Khorvaire]]. The [[Cults of the Dragon Below]] and the [[Gatekeeper|Gatekeepers]] [[druid]]s are active legacies of this conflict. The [[Mror|Mror Holds]] [[dwarves|dwarf]] are venturing into the ruined [[Realm Below]] and recovering daelkyr [[symbiont]]s and other relics. While the daelkyr remain sealed—and scheming—in [[Khyber]], adventurers could stumble upon ancient fortifications, an organic daelkyr vault, or some other remnant of this forgotten war.

!! Character Ideas

Whether your character is a [[goblinoid]], [[orc]], or a more recent
inhabitant of these lands, consider these ways the Age of
Monsters might inform your past and your future:

* As a character from the [[Shadow Marches]], you carry an heirloom amulet you've sworn to keep safe. Have you learned that it's part of the wards that bind the [[daelkyr]] in [[Khyber]]—and that cultists bound to a particular daelkyr will be hunting you, trying to destroy the amulet?
* You're obsessed with the early history of [[Khorvaire]] and are always searching for leads on ancient [[Dhakaan]]i ruins and [[daelkyr]] relics. Are you a city [[goblin]] or [[Tharashk]] [[half-orc]] searching for your roots? Or just a scholar of another race that's fascinated with the period?
* As a [[Dhakaan]]i [[goblinoid]] you are an advance scout for a Dhakaani [[kech]]. Were you sent to reclaim lost Dhakaani artifacts, or are you studying the people of the surface, identifying weaknesses, and considering if any are worthy allies?
* You possess a Dhakaani weapon, claimed by your ancestor and handed down through your family. There is power in the blade, but it only flows through a bearer when they prove worthy... and you haven't. Can you master the blade? And what will happen when you encounter the [[Heirs of Dhakaan]]?
The Ahdri River in [[Adar]] flows into the [[Jathara Bay]]. 
A valley of fertile soil and abundant life exists at the
heart of [[Adar]], covering about 400 square miles. [[Adarans]] call
this place Ahdryatmin or "Mountainsoul." A huge [[manifest zone]] tied to [[Lamannia]] that enhances all [[primal magic]] within its boundaries, Ahdryatmin is an ancient holy
site to most Adarans. Few live there despite the land's richness, for dangers lurk among its lushness.

All forms of life known to [[Lamannia]] can be found
in Mountainsoul's trees, hills, and waterways. These
creatures attack anyone who wantonly abuses the land.
Rare and potent herbs and elements can be found as
well, along with exotic foes and mysterious hermits. The
secrets of Mountainsoul are many.

Would-be [[Haztaratain]]s must visit Mountainsoul as
[[Haztaratai|Taratai]] did in the [[kalashtar]]'s early days. They seek
the center of Ahdryatmin, wherein dwells a creature
from which the place draws its name. This [[elemental]] creature,
a [[spirit of the land]], is usually found only on Lamannia. The spirit Ahdryatmin
is as old as [[Adar]], and many believe it to be connected to the
[[Draconic Prophecy]]. It often tests those who visit it, invisibly controlling the weather and the ground, and sending denizens of the [[manifest zone]] to meet and foil travelers.
Those Haztaratains who leave Mountainsoul alive are
seen as the chosen of Ahdryatmin. 

!! Encounters

Ahdryatmin is a huge, wild place. No matter what the PCs do, they're likely to run across exotic [[beast]]s and [[elemental]]s from [[Lamannia]]. Most people cross Ahdryatmin to get to somewhere else, but a few have reason to go to the center of
the place. The spirit in the center of Mountainsoul might
have essential information about an object the characters
must acquire or a quest the PCs need to complete.

Items that are scarce in the outside world can be found in
relative abundance in Ahdryatmin by those who know where
to look. Reward adventurous PCs with rare [[material]]s such exotic
herbs, valuable ores, and unusual spell components. Many such objects
might be valuable in the various keeps of [[Adar]]. 
The Ahnadiv Mountains, perhaps more commonly known as "the mountains of [[Adar]]", are the impossibly tall and steep peaks that define the Land of Refuge in southern [[Sarlona]].
This division of the [[Harmonious Shield]] of [[Riedra]] is equipped
with longbows and studded leather armor, and they're
expected to stay distant from the enemy. Air soldiers can
be found on most fronts.
This set of boiled leather armor is dyed a deep brown with brass rivets and suede cord. While this armor is worn, the user's weight is reduced by half, allowing them to move quickly, quietly and easily.
The airship is the most advanced [[elemental]]-powered
vehicle on [[Eberron]], the pride of House [[Lyrandar]] and the
forerunner of the magical advances that many hope will
become commonplace in the aftermath of the [[Last War]].
The first airships emerged from the [[Cannith]] and [[Zilargo]]
workshops and appeared in House Lyrandar's service
just eight years ago (in 990 YK). For now, though, they remain rare, because the [[soarwood]] required for
their construction is exceedingly scarce and tightly
controlled.

Soarwood is a form of buoyant timber found only on
the island of [[Aerenal]], and the [[elves|elf]] who live there limit
their annual harvest of the precious wood. As a result,
production of new airships proceeds at a snail's pace,
unable to satisfy the fervent demand for new vessels.
The discovery of a new supply of soarwood could literally change the world, and even convincing the elves of
Aerenal to part with more of it would be an achievement
worth a handsome reward from House [[Lyrandar]]. 

!! How It Works

A standard airship (at least as far as standards have
been defined for this relatively new creation) looks similar to an oceangoing ship but is rigged with control fins
and rudders rather than sails. An air or fire [[elemental]] is
bound into a ring around the hull, which is suspended
on four struts jutting outward. Most airships are outfitted with the finest amenities, including many decorative
flourishes and creature comforts.

//''Operation.''// A [[dragonmark]]ed heir of House [[Lyrandar]]
must pilot a Lyrandar airship, channeling the power of
the [[Mark of Storm]] through the [[wheel of wind and water]]
that controls the vessel. The helm is typically situated
near the rear of the ship, inside the shelter of a wheelhouse. Controlling the vessel (without the benefit of
something like the [[conductor stone]]s that dictate a [[lightning rail]] route) requires constant attention, so at least
two pilots typically travel on every journey.

Only a dragonmarked heir with the [[Mark of Storm]] can
use the wheel and command the bound [[elemental]].
House [[Lyrandar]] pilots train for months to gain a deep
understanding of the ship's powers and limitations.
Because of this training, a skilled pilot can execute acrobatic maneuvers in the sky.

Airships can move in all three dimensions, with or
without the aid of the wind. Unlike most flying creatures, they don't rely on wings for lift thanks to their
[[soarwood]] hulls. They are able to fly equally well on their
sides or even upside down (notwithstanding the risks
that such maneuvers present to passengers and crew). 

Airships cannot actually land, because the struts that
hold the elemental ring in place protrude 10 feet from
the bottom of the vessel. Thus, passengers and cargo
are lifted in elevators and loaded at towers in major
cities. Each ship carries rope ladders for use at smaller
stations, in open terrain, or in cases of dire emergency.

A typical airship can reach a speed of 20 miles per
hour in clear skies carrying up to 30 tons of cargo.
Airships are most often employed by explorers and by
wealthy travelers who demand luxury—clients who
have a need to move quickly to places that might not be
served by the lightning rail. 

//''Suppression.''// Although the [[elemental]] bound to the
airship is essential for propulsion, the vessel's [[soarwood]] hull provides its lighter-than-air buoyancy. When
the elemental is suppressed, the ship remains aloft but
can't move. The pilot always suppresses the elemental
before docking, then uses ropes to maneuver the vessel
into position. 
The scattered remnants of the refugee Akiak people live in mobile camps in the foothills of the northern [[Paqaa Mountains]], and many more
clans are harbored by the [[Qiku]] shifters of the southern
[[Tashana|Tashana Tundra]]. There is no government or military structure per se, but
rather ad hoc leadership committees and guerrilla bands.
The charismatic [[duergar]] military leader known as [[Jade-Lin]] is attempting to galvanize the clans, and many have rallied to her flag of late. 

When the last Akiak ancestral strongholds in the [[Paqaa Mountains]] fell to [[Riedra]] two years after the [[Night of Razor Dreams]], the scattered remnants of this
once-great nation were forced to the north, where they
lived in small mobile refugee camps. The few remaining
Akiak are an intriguing people—a fully integrated society
of [[dwarf]] and [[duergar]], attempting rebuild and fight back
against their Riedran enemies. The Akiak are fighting a
guerrilla-style war against the [[Inspired]], launching forays
into their occupied homelands while constantly defending themselves against counterattacks by Riedra's death
squads. An Akiak character is likely to be driven to take
back the Paqaa Mountains, and to eventually bring the
fight to the corrupt heartland of [[Riedra]]. 

Many Akiak dwarves and [[duergar]] have been imprisoned in Riedran mines and work camps for generations,
since the initial downfall of their nation. They are
essentially an underground slave race exploited by the
Inspired, and few but the free Akiak insurgents even
know of their existence. 

!! Akiak Adventures

A select circle of Akiak leaders has knowledge of the metallurgical and [[alchemical|alchemist]] technology that underlies the [[monoliths|hanbalani alta]]. While the Akiak do not understand all the particulars,
they recently discovered that the [[Inspired]] are using the
monoliths to bring about some kind of planar alignment.
They suspect that the fate of all of Eberron might hang in the
balance. So far, only the [[shifter]]s of the [[Qiku]] seem to agree about the gravity of the situation. Akiak emissaries are being
sent abroad to disseminate this information.

The Akiak lack the strength to attack [[Riedra]] in force, so they instead rely on a strategy of infiltration and sabotage. Akiak guerrilla bands, small and mobile,
are dispatched into the mountains in search of [[hanbalani|hanbalani alta]]
installations. The hanbalani are built atop the proto-monoliths the Akiak built themselves as [[psionic|psionics]] power
plants. Destroying hanbalani is not overly difficult; surviving the journey there and
back is. The few Akiak bands that have the knowledge
and inclination to channel their revenge into monolith-busting play a deadly game of cat and mouse with the [[Thousand Eyes]] and the [[Sleeping Sword]].

''Getting the PCs Involved:'' Akiak emissaries in the
port towns of [[Winterstead]] and [[Whitetooth]] are actively
recruiting adventurers to help them in their struggle
against the [[Inspired]]. The Akiak are desperate and
hunted, but they are not without resources. Previous to
the [[Night of Razor Dreams]], the dwarves were one of the
richest peoples in all of [[Sarlona]], and a good portion of
that wealth was spirited out of the [[Paqaa Mountains]]. PCs
might earn this Akiak gold by allying with the [[dwarves|dwarf]]
against their shadowy Riedran oppressors.

Very recently, [[Qiku]] warriors have begun defying their
[[Sky Teller|Naar-Esqa]]'s dictates and joining the Akiak guerrilla raids.
PCs allied with or in debt to the Qiku might find themselves
drawn into battle. Alternatively, [[Riedrans]] see the Akiak as
savage raiders attacking from the north. The Riedran government pays a handsome bounty to foreign adventurers
who hunt down and kill Akiak fighters. In short, mercenary
work is to be had on both sides of this conflict.
You set an alarm against unwanted intrusion. Choose a door, a window, or an area within 30 feet that is no larger than a 20-foot cube. Until the spell ends up to 8 hours later, an alarm alerts you whenever a creature equal to or larger than the size of a rat touches or enters the warded area. When you cast the spell, you can designate creatures that won't set off the alarm. You also choose whether the alarm is mental or audible.

A mental alarm alerts you with a ping in your mind if you are within 1 mile of the warded area. This ping awakens you if you are sleeping.

An audible alarm produces the sound of a hand bell for 10 seconds within 60 feet.
This sand-filled hourglass has a dial at the top with settings between 1 minute and 1 hour. You can set the time and turn over the hourglass; a mental alarm alerts you with a ping in your mind if you are within 1 mile of the hourglass when the time runs out.
This 5-foot roll of sticky tape is imbued with a variation of the [[alarm]] spell. It functions as normal tape, unless you "attune" to the item, and speak the command word when removing a portion. If a creature besides you cuts this portion of tape or removes it from its place, a blaring alarm produces the sound of an emergency claxon for 10 seconds, clearly audible for 600 feet.

Only one portion of tape can be enchanted in this way at a time. If you attempt to activate another portion of tape with another piece already activated, the older portion deactivates.

If you lose attunement with this tape, any activated portions immediately deactivate, and reattuning does not reactivate those portions.
<<list-links-article "[tag{!!title}sort[title]]">>
An alchemist is an expert at combining reagents to produce mystical effects. Alchemists use their creations to give life and to leech it away. Alchemy is the oldest of [[artificer]] traditions, and its versatility has long been valued during times of war and peace. 

While some creators of alchemical items content themselves with sedentary lives as merchants, providing [[tindertwig]]s and [[smokestick]]s, the true alchemist answers a deeper calling. The alchemist captures their own magic potential within liquids and extracts they creates, infusing their chemicals with virulent power to grant them impressive skill with [[poison]]s, [[explosives|alchemical explosive]], and all manner of [[self-transformative magic|potion]].

Most alchemists on [[Khorvaire]] learn their trade from a guild associated with the [[dragonmarked house]]s; members of the [[Fabricators Guild]] ([[Cannith]]), [[Healers Guild]] ([[Jorasco]]) and House [[Vadalis]] are most common. Traditional herbalism is also passed down among the inhabitants of the [[Talenta Plains]] and [[Eldeen Reaches]]—some alchemists were originally herbalists but dived into alchemy as they studied more exotic ingredients and techniques. Finally, the [[elves|elf]] of [[Aerenal]] have a tradition of alchemy focused on preservation and emulating the [[deathless]] form.
This sticky, adhesive fluid ignites when exposed to air. You can throw this flask, shattering it on impact, and causing it to ignite whatever it strikes. 

These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
This thin liquid grows extremely cold when exposed to air. You can throw this flask, shattering it on impact, and splashing your target with this rapidly-freezing chemical.

These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
This small jeweler's eyepiece has 3 charges, which recharge daily at dawn. While looking
through it, you can expend one of its charges and detect [[transmutation]] magic for 10 minutes. While this effect is active, objects affected by transmutation magic are outlined in a faint aura when viewed through the loupe.
The ceramic container holding alchemist's spark has two chambers. When shattered, the chemicals vaporize and mix to create a dazzling discharge of lightning.

These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
Alinda Dorn is the [[bone knight]] commander of [[Fort Bones]] in [[Karrnath]]. For the past eight years she has devoted
herself to the destruction of the [[Valenar]], and she is
one of the foremost experts on their strategies and
tactics. Her [[undead]] cavalry can't match the Valenar
horses for sheer speed, but her steeds never tire. She
has learned that force alone isn't enough to match
the Valenar, and she is an expert in games of cat and
mouse; she is also a master of the game [[Conqueror]]
and loves to play it with newcomers. 

Alinda despises the [[Emerald Claw]] with the same fervor as the Valenar, believing
its adherents to be traitors that besmirch the name of
the [[Blood of Vol]]. She is deeply suspicious of [[Malevanor]] and
the [[Crimson Covenant]] of [[Atur]]. Along with the [[Kind|Corpse Collectors]],
she believes that [[Fort Bones]] provides a vital opportunity to prove the loyalty of the [[Seekers|Blood of Vol]] and to place
their unique skills in the service of the crown. 
This marble slab acts as a channel for the powers of the [[Mark of Healing]]. A person who possesses the mark can channel its power to cast [[raise dead]] on a creature lying on the altar. A person with a greater version of the mark can cast [[resurrection]] using the altar.
!! The Amaranthine City of [[Irian]]

This immense metropolis fills an entire layer. The Amaranthine
City is the capital of an empire in its first bloom of glory. Gilded
banners catch the wind. Armored [[angel]]s and [[pegasi|pegasus]] patrols
pass overhead. People laugh in the streets, healthy and happy.
Artisans create a mosaic depicting glorious victories. While
this is an empire, the message isn't about oppression, but
one of potential. This is an empire where all the citizens are
prosperous and all have equal opportunities. People are proud,
the city is full of wonders, and the future is bright.

The Amaranthine City is widely seen as the heart of [[Irian]]. Its
[[Dawn Empress]] is the first and greatest of the [[Architect]]s. Her empire
isn't driven by conquest, but rather by exploration—discovering
new lands and opportunities, just as mortals can always find
new talents within and opportunities beyond. 

Layers tied to the Amaranthine City reflect its theme of
expansion and discovery. These layers may hold outposts in
otherwise-uninhabited lands filled with wonders of nature, or
they might hold prosperous farms and estates, inhabited by
[[ember]]s, with [[lumi]] and [[deva]]s helping to drive the theme.

!! The Amaranthine City of [[Mabar]]

The Amaranthine City is widely seen as the heart of Mabar.
Experienced planar travelers may find it familiar, for it's a
dark reflection of the Amaranthine City of [[Irian]]. Irian shows
the city in its first days of glory: prosperous, clean, full of joy
and life. The Amaranthine City of [[Mabar]] is a haunted shadow
of this glory. Like its counterpart, this immense metropolis
fills an entire layer, but here, its banners are faded and torn,
walls are cracked, and fountains are dry. [[Shadow|shadow]]s still move
through the streets, a miserable reminder of the crowds
that once filled the city. The rotting tapestries and chipped
mosaics speak of a past age of wonders and glory. The two
are unmistakably the same city, both in architectural style and
the layout of its streets. This feels like the last days of a grand
empire, an image of decaying grandeur; but there's great
power beneath the tragic façade. The walls may be cracked,
but they are still mighty, and the [[mezzoloth]]'s rusty trident
can kill you as easily as a polished one.

The city's ruler, the [[Empress of Shadows]], is the first and
greatest of the [[Dark Power]]s. She spends much
of her time presiding over the decaying pomp and grandeur of
the Amaranthine City. The sages of [[Syrania]] believe that the Empress
of Shadows chooses which fragments of other planes will be
pulled into Mabar, and planar emissaries sometimes dwell in
the Amaranthine City seeking to negotiate with her.

This city is the seat of the [[yugoloth]]s; for every yugoloth in
the Amaranthine City of [[Mabar]], there is an [[angel]] in the city in [[Irian]], all the way up to the [[Dawn Empress]] and the [[Empress of Shadows]]. Most likely, this is just a way of reflecting the planes' core concepts—beginnings and endings, hope and
despair. But it's possible that Irian and Mabar are somehow the
same—perhaps the Dawn Empress is the Empress of Shadows,
and though they appear to exist at the same time, they reflect
the beginning and end of the same spirit.

The layers tied to the Amaranthine City reflect its theme
of imperial ambition and decaying power. Some embody
desperation—a collapsing fortress awaiting an assault that will
surely destroy it, or an abandoned sanitarium whose inmates are
trapped and starving. These regions are inhabited by [[shadow]]s,
but the fiendish gardeners can instill near-sentience into them
if it serves their purposes. Fragments claimed by the Empress
of Shadows are drawn into her empire, and usually acquire a
[[yugoloth]] outpost even as the life is drained from the region.
''District Type: ''Embassy district<br/>
''Buildings: ''Embassies and consulates (9), diplomatic
residences (60), upscale lodging (35), upscale food
(50), exotic trades (30), upscale trades (55), upscale
residences (40)<br/>
''First Impression:'' The flags of most of [[Khorvaire]]'s
nations fly in this district, hanging in front of
monumental embassy blocks in this district. The
crowds include people of all races and many different
ethnic backgrounds.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Tradefair]] (northeast); [[Sovereign Towers]] (east); [[Dava Gate]] (southwest); [[Myshan Gardens]] (below); [[Korranath]] (above)

Ambassador Towers, [[Sharn]]'s embassy district, is
home to embassies and consulates from ten foreign nations: [[Aundair]], [[Cyre]], [[Karrnath]], the [[Lhazaar Principalities]], the [[Mror Holds]], the [[Talenta Plains]],
[[Thrane]], [[Zilargo]], [[Aerenal]], and [[Riedra]]. A
single consul or ambassador heads each embassy. Aside from the dignitaries, the rest of the embassy staff consists of bureaucrats and
clerks as well as diplomats, negotiators, and spies. In
the minds of [[Khorvaire]]'s diplomatic community, the
[[Last War]] might not be over—a few years of peace could
be nothing more than a brief hiatus from a conflict
that lasted a century, and hostilities could erupt again
at any moment. Best to be prepared.

[[Cyre]]'s embassy was established here long before
the [[Last War]], and its staff continues to advocate
for the interests of the villagers of [[New Cyre]], in
eastern [[Breland]]. 

!! Noteworthy Locations

* ''Embassies:'' [[Aundair|Aundair Embassy (Sharn)]], [[Cyre|Cyre Embassy (Sharn)]], [[Karrnath|Karrnath Embassy (Sharn)]], the [[Lhazaar Principalities|Lhazaar Embassy (Sharn)]], the [[Mror Holds|Mror Embassy (Sharn)]], the [[Talenta Plains|Talenta Embassy (Sharn)]], [[Thrane|Thrane Embassy (Sharn)]], [[Zilargo|Zilargo Embassy (Sharn)]], [[Aerenal|Aerenal Embassy (Sharn)]], [[Riedra|Riedra Embassy (Sharn)]]. Unofficially: [[Q'barra|Joseth ir'Kalain]].
* [[Brelish Museum of Fine Art]]. The museum displays work produced by Brelish artists and relics recovered from [[Xen'drik]].
* [[The Citadel|King's Citadel]]. The headquarters of the King's Citadel, [[Breland]]'s elite military and intelligence service. The Citadel is also a high-security prison holding Sharn's most dangerous criminals.
* [[Athania's Companions]]. A bordello with a secret spy ring.
Amnizus are powerful [[devil]]s. They are are arrogant, bullying, and ruthless, but they're also highly intelligent tacticians and unfailingly loyal. 

An amnizu can etch the flesh away from a creature with a touch from its crooked fingers. But its true powers lie in its command over the minds of other creatures. It can force a creature to forget everything it experienced or learned during the last several hours, a process which is dazing and traumatizing to the victim. Even attempting to attack an amnizu requires extreme force of will, as the devil can redirect the attacker's animosity to another nearby creature.
This rough piece of teal sea glass hangs on a simple chain. The wearer can simply pop this amulet in their mouth, and the magic will allow them to go without breath for thirty minutes. The amulet must be charged for thirty minutes in clean air between uses.
This large, spherical ruby is set in a golden clasp. The amulet distracts all those that look upon the wearer; as long as they are strangers, no one the wearer interacts with will remember their face.
This small glass orb with a small ball of moss rolling around inside dangles from a rusted brass chain. When activated inside of a cave, mine, dungeon, or similar underground structure, the ball of moss inside the amulet will roll around in the sphere, leading the user towards the closest accessible exit.
This amber pendant has a beautiful black beetle encased inside, and dangles from a brass chain. It allows the wearer to communicate fluently with insects and arachnids. Flies, spiders, ants, and other bugs will behave amicably towards the wearer, and are more likely to aid the wearer when called upon.
This circular golden pendant has a teardrop-shaped hole in the center. The edges of the amulet are etched with strange runes.

Peering through the center of the amulet allows the user to see magical auras, much like the spell [[detect magic]], as long as the magical object or creature is within 30 feet.
While wearing this amulet, you are hidden from [[divination]] magic. You can't be targeted by such magic or perceived through magical scrying sensors.

This small crescent moon amulet is set with glittering gems and hangs on a silver chain. Once per week, the wearer can activate this amulet's magic, and instantly gain the benefits of a good night's sleep. The amulet must be charged under a crescent moon between uses.
This necklace is a small porcelain heart on a golden chain. When worn, the amulet is warm to the touch and gently pulses with the heartbeat of the person of the wearer's choosing.
This amulet is made of a blue crystal, and seems to have a large grey moth enclosed within. While wearing this amulet in moonlight or in a [[Thelanis]] [[manifest zone]], you can manifest ethereal moth wings from your back, granting yourself the ability to fly at the same speed you can run. The wings persist for 1 hour, but become useless while you are in bright light. Once you manifest the wings, you can't do so again until the next dusk.
This small glass globe hangs on a leather strap. A small flame flickers gently inside the globe. 

This amulet keeps the wearer at a comfortably warm temperature, on even the coldest nights, and the user has resistance against frost-based spells.
The Analects of War is an ancient military treatise written by [[Karrn the Conqueror]], the founder of the pre-[[Galifar]] nation of [[Karrnath]]. It has been the most influencial text on Karrnathi military strategy and tactics for the last three millennia, and seminars on the treatise are taught every semester at [[Rekkenmark Academy]] to this day. In addition to military thinking, it has influenced business tactics, legal strategy, lifestyles, and more across [[Galifar]].
These heavy boots are studded with iron plates. When the command word is spoken, these boots suddenly and magically weigh 500 lbs.
The Andnemun Desert stretches across [[Sunyagir]] in [[Syrkarn]] and [[Borunan]] in [[Riedra]]. A small band of [[stone giant]] nomads known as the Sandstriders are rumored to roam the Andnemun.
An angel is a celestial paragon of virtue, honor, and honesty. Its sublime beauty and presence can drive awestruck onlookers to their knees. Yet angels are destroyers too, and their appearance portends doom as often as it signals hope.

Angels native to different [[plane]]s express different aspects. 

* The angels of [[Daanvi]] represent law in the service of justice and the greater good, and serve as local authorities.
* In [[Fernia]], angels represent the comfort fire offers: its life-giving warmth, the light that holds back the shadows.
* The angels of [[Irian]] embody the general principles of light, hope, and compassion.
* In [[Shavarath]], angels are living symbols of the endless fight for justice. Different cohorts within the Legion of [[Justice]] represent specific concepts within that broad ideal, such as kindness to fallen foes, or protecting civilians and avoiding collateral damage.
* The neutral angels of [[Syrania]] aren't champions of justice or bringers of hope; rather, they're observers and scholars, defined by their [[domain|Syranian domain]] of study. Syranian [[dominion]]s are the variety that can fall and become [[radiant idol]]s.

Angels may honor and serve the [[Sovereign Host]], but like all other creatures, have no direct access to them. Even angels must take their existence on faith.

!! Types of Angel

<<list-links-article "[tag{!!title}sort[title]]">>
While wearing this armor, you can cause two incorporeal feathered wings to sprout from your back for 1 hour or until you choose to end this effect.

Once you have used this property, it can't be used again until the next dawn. 
This spell creates an [[undead]] servant. Choose a pile of bones or a corpse of a [[humanoid]] or beast within 10 feet. Your spell imbues the target with a foul mimicry of life, raising it as an undead creature. 

You can mentally command any creature you made with this spell if the creature is within 60 feet of you (if you control multiple creatures, you can command any or all of them at the same time, issuing the same command to each one). You decide what action the creature will take and where it will move during its next turn, or you can issue a general command, such as to guard a particular chamber or corridor. If you issue no commands, the creature only defends itself against hostile creatures. Once given an order, the creature continues to follow it until its task is complete.

The creature is under your control for 24 hours, after which it stops obeying any command you've given it. To maintain control of the creature for another 24 hours, you must cast this spell on the creature again before the current 24-hour period ends. This use of the spell reasserts your control over up to four creatures you have animated with this spell, rather than animating a new one.

If you are able to cast rare-tier spells, you can cast this as such to animate or reassert control over four additional undead creatures. Each of the creatures must come from a different corpse or pile of bones.
Animated objects are crafted with potent magic to follow the commands of their creators. When not commanded, they follow the last order they received to the best of their ability, and can act independently to fulfill simple instructions. Some animated objects (including many of those created using the [[fey]] magic of [[Thelanis]]) might converse fluently or adopt a persona, but most are simple automatons.

Swords, axes, clubs, daggers, maces, spears, and even self-loading crossbows can be animated to float through the air and attack unauthorized creatures who enter a warded area. These weapons can also be wielded by a suit of animated plate armor. But any inanimate object could be imbued with magic in this way; brooms, furniture, caltrops, even bags of ball bearings that swarm and harry designated foes.

The magic that animates an object is dispelled when the construct is incapacitated. At that point, the object becomes inanimate and is too damaged to be of much use or value to anyone.
While holding this shield, you can speak its command word to cause it to animate. The shield leaps into the air and hovers in your space to protect you as if you were wielding it, leaving your hands free. The shield remains animated for 1 minute, until you choose to end this effect, or until you are incapacitated or die, at which point the shield falls to the ground or into your hand if you have one free.
A 10-foot-radius invisible sphere of antimagic surrounds you. This area is divorced from the magical energy that suffuses the multiverse. Within the sphere, spells can't be cast, summoned creatures disappear, and even magic items become mundane. Until the spell ends (up to 1 hour, or until your concentration breaks), the sphere moves with you, centered on you.

Spells and other magical effects, with extremely few exceptions, are suppressed in the sphere and can't protrude into it. Energy expended to cast a suppressed spell is consumed. While an effect is suppressed, it doesn't function, but the time it spends suppressed counts against its duration.

Teleportation and planar travel fail to work within the sphere, whether the sphere is the destination or the departure point. Extradimensional spaces are also not accessible.

A creature or object summoned or created by magic temporarily winks out of existence in the sphere. Such a creature instantly reappears once the space the creature occupied is no longer within the sphere.

Spells and magical effects such as [[dispel magic]] have no effect on the sphere. Likewise, the spheres created by different antimagic field spells don't nullify each other.
This small tavern with a handful of rooms to rent is carved into a bend in
the wall of Mason's Tower. House [[Ghallanda]] operates the inn, and the host is a matronly [[halfling]]
named Eranna. It's known to be under the protection of the [[Boromar Clan]], which makes it one of the safest establishments in [[Lower Dura]].
Araam is the [[Architect]] of the [[Refuge]] of [[Irian]] and embodies the concept of hope. She's a wise advisor, and while she may not
always have answers, she helps people look at their problems
in new ways and see that all problems can be solved. She's the finest healer in Irian, and there are few injuries she cannot heal
or curses she cannot break. There's no monetary cost for the
services of the Refuge, but Araam charges those who benefit
to give hope to someone who needs it; they won't be allowed to
return to the Refuge until that debt is paid.
Araam's crown is a flower with remarkable medicinal properties that only grows in [[manifest zone]]s to [[Irian]]. House [[Jorasco]] requires a steady supply of it for their [[healing potion|potion of healing]]s.
Arawai is the Sovereign of Life and Love. She is the patron of fertility and of the benevolent aspects of nature, bringing good harvest and gentle rain. Her symbols include a sheaf of wheat tied with green ribbon or a [[bronze dragon]].
Wands, staffs, and rods are well-established weapons in the
world of Eberron. Similarly, arcane artillery doesn't employ
any sort of physical projectile, relying solely on magical
energy—but rather than a small weapon one person can
easily carry, arcane artillery refers to a variety of larger
arcane foci that can increase the range and area of magical
attacks. Likewise, the [[war|Last War]] employed magical explosives such
as [[blast disk]]s that could wreak devastation by triggering a
previously stored spell.

!! Operating Arcane Artillery

While a specially trained spellcaster must operate arcane
artillery, more than one person can assist with its operation,
allowing a team to prime, aim, and fire in a single round. Using these weapons requires specialized training, similar to that of an [[artificer]] or [[magewright]]; someone trained to
operate arcane artillery is generally called a bombardier. A typical bombardier may know one or more spells that they're only able to cast using a focus—such as a [[siege staff]] or [[long rod]]. So an [[Aundair]]ian specialist might be able to produce [[cloudkill]] through a focus, but not cast the spell on its own. Bombardiers don't use their own power when casting these spells;
instead, they prime the weapon using a [[dragonshard]] solution
known as the [[breath of Siberys]]. However, player characters are more versatile than
magewrights or bombardiers.

!! Enhanced Artillery

While arcane artillery is a powerful force, there's still a place for
mundane siege engines that use physical projectiles. The ballista,
mangonel, and trebuchet are all common forms of artillery,
seen on both the battlefield and on warships. However, just as
a [[Thrane]] archer may have used an enchanted bow, the siege
engines of the [[Last War]] are enhanced with magical power.

For example, a siege engine can be partially
animated, speeding its use. Generally, an animated engine
loads itself while the crew aims it, requiring less time to fire an animated ballista or mangonel. House [[Cannith]] also manufactured fully animated
siege engines, capable of self-aiming. Such an engine required
the same amount of time to aim and fire as a crewed engine,
it simply had no need of a crew. However, these engines could
only follow simple instructions and had little ability to adapt,
requiring clear, absolute orders to be effective: “//Continue to
attack the north tower until it is destroyed.//”

!!! Enchanted Ammunition

Ballista bolts and mangonel
missiles are often enchanted with spell effects that trigger
when the bolt strikes its target. This effect is in addition to
the standard damage inflicted by the siege engine.

* //Explosive ammunition// affects a 30-foot radius sphere centered on the impact of the bolt. Typically, explosive ammunition deals fire damage, igniting flammable objects that aren't being worn or carried. However, [[Karrnath]]i //deathbolt//s deal necrotic damage and only harm living creatures, while [[Thrane]] //Tira's tears// deal radiant damage.
* //Summoning ammunition// conjures creatures around the point of impact. [[Aundair]]ian firestones produce a temporary flaming sphere that randomly rolls around the area of impact. [[Zil|Zilargo]] binders developed a more powerful form of this ammunition which conjures an [[elemental]] on detonation, but it is extremely costly and rare.
* //Panic stones// affect all creatures within a 90-foot-radius sphere centered on the impact of the stone; those without high enough resolve drop whatever they are holding and flee in terror.
The mentors at [[Arcanix]] comprise the Arcane Congress, a council of spellcasters
who explore the limits of the arcane arts under a mandate instituted by King [[Galifar I|Galifar ir'Wynarn]]. 

The royal warlord and minister of magic, [[Adal|Adal ir'Wynarn]], serves
as the go-between for the [[Aundair]] crown and the congress, though
some factions within the congress distrust Adal due to his fascination with war and weapons of arcane destruction. In addition to providing Queen [[Aurala|Aurala ir'Wynarn]] with advice on arcane matters, the congress oversees the floating towers of wizardry in [[Arcanix]] and helps mentor the next generation of [[wizard]]s and [[artificer]]s. 

The Arcane Congress competes with the [[Twelve]] in recruiting promising students of magic.
You create an invisible, magical eye within 30 feet that hovers in the air for up to one hour.
You mentally receive visual information from the eye, which has normal vision and darkvision out to 30 feet. The eye can look in every direction.

You can move the eye up to 7 mph in any direction. There is no limit to how far away from you the eye can move, but it can't enter another [[plane]] of existence. A solid barrier blocks the eye's movement, but the eye can pass through an opening as small as 1 inch in diameter.
You touch a closed door, window, gate, chest, or other entryway, and it becomes locked until it is dispelled. You and the creatures you designate when you cast this spell can open the object normally. You can also set a password that, when spoken within 5 feet of the object, suppresses this spell for 1 minute. Otherwise, it is impassable until it is broken or the spell is dispelled or suppressed. Casting [[knock]] on the object suppresses arcane lock for 10 minutes.

While affected by this spell, the object is more difficult to break or force open.
Arcane magic is a form of science. A [[wizard]] works through complex magical formulas. An [[artificer]] invents new and bizarre ways to create and combine [[spell]] effects. A [[sorcerer]] interacts with magic in a more instinctive way, but is still tapping into ambient magical power that doesn't require anything like faith.

There are predictable rules that shape reality, and with proper study and force of
will, anyone could potentially perform arcane magic. This is
what makes arcane magic the foundation of civilization in the
[[Five Nations]]: it can be taught (as with schools for [[magewright]]s and [[wizard]]s), and once learned, it is entirely reliable. Arcane magic involves channeling ambient magical
energy—the powers of the [[plane]]s, the emanations of the Ring
of [[Siberys]]—and focusing it to alter reality. The components of
a spell—like verbal incantations, somatic gestures, and focus
items—help this process, but the most important element of
spellcasting is mental focus. Though a fighter could perfectly
duplicate the words and gestures of a wizard, nothing would
happen. You must cast the spell in your mind, harnessing and
shaping mystical energy, and this is dangerous and exhausting;
this is why most spellcasters are limited in how many spells
they can cast each day.
Arcane orders, sometimes known as "wizard circles", are guilds or councils for arcane spellcasters. These provide the magically gifted with sanctums to practice
their arts and share mystical knowledge. As the
different circles focus on different types of magic,
this also allows for a certain degree of control of the mystical market.

//''Membership Benefits.''// Someone accepted into a [[Sharn]] arcane order must pay 200c to join, with ongoing dues of 50c each year thereafter. With this payment comes
many benefits, including the following:

* You can stay at the order's hall in any major city and enjoy the amenities of a wealthy lifestyle free of charge.
* For as long as you have access to the order's hall, the cost of crafting a [[magic item]] at the site is reduced by 10 percent.
* While in the hall, you have advantage any attempts involving arcane lore or research.
* Membership in an arcane order in [[Sharn]] grants prestige within [[Breland]]. Though this status provides no tangible benefit, it proves that you are a gifted mage and stand above any mere [[magewright]] or dabbler. 

!! Arcane Orders

<<list-links-article "[tag{!!title}sort[title]]">>
(requires a missing limb)

This prosthetic appendage was developed by [[artificer]]s of House [[Cannith]]. To attune to this item, you must attach it to your arm at the wrist, elbow, or shoulder, at which point the prosthetic magically forms a copy of the appendage it's replacing.

While attached, the prosthetic provides these benefits:

* The prosthetic is a fully capable part of your body.
* You can remove the prosthetic at will, and it removes itself if your attunement to it ends. It can't be removed against your will.
* You can magically detach the prosthetic and launch it up to 60 feet away. Immediately after striking its target, the arm flies back to you and reattaches.
Some rogues enhance their fine-honed skills of stealth and agility with [[arcane magic]], learning tricks of [[enchantment]] and [[illusion]]. These rogues include pickpockets and burglars, but also pranksters, mischief-makers, and adventurers.
This farming village on [[Lake Galifar]] provides food for
the nearby floating towers of wizardry that serve as
home to [[Aundair]]'s [[Arcane Congress]]—a cutting-edge
research facility and the finest school of magic in [[Khorvaire]]. Most people reach the towers by magical
means; for others, the village rents [[hippogriff]]s to bear
visitors to the fortresses for a modest fee. 

The three floating towers of Arcanix hover above Lake Galifar, unmoving and untroubled by wind or rain. Their labyrinthine corridors house
mentors and students who explore the mysteries of magic as they have since the great institution was
founded nearly 1,000 years ago. They also advise Aundair's [[queen|Aurala ir'Wynarn]] on all things magical, and confer with colleagues
visiting from other nations.

The floating castles contain classrooms and laboratories, cells for students, and apartments for mentors. Great libraries hold the collected lore of generations,
with rituals and spells bound in dusty tomes. Hidden
vaults contain great treasures and dangerous items, some unearthed by adventuring wizards (such as the great [[Gate of Xabra]]), others created by the mighty mages who have lived here.

Apprentices come from all over [[Khorvaire]] to train at
Arcanix. If you're a [[wizard]], sage, or [[artificer]], you might
have learned your craft here. 
This heavy tunic of waxed leather cannot be pierced by arrows. Though the user is protected from piercing damage, the impact of the arrow will still leave a hefty bruise.
Archfey are [[immortal]] representations of faerie tales told on [[Eberron]]. They are the foundation of [[Thelanis]], the force that sets
a story in motion. Where greater [[fey]] may be tied to a single
story, most archfey have inspired countless tales—often as the
antagonist, though they can also be benevolent. The [[Lady in Shadow]] is the archetype of the mighty witch who lives apart
from society, whose anger can bring a terrible curse. She's the
villain of the //Sleeping Prince//, but she also curses those who
steal from her secret garden, and may have advice for those who
approach her carefully and with gifts. 

In some cases, stories
refer to the archfey by name. When something goes missing in
the [[Five Nations]], people assume the [[Forgotten Prince]] stole it. Other archfey inspire tales, but those stories are seen through a local lens. The Lady
in Shadow set the story of the Sleeping Prince in motion long
ago, but in [[Eberron]], the villain of the story is Lady [[Narathun]],
or [[Hezhaal]] the [[dirge singer]], or [[Sora Katra]]. This is fine with the
Lady in Shadow; she doesn't need mortals to know her name.

Many archfey dwell in the [[Moonlit Vale]]. Some rule over
[[feyspire]]s, while others dwell in the [[Palace of the Moon]]; the
intrigues of the Court are their defining stories. Archfey that rule
[[layer]]s are known as ''anchor barons'', as each is the anchor that
defines the [[barony]]. They come to the Palace of the Moon for
revels or conclaves, but prefer to dwell in their own story.

Archfey possess great power within [[Thelanis]] and its [[manifest zone]]s, but to act in the world beyond, they need agents. Some recruit agents directly, working with [[Greensingers]] or training [[warlock]]s or other emissaries; an archfey could serve as an immortal group patron for a group of adventurers. Typically,
an archfey wants its agents to take actions relating to its story;
the [[Forgotten Prince]] charges his agents to steal secrets and
unloved things. Others don't want agents; they want mortals
to reenact their stories, as in many versions of the Sleeping
Prince. [[Hezhaal]] the dirge singer really did curse the marhu's
son long ago, and [[Sora Katra]] is another real person who
just happens to resemble the [[Lady in Shadow]] in some ways.
Neither Katra nor Hezhaal knowingly served the Lady in
Shadow—but she may have secretly aided them, or placed gifts
or obstacles in their paths that might make them reenact the
stories, unknowingly becoming avatars of the archfey. Archfey
can't be permanently killed; as long as their stories are told, the
archfey will reform. However, this usually involves a greater fey
being promoted to fill the role; the archfey still exists, but they
aren't exactly the same as the one that came before.

Some example archfey are listed below, just a few examples of the dozens in Thelanis. In creating new archfey, consider the stories that are told about them and
how those stories could play out again in the current campaign.

!! Archfey of Thelanis

<<list-links-article "[tag{!!title}category[entity]sort[title]]">>
The Architects are the most powerful spirits of [[Irian]]. Each
embodies an aspect of the [[plane]], and oversees a realm of linked [[layer]]s
within it. They're unique [[celestial]]s with great wisdom and power, but most of their
time and energy is devoted to the planar seeds—guiding the
growth of the seed, smoothing over problems, and adding a few
personal touches. Planar seeds emerge within an Architect's
realm, expanding until they break off and join their new planes.

The power of the Architects is largely bound to their realms.
They can't directly intervene in the Material Plane, though
they can work with [[warlock]]s or send [[lumi]]. Often this involves the reintegration of a planar seed, or examining regions where [[Mabar]] has removed a fragment. 

!! The Architects

<<list-links-article "[tag{!!title}sort[title]]">>
What are the best ways to store vast amounts of 
information? That question has occupied 
chroniclers and librarians for centuries. Scrolls 
and books were the finest information-storing 
methods for a long time, but the first archivists 
imagined something greater: storing information 
in a real or an artificial mind. What library could 
match a mental archive capable of accessing 
information in seconds? As they work towards 
this goal, archivists have become masters of 
storing knowledge and creating artificial 
intelligences fueled by [[arcane magic]] and [[psionics]]. These techniques 
have yet to be perfected and institutionalized, and of all [[artificer]]s, archivists are on the cutting edge of arcane science.

Talented archivists can write mystical calligraphic symbols on a small mundane object, thus rousing a keen mind within it. This semi-sapient [[magic item]] can record and manipulate information with a speed and efficiency no other system can replicate.
Ardents are [[psionic|psionics]] empaths who realize their psychic potential through intuition and emotion. Their transcendental understanding of the mind and
its place in the cosmos grants them the ability to influence others'
emotions. These mystics can bring an ally back from the brink of madness, or help them recover from traumatic experiences. They can even accelerate the body's natural healing to mend wounds (an ability used by the [[Healing Hand]] of [[Riedra]]), though not with the same efficacy as a bearer of the [[Mark of Healing]]. That said, [[Jorasco]] healers cannot heal afflictions of the mind like the ardent.

By adapting different states of mind called psionic mantles, an ardent can specialize in certain domains of emotion. The ''mantle of clarity'' enhances the ardent's ability to focus the mind and suppress heightened emotions such as panic, anger, or disgust. On the other hand, the ''mantle of elation'' augments mania and euphoria, and can mentally destabilize nearby enemies.
Since the end of the [[Last War]], [[Lhazaar|Lhazaar Principalities]] traders have made their way to the [[Syrk|Syrkarn]] port city of Ardhmen in order to barter for spices
and [[dreamlily]]. This city is the second largest settlement in [[Syrkarn]] (after [[Nderitese]]), but explorers expecting to find themselves landing in the "[[Stormreach]]" of [[Sarlona]] are in for a somewhat muddy letdown. Even after decades of
Lhazaar trade, Ardhmen remains little more than clusters of fishing huts, transitory nomadic trader enclaves, and the ancient stone dock remnants of the port city that
was leveled in the ancient [[magewars|Sundering]].

To learn more about the people of Ardhmen, see [[Syrks]].

Some [[Summit Road]] agents are stationed permanently in [[Ardhmen]] and other Syrk settlements. [[Khorvairians|Khorvaire]] attempting to travel to [[Adar]] make
landfall at Ardhmen, for the coastline of that besieged
mountain land is all but impassable. 
The Argentum is a ministry within the
Church of the [[Silver Flame]]. Originally dedicated to
the acquisition, study, and redistribution of [[magic item]]s and artifacts, it was repurposed during the [[Last War]] to serve as [[Thrane]]'s espionage agency. 
In {{!!title}}, you might...

* Clash with tribes of [[dragon]]-worshiping barbarians.
* Explore an ancient city of dragons.
* Discover mighty artifacts and long-lost [[spell]]s. 

Argonnessen is home to the oldest civilization on [[Eberron]]. The [[dragon]]s wield ancient magic, and they have
shielded their homeland against [[divination]] and teleportation. Tribes of barbarians roam the [[Seren]] Islands and
the coastlines of Argonnessen; these include members
of almost every [[humanoid]] race, perhaps collected by
[[dragon]]s in ages past. The Seren barbarians worship the
dragons and protect the coasts from invaders. To date,
no one from Khorvaire has ventured into the interior of
the continent and returned to speak of it.

No one knows how many [[dragon]]s live in Argonnessen, but stories tell of vast cavern complexes filled with
the treasures of fallen civilizations, of prisons holding
bound [[demon]]s, of cities made from [[adamantine]].

To those of [[Khorvaire]], Argonnessen is a mystery
space on the map. Only the most powerful characters
might visit Argonnessen and return to tell the tale. 

!! Notable Locations

<<list-links-article "[tag{!!title}category[location]sort[title]]">>

!! {{!!title}}'s Influence in Khorvaire

In [[Khorvaire]], you might...

* Prevent a villain from acquiring a powerful artifact smuggled out of Argonnessen.
* Encounter a [[dragonborn]] barbarian born on the [[Seren]] Islands, who shares tales of mighty wyrms.
* Battle a [[dragon]] who guards a hidden vault.

Some say the mysterious dragons of Argonnessen
hide in plain sight, that shapechanged dragons scattered across [[Khorvaire]] pull the strings of civilization. According to some stories, the dragons seek to protect
the younger races from vile [[fiend]]s. In other tales, the
[[dragon]]s see the people of Khorvaire as fodder for
arcane experiments. A dragon could be encountered
as an ally or as a cruel enemy who casually crushes
[[humanoid]]s.

The magic of Argonnessen is far more powerful than
the forces wielded by the [[wizard]]s of [[Khorvaire]]. Many
of the greatest artifacts in history were made in Argonnessen. Dragons are infused with magic, and their creations are made from the bones and scales of their kind. 

!!! Trinkets from {{!!title}}

| !<<dr d10>> |!Trinket |
| 1 |A pierced [[dragon]] scale on a cord |
| 2 |A statuette of a dragon carved from black bone |
| 3 |A dragon's tooth, engraved with an unknown sigil |
| 4 |A child's doll of a dragon, woven from leather cords |
| 5 |A dagger carved from a dragon's talon |
| 6 |A brass disk bearing the silhouette of a [[black dragon]] |
| 7 |A small egg-shaped piece of polished bone |
| 8 |A bone fragment with brass inlaid runes |
| 9 |A leather pouch filled with tiny draconic teeth |
| 10 |A single large seed that's warm to the touch |
Once, the mighty forges of [[Sharn]] churned out new and amazing weapons
of war. With the help of [[Cannith]] makers and other
arcane crafters, the great forges crafted various types of
[[warforged]], powerful vehicles, and the wondrous moving
cities. Of these latter creations, only two remain active to
the current day. The most famous of these is Argonth, the
largest engine of war ever built.

Argonth, a massive structure that appears to be part
fortress, part cliffside, and part cityscape, floats above the
ground and slowly moves from place to place. The town
might be along the shore of [[Silver Lake]] one day and sliding
beside the [[Droaam]] border the next. The floating town was designed as a mobile fortress to help defend [[Breland]] during the [[Last War]]. Currently Argonth patrols the edge of the [[Mournland]], but if tensions rise with
[[Droaam]] or [[Darguun]], the fortress can be deployed to
reinforce a threatened border.

The Captain of Argonth is ''Alain ir’Ranek''. He leads the troops and support
personnel that make up Argonth’s citizenry. The mobile
fortress moves at a steady two miles per hour as it traces its
patrol route, but its speed can be increased to as much as
ten miles per hour when the need arises. The increased
speed requires a lot of power and puts a strain on the
fortress’s resources, and thus such speed is called upon
only in emergency situations.

The citizens of Argonth are all in the [[Breland]] military, and the town operates under military protocols. In
the past, it has served as a base of operations for enemy
engagements, as a support center for stationary castles,
and as an attack platform when Brelish troops crossed
into enemy territory. Now its role is to patrol and protect
Breland from raiders, marauders, and the potential threat
of hostile armies from neighboring nations or the wastes of the [[Mournland]]. 

Every few weeks, Argonth stops to take on supplies.
When this occurs, a market grows up around the town
where those nearby can come to trade and share news with
the soldiers harbored within the mobile fortress. Visitors
rarely receive permission to enter Argonth, so the next
best thing for them is to interact with the soldiers and
support personnel at a market festival.

Argonth has become home to a number of [[warforged]]
veterans who have pledged their swords to the [[Brelish|Breland]]
crown. Two of the more influential warforged are ''Big Bara'', who
commands a company of scouts known as Bara’s Breakers, and ''Finias Wandhand'', who never fought in the [[Last War]] but instead
became fascinated with the [[arcane|arcane magic]] arts. Currently, Finias
is under the tutelage of ''Eera ir'Jalon'' ([[human]] [[wizard]]), Argonth’s master of magic.
An armblade is a retractable magic weapon (any one-handed melee weapon) that attaches to the arm of a [[warforged]], becoming inseparable from them as long as they're attuned to it. 
<<list-links-article "[tag{!!title}sort[title]]">>
This set of tarnished iron plate armor is covered in intimidating yet beautiful detailing. Any blood spilled on this armor is absorbed, temporarily enhancing the wearer's strength.
This set of steel plate armor is lined with soft sheep's wool. A large sigil of a closed eye has been engraved on the breastplate. When struck, the armor emits a quiet crystalline tone, reminiscent of a small bell.

While worn, the user's concentration cannot be broken. 
This suit of rough grey leather armor is lined with heavy wolf fur. Once per day, the user can cast [[gaseous form]] on themselves. The effect persists for 1 hour or until the wearer chooses to end the effect.

<<<
{{gaseous form}}
<<<
This armor never gets dirty.
This consecrated silver plate armor protects the wearer from being possessed by [[ghost]]s or [[fiend]]s. The armor also gives off a strong holy aura that scalds [[Mabar]]an [[undead]] or [[fiend]]s that touch it.
This plate armor grants its wearer resistance against all nonmagical damage. In addition, you can activate this armor's magic to become immune to nonmagical damage for 10 minutes or until you are no longer wearing the armor. Once this power is used, it can't be used again until the next dawn.
While you wear this armor, you gain resistance to one type of damage (e.g. fire, lightning, necrotic) for 1 hour. The DM chooses the type or determines it randomly.
This set of leather armor is studded with heavy steel plates. Wax seals are scattered over the armor, dripping down the cuirass like blood. At will, the wearer can decide to take the damage from any hit landed on an ally within fifty feet.
This suit of heavy steel plate armor has the image of an eye engraved into the breastplate. If the wearer is incapacitated, the armor takes control, and will walk the wearer away from the battle to safety. While activated, the engraved eye darts back and forth, searching for danger.
This suit of black plate armor is etched with gold detailing. If the wearer dies, their soul is automatically sealed into the armor where it will remain until the body is [[revived|raise dead]], the soul is transferred to another vessel, or another person dies in the armor. Resurrecting someone wearing this armor is a much easier and safer affair than attempting to pull a soul back from [[Dolurrh]].
This set of peculiar leather armor is made from speckled-green snake skin. If you are able to channel [[primal magic]], you can cast [[polymorph]] on yourself to transform into a snake.
This set of glowing chainmail makes the wearer look slightly translucent. Long lengths of transparent silk drape from the user's shoulders, billowing elegantly in an unseen breeze.

While worn, this armor makes the wearer slightly incorporeal. Attacks have a chance of phasing through the wearer.
This set of silver armor is perpetually covered in a thin layer of frost. The wearer's skin becomes icy to the touch, and their breath is visible as a cloud of steam in the air. 

The wearer becomes nearly immune to extreme cold. The wearer can also freeze small bodies of water at will, and once per day, can cast a 60-foot cone of frost.

This armor is worn by powerful [[eladrin]] of [[Taer Syraen]].
This suit of green-hued half-plate armor allows the wearer to summon a double of themselves as a [[rare-tier|spell tier]] [[spell]]. The double will attack designated enemies until it suffers a mortal injury, or until one minute has passed, after which it will crumble away into dust. The double cannot speak, and its physical details seem slightly blurred.
This armor was once worn by Wultram Kraal, a [[Karrnath]]i soldier of great renown who died in battle near [[Thaliost]] several decades ago. His suit of beautifully articulated plate armor bears a magical echo of his dauntless spirit. The armor is designed for ease of movement over style, and a poorly-repaired gash is clearly visible on the gorget.

The armor grants a large advantage whenever the wearer rushes headlong into battle.
This [[mithral]] longsword is of [[Aereni|Aerenal]] design, bearing script along the blade that reads "arelind", an [[elven|elf]] word that means "ally" or "champion of the people". These blades are often gifts given by elven [[wizard]]s to non-elven allies of great esteem.

This fine blade sheds dim light when unsheathed. In addition, the wielder can speak, read, and write the Elvish language as long as the sword is on their person.
Gain advantage when blocking attacks from projectiles, including when attempting to defend allies. Projectiles curve towards the shield when you will the shield to attract them.
One of [[Upper Menthis]]' four theaters, the Art Temple is famous for cutting-edge,
avant-garde plays. It has no resident playwright;
instead, the theater solicits submissions from across
[[Khorvaire]], though residents of [[Sharn]] pen most of
its productions. The theater's owner, Cassa Faer
([[elf]]), prides herself on discovering new talent, but she definitely gives preferential
treatment to her personal acquaintances, and tends
to become romantically involved with each new
playwright whose play she produces.
Masters of unlocking magic in everyday objects, artificers are supreme inventors. They see magic as a complex system waiting to be decoded and controlled. Artificers use tools to channel arcane power, crafting magical objects. To cast a spell, an artificer could use [[alchemist]]'s supplies to create a potent elixir, calligrapher's supplies to inscribe a sigil of power on an ally's armor, or tinker's tools to craft a temporary charm. The magic of artificers is tied to their tools and their talents. 

!! Arcane Science

In the world of Eberron, arcane magic has been harnessed as a form of science and deployed throughout
society. Artificers reflect this development. Their knowledge of magical devices, and their ability to infuse mundane items with magic, allows [[Eberron]]'s most miraculous projects to continue.

During the [[Last War]], artificers were marshaled on a
massive scale. Many lives were saved because of the inventions of brave artificers, but countless lives were also
lost because of the mass destruction unleashed by their
creations. 

!! Seekers of New Lore

Nothing excites an artificer quite like uncovering a new
metal or discovering a source of elemental energy. In
artificer circles, new inventions and strange discoveries
create the most excitement; for example, the magical artificial intelligences that [[archivist]]s work with have made quite a stir in the last few years. Artificers who wish to make their mark must innovate, creating something fresh,
rather than iterating on familiar designs.

This drive for novelty pushes artificers to become adventurers. Eberron's main travel routes and populated
regions have long since been explored. Thus, artificers
seek the frontiers of civilization in hopes of making the
next great discovery in arcane research. 
This hammer has 2 charges. While holding it, you can expend a charge and cast the [[mending]] spell from it. The hammer regains all expended charges daily at
dawn. 
Through sheer luck or divine will, the [[Thrane]] city of Aruldusk escaped the [[Last War]] relatively unscathed, even as cities and towns were destroyed around it. Thanks to its good fortune, the once small town exploded in growth, becoming a vibrant city. Commerce and visitors come by way of the [[lightning rail]] passing through the city, or along one of the three caravan routes converging there. Aruldusk caters to travelers and adventurers and features shops, inns, and restaurants that bring gold into the community
! The Gateway

''Color:'' Orange-red<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Passage|Mark of Passage]]<br/>
''Associated Plane:'' [[Dolurrh]]

The [[dragon]] [[Vvaraak]] told the first [[druid]]s that Aryth has a similar effect on [[manifest zone]]s as [[Zarantyr]] has on tides, and that particularly weak manifest zones appear only when Aryth is in its full moon phase. Some say that those born under this moon are restless folk, driven to travel and explore; [[Lhazaar]], who led the first great migration from [[Sarlona]] to [[Khorvaire]], is said to have been a child of Aryth.
''Date: '' [[1 Sypheros|Khorvaire calendar]]

The Church of the [[Silver Flame]] was born from the sacrifice of [[Tira Miron]], who gave her life to serve as the Voice of the Silver Flame. On 1 Sypheros, members of the church
gather to reaffirm their faith and to give thanks to
Tira for her holy gift. Over the course of the day,
followers of the Flame attend a blessing ceremony;
the grandest ceremony in [[Sharn]] occurs at the [[Cathedral of the Cleansing Flame]] (in the [[Sovereign Towers]] district of [[Middle Central]]), but the faithful pray at all of the
city's temples. In addition to attending the ceremony and sermon, the faithful seek ways to contribute to their community on Ascension Day.
The Ash Beacon is a massive active volcano in the northern portion of the [[Demon Wastes]]. The volcano and the surrounding area are rich with [[narstone]] deposits, but the northern Wastes are perhaps the most dangerous region in all of [[Khorvaire]]; even the [[Ghaash'kala]] avoid this land.
''District Type: ''Industry district<br/>
''Buildings:'' Temple ([[Onatar]]), shrine (the [[Traveler]]),
poor lodging (2), poor food (7), poor trades (60),
poor services (30)<br/>
''First Impression:'' The air is filled with the smell of
smoke and sulfur, and the walls are covered with ash.
The constant rumble of the forges and foundries
shakes your feet and makes conversation difficult.<br/>
''Social Class:'' Lower class

Ashblack stretches out from [[Dura]] toward the center
of the city. In general, the businesses all operate on
a large scale, processing loads of ore and other
raw materials, they will have little business here.
However, there are a few points of interest. 

!! Noteworthy Locations

* The [[Cannith Forgehold]]. This subterranean fortress of House [[Cannith]] includes a wide range of forges, alchemical workshops, and mystical facilities.
* [[Keldoran Forge]]. Though most of the foundries in the Cogs are devoted to large-scale industry, the [[dwarf]] Antos Keldoran maintains a small forge and produces bespoke arms and armor.
//We, the Ashbound, are the champions of the natural world. We defend it from anything and anyone who threatens it. //

The Ashbound defend the natural world from anything
that threatens it. Some Ashbound consider civilization
to be a threat and strike at any settlement that encroaches on the wild. Others focus their wrath on the
[[dragonmarked house]]s or seek to free bound [[elemental]]s. 
The Ashen Spires in [[Karrnath]] rise in the heart of [[Karrnath]] between the [[Karrnwood]] and the [[Nightwood]]. They form something of a natural boundary between the eastern countryside and the western metropolitan region of the nation.
If the wretched land of the [[Demon Wastes]] has a capital, it is Ashtakala, the last citadel of the [[Lords of Dust]]. Surrounded by a permanent storm of sand and [[demonglass]] and shielded from all forms of [[divinatory magic|divination]], this metropolis of
basalt and brass has stood since the [[Age of Demons]]. Unlike the other ruins dotting the countryside, Ashtakala seems alive at first glance—home to innumerable [[demon]]s, [[rakshasa]]s, and other [[fiend]]s. In truth, it is all an illusion, maintained by the eldritch power that raised the city at the dawn of the world.

Visions of the past are brought to life here by dark magic. Within the illusion, a small association of rakshasas and other servants of the overlords convene here as the [[Bleak Congress]], hatching wicked plots and forging plans to conquer the world.

All [[Eberron]]-native [[fiend]]s return to Ashtakala eventually, sometimes spending centuries in its cold embrace, to remind themselves of the glory that was once theirs. The illusion comforts them with images of the [[Age of Demons]], but it also
fuels their hatred for the [[dragon]]s who tore down their era
and left only these ruins for the rakshasas to occupy.

Visitors who survive the glass storm find the power that preserves the image of Ashtakala transforms anyone who enters the city; characters find their clothing and equipment altered to match the archaic fashions of the city. 
However, explorers who spend too much time in this
place are corrupted, taking on demonic forms as the
city claims them body and soul.

!! Living Embodiment of a City of Fiends

Ashtakala was never constructed. It came into the world at the beginning of the [[Age of Demons]] when the [[overlord]]s emerged from [[Khyber]] and shaped the world to their whims. In fact, Ashtakala is not only a city: it is itself an [[overlord]]. Never fully bound by the [[Silver Flame]], this ancient archfiend is the living embodiment of a demon city, its heart [[demiplane]] projecting into the Material Plane and shaping the [[Demon Wastes]] into the twisted region it has been for a hundred thousand years.

When [[humanoid]]s enter the city, they are slowly digested and transformed, beginning with illusory fashion and culminating in fiendish mutation. They are not instantly killed simply because immortal Ashtakala does not consider such low creatures to be a threat; indeed, it hardly registers their presence. If the hazards of the nightmare city claim them, or if the lesser [[fiend]]s choose to capture them, torture them, or extract their souls, then so be it. But the city itself does not take notice.

But woe betide those whom Ashtakala does notice. During the [[Age of Giants]], the [[dragon]]s of the [[Light of Siberys]] descended upon the [[Demon Wastes]]. They laid waste to it, destroying a [[humanoid]] civilization that predates the [[Carrion Tribes]]. But as the [[dragon]]s drew near to the demon city, their souls were ripped from their bodies and they turned on their allies. When they were wounded, dust spilled out instead of blood. The attacking force was almost entirely wiped out, but the [[fiend]]s that were slain simply reformed. The [[dragon]]s have shunned the region ever since; while they know Ashtakala is an asset for the [[Lords of Dust]], they don’t have the power to destroy it, and its influence has stayed confined to the Wastes since it was trapped in place by the wards of the [[Labyrinth]].

Ashtakala allows the [[Lords of Dust]] to dwell within it, but it doesn’t cater to their whims or help them with their schemes. Ashtakala simply doesn’t care that the other [[overlord]]s are imprisoned. Ashtakala simply //is//. It expresses itself by creating and maintaining the [[Demon Wastes]]. It is doing what that gives its existence meaning. The illusory servitors are [[manifestation]]s of the city's [[demiplane]]; they are literally extensions of the city, serving no purpose other than to maintain it. They can’t be recruited to serve the schemes of the [[Lords of Dust]] because they literally don’t exist independently of Ashtakala.

That said, Ashtakala is the perfect haven for the [[Lords of Dust]]. It is shielded from hostile magic and their greatest enemies cannot even approach it. They don’t need to maintain it—no one repairs the masonry, or fixes the sewers, or touches up the paint—because the entire city is a concept, and it maintains itself. It provides them with invaluable resources, such as the Library, which is filled with ancient tomes dating back to the [[Age of Demons]]—memories in the mind of the Demon City.

At first glance, an asperi appears to be nothing more than an
unusually beautiful horse. An individual asperi can be
white, gray, or dun-colored, with a graceful, flowing mane of
silver, white, or light gray. A secondary mane of the same
shade as the first extends from the creature’s front shoulders
down along the backs of its front legs.

Unlike typical horses, asperis are intelligent and telepathic magical
beasts. They live in the remote mountain peaks of [[Adar]], where they gallop across the peaks and through the frigid skies. By catching prevailing winds and flying with
them, asperis can move even faster through the skies than
their normal flying speed permits. Their ability to “ride the
wind” in this way has earned them the common name of
//wind steeds//.

These intelligent and gentle creatures ride the winds
of [[Adar]] easily, and they just as easily bear riders across
the trackless peaks. [[Kalashtar|kalashtar]] have a special bond with
asperis, since both races are telepathic, and asperis visit
or live as allies or citizens in Adar's larger settlements
and monastery-fortresses.
A creature that ingests this poison and can't resist its effects suffers poison damage and is poisoned for 24 hours. 
The Assembly is the [[barony]] of the [[Forge Maiden]]. Here,
innovation is celebrated, and any [[artificer]] abilities are enhanced here. But while there are a few stories of how things go well, there are many where inventions go terribly
wrong: the [[construct]] [[dragon]] that has claimed the workshop
and gathered a hoard; the labyrinth the Maiden designed so
well that she became lost in it; the [[time stop]] spell that can't
be undone. Wondrous (and impossible) artifacts can be found
here, but so can many dangers.
One of several “escort
services” providing companionship to visiting diplomats in Ambassador Towers as well as well-to-do
clients in all of [[Sharn]]'s best neighborhoods, Athania's Companions is unique in at least one respect: it is also a spy ring in the business of collecting,
cataloging, and selling secrets. [[Athania]] runs both businesses. The fact that
she is a [[dragonmark]]ed heir of House [[Phiarlan]] is her
own best-kept secret; not even the majority of her
employees are aware of her family connection. The
escorts of Athania's are women and men of beauty
and intelligence, trained in the arts of conversation, seduction, and deception. After spending time
with a client, they prepare an intelligence report
for Athania, who finds interested buyers for any
significant items. Some secrets she keeps to herself,
holding them in reserve to use as leverage when her
cover is finally broken.
The Atrium, a recital hall in
Kashik Tower, features an acoustically resonant
open performance space with seating for about 300.
For performers on the move in Menthis's entertainment scene, the Atrium is a definite step up from
most of the dinner theaters in the district, and many
of its performers are only a few years away from
being ready for the [[Kavarrah Concert Hall]].
Known as the City of Night, Atur stands in the shadow of the
[[Ashen Spires]], cloaked in mist from the [[Karrn Falls|Karrn River]]. For all but a few hours each day, Atur lies shrouded in gloom, a nearly perpetual twilight that gives the
city its moniker. Oddly, during the day’s brightest
times, the city is quiet, seemingly deserted. Only at
night does Atur come fully to life.

This atmosphere suits the people. At night, they
frolic in fest halls and taverns, sampling the forbidden
delights of Atur’s infamous bordellos. Even King [[Kaius|Kaius ir'Wynarn III]]
is not immune to the city’s allure, and he finds refuge
in Nighthold, a royal complex where he sometimes
holds court.

Beneath the hustle and bustle of this curious community lie the Vaults of the Dead, where [[Karrnath]]’s [[undead|Karrnathi undead]] legions await the day when war rages anew.
Overlooking the city is the huge [[Crimson Monastery]],
one of the greatest bastions of the [[Blood of Vol]] in the
nation.
This shop, located in the section
of [[Clifftop]] known as the mystic market, features a
circle of [[magewright]]s who possess the ability to cast
[[divinatory|divination]] spells.

The master [[magewright]] of The Augury is a 334-year-old elf named [[Kestia]]. A child of House [[Phiarlan]], Kestia was expelled
from the house after she developed an [[aberrant dragonmark]]. However, her mystical powers exceed
even the [[wizard]]s of the [[Esoteric Order of Aureon]].

The Augury cuts into the profits of a number of the
[[dragonmarked house]]s, notably [[Tharashk]], [[Sivis]], and
[[Kundarak]]. Some believe that [[Kestia]] uses blackmail
to protect herself from the retribution of the houses,
while others say that she appeases the houses with
a share of her profits. She has refused to join the
[[Esoteric Order of Aureon]] or the [[Guild of Starlight and Shadows]], preferring to remain independent. 
By casting gem-inlaid sticks, rolling dragon bones, laying out ornate cards, or employing some other divining tool, you receive an omen from an otherworldly entity about the results of a specific course of action that you plan to take within the next 30 minutes. The DM chooses from the following possible omens:

* ''Weal'', for good results
* ''Woe'', for bad results
* Weal and woe, for both good and bad results
* Nothing, for results that aren't especially good or bad

The spell doesn't take into account any possible circumstances that might change the outcome, such as the casting of additional spells or the loss or gain of a companion.

If you cast the spell two or more times before completing your next long rest, there is a cumulative 25 percent chance for each casting after the first that you get a random reading (<<dr 1d4>>, where 1=Weal, etc). The DM makes this roll in secret.
''Capital:'' [[Fairhaven]]<br/>
''Hallmarks:'' Cheese, education, fashion, grains, wine, wizardry

Fertile farmlands surround the grand cities of Aundair.
The floating towers of [[Arcanix]] are the finest institute
for mystical study in [[Khorvaire]], and magic is deeply
ingrained in Aundairian culture. The nation produces
more [[magewright]]s and [[wandslinger]]s than any other in
Khorvaire.

From the nobles lounging in the towers of [[Fairhaven]]
to the common folk working the vast vineyards of [[Bluevine]], Aundairians value wit and wisdom. Aundairians
prefer finesse to brute force and appreciate cunning
wordplay and fine fashions. The [[Sovereign Host]] is the
dominant faith of Aundair, with a particular devotion to
[[Aureon]]. However, the [[Silver Flame]] also maintains a devoted following—some might say overzealous.

Although Aundair is a small nation, its arcane superiority allowed it retain its dominion during the [[Last War]]. The people of Aundair know that knowledge is
power, and they take pride in their nation's magical advancements. To ensure her nation's prosperity and dominance, Queen [[Aurala ir'Wynarn]] instituted the Arcane Initiative, an aggressive series of programs intended to
forward the development of mystical infrastructure and
battle magic.

!! Interesting Things About {{!!title}}

* [[Arcanix]] is the most prestigious academy of magic in Khorvaire. Most of its sages specialize in ritual magic and abstract theory, and don't have the full powers of wizards.
* Magic permeates many aspects of Aundairian life—more so than other nations. A [[cleansing stone]] graces every village, and you might encounter animated farming equipment in the fields. The [[Knights Arcane]] are an elite unit of eldritch knights, and the spies of the [[Royal Eyes]] of Aundair specialize in [[divination]] magic.
* Some Aundairian nobles are bound by arcane pacts handed down through generations. Only remarkable heirs—such as player characters—develop into [[warlock]]s. Most such lines have an [[archfey]] patron. 

!! Aundarian Characters

Regardless of your intelligence, as an Aundairian you're sure you're the smartest person in the room. Consider the following characteristics for your Aundairian: 

* ''Arcane Talent.'' If you're not going to play a magic-using class, consider creating a high elf or a human with the Magic Initiate feat. Whether you favor damage-dealing [[cantrip|spell]]s or more utilitarian ones, every Aundairian should know a little magic.
* ''Magic Beats Mundane.'' Why use your hand when you could use mage hand? Why strain your muscles tugging on a bowstring when you could use a wand?
* ''Show Some Style.'' Don't settle for common clothes and a squalid meal when you could wear [[glamerweave]] and drink the finest wine. If you're a fighter, focus on finesse instead of crude strength. And never miss an opportunity for a clever quip. 

!! Cities and Sites

Aundair intersperses pastoral farmlands between densely populated cities. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

Aundair and [[Thrane]] were bitter rivals during the [[Last War]]. Thrane seized the ancient city of [[Thaliost]] during the war and holds it to this day. Most of the people of
Aundair remain furious about the occupation of Thaliost, but the city has become a haven for Aundairians
who revere the [[Silver Flame]].

The [[Eldeen Reaches]] seceded from Aundair halfway
through the Last War. The western farmers rebelled over high taxes and neglect, allying with the [[druid]]s of the Towering Wood. Aundair was forced to accept the sovereignty of the Reaches under the terms of the [[Treaty of Thronehold]], but many Aundairians view it as a renegade nation.

Extensive use of magic has repaired most of the damage to the cities of Aundair, but the countryside remains scarred by the war, especially along the border with
Thrane. The [[Crying Fields]] are a region of farmlands
permanently scarred by magic and haunted by restless
spirits. Aundairians claim their nation is stronger than
ever, but some worry about the long-term impact of the
loss of the Eldeen farmlands and the Crying Fields.

Now, Aundairians debate over differing views of their
nation's future. Some believe the first focus should be
reuniting Aundair and the Eldeen Reaches, whether
through diplomacy or force. Others consider Thaliost
to be the pressing issue. And still others support Queen
Aurala's claim to the throne of [[Galifar]]. When creating
an Aundairian, consider whether you have ties to any of
the affected regions and if this influences your opinion
of Thranes or druids. 
During the [[Last War]], the battles between [[Aundair]]
and [[Breland]] left deep scars on both lands. But while
fierce, these conflicts were brief, and by the close of
the war the two nations were strong allies. Today,
Alais and Helais ir'Lantar, sons of one of the noble [[Khoravar|half-elf]]
families of Aundair, serve the interests of their nation
in [[Sharn]]. Alais and Helais are identical twin brothers, and both are remarkably handsome and urbane; they are quite popular at galas and other social events.
While both brothers are officially ambassadors, each
performs different duties. Alais ir’Lantar deals with the administrative
drudgery, while Helais handles the deeper diplomacy
and intrigue. Why? Because Helais is not simply an
ambassador—he is one of the [[Royal Eyes]] of [[Aundair]],
a trusted agent who serves as Queen [[Aurala|Aurala ir'Wynarn]]’s eyes and
ears in [[Sharn]]. But Queen Aurala has been betrayed,
and her misplaced trust may spell disaster in the
future. His role as master of spies is the least of Helais’s
secrets. The dark truth is that there is only one
ir’Lantar brother. The ir’Lantar family has served
the [[Lords of Dust]] for many generations, and Helais
ir’Lantar is actually a guise used by the two [[rakshasa]]s
of Sharn, [[Zathara]] and [[Nethatar]]. 

Alais is well aware of his brother’s true nature.
He is a cruel, conniving man who enjoys assisting
the [[Lords of Dust]] with their schemes. In addition
to the power he gains from the alliance, Alais feels
that his connection to the [[rakshasa]]s puts him above
mere mortals; he suffers from the delusion that if
he serves the Lords faithfully, he may one day be
transformed into a rakshasa himself.

Usually, one of the two rakshasa poses as Helais,
while the other is disguised in a different form
elsewhere in the city. However, as Alais and Helais
are identical twins, this allows for a host of possibilities. If necessary, the two rakshasa can appear as Alais and Helais; at other times, Alais poses as
his brother. Alais wears a [[ring of mind shielding]] and the
Lords of Dust possess amulets that mask their fiendish aura, so it is
extremely difficult to pierce these deceptions.
A sprawling villa just outside [[Fairhaven]], [[Cannith]]’s
[[enclave]] in [[Aundair]] is home to [[Jorlanna d'Cannith]]. This enclave has almost as
many libraries and map rooms as it does laboratories and workshops. Under particular study are some rare plants and ancient treasures
brought back from the [[Eldeen Reaches]]—the result of
Jorlanna’s influence with the [[druid]]s of the [[Wardens of the Wood]].
The Aundair River in [[Khorvaire]] flows from the hills near [[Fairhaven]] into [[Scions Sound]]. It forms part of the border between [[Aundair]] and [[Thrane]].
You create an invisible sphere of energy with a 5-foot radius.
Until the spell ends (up to 1 minute later, or when you break concentration), it moves with you, centered on you. The sphere muffles sound in both directions. 

In addition, creatures have advantage against effects that require them to hear a sound from the other side of the sphere, such as the [[command]] spell.
The current ruler of [[Aundair]], Queen Aurala ir’Wynarn, traces her lineage to [[Wrogar ir'Wynarn]], the first king of an independent Aundair and
one of the heirs to the [[Galifar]] kingdom. Ruling Aundair
since 980 YK, Aurala was among the signers of the [[Treaty of Thronehold]]. She married a young noble of House [[Vadalis]] named [[Sasik|Sasik d'Vadalis]], who gave up his position in his family to become part of Aundair’s royal aristocracy. Despite this, he maintains
close ties to his family (including his brother [[Dalin|Dalin d'Vadalis]], the House
baron), which sometimes leads the other [[dragonmarked house]]s to see favoritism toward Vadalis where it may not actually exist. In fact, Aurala goes out of her way to make sure House Vadalis doesn’t receive any special treatment from the
Aundairian crown or its vassals.

Aurala’s secret ambition is to quietly use the peace
to build up [[Aundair]]’s strength, so that when the time is
right she can make her move and claim the [[Galifar]] crown
for her own. As she holds out her right hand in peace, she
directs the machines of war with her left.

!! Aundair Royal Family

Aundair’s royal family consists of Queen Aurala, her consort [[Sasik|Sasik d'Vadalis]], her three children, and the extended families of her four siblings. Aurala’s brother
[[Adal|Adal ir'Wynarn]] serves as her warlord and minister of magic, and he shares her desire
to see the Galifar crown on the head of an Aundair lord.
He wants that head to be his, though, and not his sister’s.
Another brother, Aurad, serves as Aurala’s chief advisor and governor of [[Fairhaven]].
Her youngest sisters, the twins Wrel and Wrey, currently
study with the mages of [[Arcanix]]. From the royal court
of [[Fairhold]], built at the heart of the city of Fairhaven,
Aurala governs the land using everything at her disposal. 
Aureon is the Sovereign of Law and Lore. He is considered the first [[wizard]], who shared the secrets of wizardry with the world. His symbols include an open tome or a [[blue dragon]].
''Date: '' [[26 Dravago|Khorvaire calendar]]

The [[Five Nations]] observe this festival of [[Aureon]]. It is a celebration of knowledge, when the elders of the community share their wisdom with the young at evening
feasts. Throughout the day, priests of Aureon in [[Sharn]] gather
at the [[Great Hall of Aureon]] in the [[University District]] in [[Upper Menthis]], providing sermons and lectures on a host of topics, from history to philosophy
and the nature of the gods.

Like many of the holy days of the [[Sovereign Host]],
Aureon's Crown has become a secular holiday that
does not require any particular religious devotion.
Aureon's Crown is the traditional time for students
to graduate or advance, and this is true even at the
monastic schools of the [[Silver Flame]]. 
Aurora Gallery is a unique
establishment in [[Sharn]]: a [[magic item]] auction house.
Items worth as much as 26000c market price can
sometimes (20% chance) be found at Aurora Gallery.
When buying items at auction, characters should
expect to pay between 80% and 140% (<<dr "2d4+6">> × 10%)
of normal market price. Aurora Gallery buys goods
at the normal rate (50% of market price), and buys
items worth up to 26000c. They do not usually
buy or sell charged items, but exceptions have been
made in the past.
On the surface, the Aurum appears to be an exclusive
society for the richest and most influential people of
[[Khorvaire]]. Merchants, priests, military officers, and
other luminaries gather for grand galas and salons. Beneath this gilded veneer, the members of the Aurum use
their shared wealth and power to pursue their selfish
goals, and a secret cabal at the heart of this fraternity
dreams of global domination.

The Aurum is divided into four suborders called Concords—copper, silver, gold, and platinum, in order of ascendance. Higher rank provides a member with improved access to the resources of the Aurum and a greater voice in society meetings. The Aurum isn't a secret society, and its meeting halls can be found in most major cities. Many powerful people openly wear the eight rings—one on each finger, with the metal
indicating the rank of the wearer—that label them as
Aurum members. The Aurum frequently engages in acts
of philanthropy, and thus some members might be celebrated by their local communities.

When members gather, they discuss shared interests,
especially in history and archaeology. Aurum members
often take an interest in a particular civilization or era
of history; one Concordian collects relics of the [[Cul'sir]]
[[giant]]s of [[Xen'drik]], while another pursues artifacts of
the [[dragon]]s of [[Argonnessen]]. One of the most common
ways in which adventurers cross paths with the Aurum
is through these collectors. Members of the Aurum
often fund expeditions to exotic lands or newly discovered ruins, interested in expanding their private hoards.
Occasionally a Concordian tries to acquire prized relics
through less honorable means; adventurers could be
employed to acquire an exotic prize from a rival through
any means necessary, legal or otherwise.

All of these activities are entirely legitimate. The
Aurum is a society for wealthy scholars and philanthropists. But there is a secret order that ranks higher than
the Platinum Concord—an inner circle known as the
Shadow Cabinet. The members of this cabal are nobles
but not kings; they are powerful industrialists, but not
[[dragonmarked|dragonmarked house]] barons. They are determined to become
the true rulers of [[Khorvaire]], whether by binding the
current barons and monarchs to their will or by tearing
down the current systems and creating something new.

In stories driven by action, the Aurum can fund expeditions to exotic lands and use magical doomsday devices to hold cities for ransom. In adventures driven by
intrigue, the Aurum provides an opportunity to explore
the lure of gold, and how far the characters might go in
the service of an amoral patron. 

!! The Aurum and the War

The [[Last War]] gave birth to the Shadow Cabinet. The
war ignited the passions of Concordians who blamed
the monarchs of the [[Five Nations]] for the vast devastation and loss. It also created opportunities that never
existed under the united [[Galifar]]. Many of the members
of the Aurum gained influence by bankrolling one or
more war efforts, or by stepping in to maintain the infrastructure while the government directed its attention to
military matters. The Aurum also includes a number of
powerful military officers and warlords. Some despise
the nobles that drove them to war; others are furious
that the war ended without a decisive victory. Either
way, these can provide the Shadow Cabinet with unexpected military power.

Now, amid the war's cooling ashes, the Aurum's
power is fragmented. On several occasions, investments
and gambles that paid dividends in money and power to
one Concordian sapped the fortune of another, because
each was unknowingly working against the other's interests. Huge collections of art, historical artifacts, and precious tomes were destroyed or lost during the war, and
the Aurum's leaders salivate at the thought of recovering
some of those riches. 

!! Aurum NPCs

Aurum Concordians are defined by their wealth and
power. When you create an Aurum NPC, consider the
source of that person's wealth and how it is expressed.
The [[dwarf]] [[Antus ir'Soldorak]] is chancellor of the Platinum Concord and founder of the Shadow Cabinet.
He owns vast gold and silver mines in the [[Mror Holds]]
and mints his own currency, and he travels in a gilded
airship. [[Loyal Daison]] is a [[Karrnath]]i slumlord who has
made a fortune providing low-rent (and low-quality)
housing for refugees. He lost his hand in an industrial
accident and had it replaced with a golden prosthetic.

Members of the Aurum become villains if their quest
for greater influence, personal power, and wealth victimizes the innocent. Whether villains or allies, all Concordians wield significant political influence. They have
access to minions and resources in the higher levels of
society. They prefer to pursue schemes of coercion and
conspiracy, putting their money and influence to work,
than resort to blatant violence in any form.

| !<<dr d4>> |!Aurum NPC |
| 1 |An aging dwarf—a retired general and an Aurum Concordian—collects unusual [[construct]]s, hoping to find a way to transfer his mind into a superior body. |
| 2 |An Aurum Concordian is renowned for having the finest arcane library in [[Khorvaire]]. Adventurers might help them collect more tome, but when a number of prominent [[wizard]]s are murdered and their research goes missing, is the Concordian to blame? |
| 3 |A member of the Gold Concord is on the run from the Aurum after learning a terrible secret. |
| 4 |An imprisoned Concordian mobilizes a network of contacts and well-placed Aurum members in order to secure their own release. |
The Twister of Roots devotes its attentions to
plants. Avassh is said to be the source of [[shambling mound]]s and [[myconid]]s, but any unnatural and deadly vegetation might be its work.
Under the [[Sea of Rage]] live the aventi, survivors of a magical cataclysm that sank the ancient [[Sarlona]]n island realm of Aventus. That disaster might explain the turmoil in the Sea of Rage. A [[part of Aventus|Aventus Islands]] remains above the waves in the form of a horseshoe-shaped island and a smaller island to the north. [[Riedra]] controls those isles, and the aventi have little love for the nation of Sarlona.

Aventi are little different from humans in appearance. Aventi
coloration tends toward very pale, almost bluish skin to a
lighter tan, with blue and green eyes and hair that ranges
between a light brown to a very pale blonde. The calves
and forearms of aventi feature small swimming fins that
fold almost flat when the aventi leaves the water.

Aventi have small settlements across the [[Sea of Rage]] and are sometimes seen in the [[Syrk|Syrkarn]] port of [[Ardhmen]]. 
The Aventus Islands off the coast of the [[Riedra]] in [[Sarlona]] are considered part of the [[Rhiavhaar]] province, though they were once part of the kingdom of [[Khunan]] centuries ago. They serve as a staging area for the [[Harmonious Sail]] in the [[Sea of Rage]]. 

The islands hold ruins of the lost [[aventi]] nation, but the [[Riedrans]] shun these areas. Aventus is the common name for a land thought to be
called "Aventuu'siana," though debate ensues as to whether
this name refers to the nation or its legendary [[sorcerer]]-kings. Thought
to be the descendants of Aventus, [[aventi]] have an oral history
that tells the story of a kingdom brought down by unnatural
devastation, then swallowed by the sea.
Casting this spell (which takes at least eight hours of concentration) on a beast or plant grants the target magical intelligence and sapience. The target also gains the ability to speak one language you know. If the target is a plant, it gains the ability to move its limbs, roots, vines, creepers, and so forth, and it gains senses similar to a human's. 

The awakened beast or plant is [[charm]]ed by you for 30 days or until you or your companions do anything harmful to it. When the charmed condition ends, the awakened creature chooses whether to remain friendly to you, based on how you treated it while it was charmed.
An axe beak is a tall flightless bird with strong legs and a heavy, wedge-shaped beak. It has a nasty disposition and tends to attack any unfamiliar creature that wanders too close.
Natives of [[Fernia]], azers are master crafters and expert miners. In appearance and manner, an azer resembles a [[dwarf]], but this is a facade. Beneath its metallic looking skin, an azer is a being of fire, which outwardly manifests in its fiery hair and beard. 

The [[dao]] craft azers from bronze and bring them to life using the primordial spark of [[Fernia]]. They are tireless laborers who love working with fire and metals. Dao may
create the greatest wonders, but the azers do remarkable
work—and far more of it. Azer are naturally gifted artisans,
and can be assigned to any sort of task that involves fire.
However, there are few things more miserable than an azer
baking bread instead of working with brass.
Sultan Azhalar of High Hearth stands at the top of the social
order in the [[City of Brass]]. He has assembled the grandest armies and enjoys
displays of martial might, including exotic engines of war. His
galas often involve gladiatorial matches or grand war games.
The Azure Bay lies off the coast of the [[Shadow Marches]] and [[Droaam]].
One of the fabulous
restaurants offering stunning views and exquisite
meals, the Azure Gateway is not as well known as the
[[Celestial Vista]], but it is rarely as crowded as a result.
The menu is exotic, offering delights from [[Thrane]]
(including fine steaks), [[Karrnath]] (such as their
famous breaded veal as well as traditional sausage
dishes), and [[Aundair]] (including noodles and meats
in tomato- and oil-based sauces). The interesting
thing about the Azure Gateway is that no one knows
the identity of its owner. He or she is said to dine
in the restaurant on a regular basis but remains
completely anonymous. Some people speculate that
the owner is a [[changeling]] or some other shapechanger. The maitre d'hotel, an aristocratic [[half-elf]] named Ravvan Mollac smiles at these rumors, for he actually owns the restaurant. He takes great delight in seating customers who spend their entire meal staring around the restaurant trying to pick out the owner.
Lord Baalnakosh of the [[Bountiful Horn]] ([[hashalaq]] [[Inspired]] [[psion]]) rules [[Dar Myan]] and oversees its important functions. 

The central fortress of Dar Myan houses the living quarters of Lord Baalnakosh and his staff. Within the compound are facilities for all the needs of the [[Inspired]] ruler, as well as a [[monolith|hanbalani alta]] for his personal use. Baalnakosh's palace is kept comfortable throughout the year by the power of the monolith, but the hashalaq sometimes uses the hanbalan for other purposes.
After rolling dice, if your highest die is a 1-3, it's a bad outcome or "failure". Things go poorly. You probably don't achieve your goal and also suffer [[consequence]]s.
This is a sturdy leather sack with tiny [[Siberys shards|dragonshard]] embedded into the lining. A person with the [[Mark of Hospitality]] can magically draw a feast from within the bag. You shape this meal with your thoughts. You can create the standard bland food and water without requiring any sort of roll, but you can attempt to create finer fare; if you're proficient as a chef, gain an advantage on this attempt. A failed attempt results in a sour and squalid meal.

A //bag of bounty// can be used up to three times over the course of a day. After that, the bag can't be used again until the next dawn.
This bag superficially resembles a [[bag of holding]] but is a feeding orifice for a gigantic extradimensional creature. Turning the bag inside out closes the orifice.

The extradimensional creature attached to the bag can sense whatever is placed inside the bag. Animal or vegetable matter placed wholly in the bag is devoured and lost forever. When part of a living creature is placed in the bag, as happens when someone reaches inside it, there is a chance that the creature is pulled inside the bag. A creature inside the bag can try to escape, or another creature can reach into the bag to pull a creature out. After only a few moments, a creature inside the bag is devoured, its body destroyed.

Inanimate objects can be stored in the bag, which can hold a cubic foot of such material. However, once each day, the bag swallows any objects inside it and spits them out into another [[plane]] of existence. The DM determines the time and plane.

If the bag is pierced or torn, it is destroyed, and anything contained within it is lost to the space between planes.
This bag has an interior space considerably larger than its outside dimensions, roughly 2 feet in diameter at the mouth and 4 feet deep. The bag can hold up to 500 pounds, not exceeding a volume of 64 cubic feet. The bag weighs 15 pounds, regardless of its contents. Retrieving an item from the bag requires some time to shuffle around and find what you're looking for.

If the bag is overloaded, pierced, or torn, it ruptures and is destroyed, and its contents are scattered in the cosmos. If the bag is turned inside out, its contents spill forth, unharmed, but the bag must be put right before it can be used again. Breathing creatures inside the bag will begin to suffocate after a few minutes.

Placing a bag of holding inside an extradimensional space created by a [[handy haversack]], [[portable hole]], or similar item instantly destroys both items.
When you reach into this bag, you pull out a random object as determined by the button below. An object lasts for <<dr 1d4>> half-hours after you remove it from the bag, or until it is destroyed by force, after which point it disappears into smoke. You can pull out three objects per day.

<$button>
<$action-chooserandom $dataTiddler="BagOfSurprisesTable" $field="var" $unique="true" $number="3" $opt="hashes"/>
3 Random Objects
</$button>

<<<
''Objects: ''
<$vars v1={{{[{!!var}split[###]nth[1]]}}} v2={{{[{!!var}split[###]nth[2]]}}} v3={{{[{!!var}split[###]nth[3]]}}}>

# <<v1>>
# <<v2>>
# <<v3>>

</$vars>
<<<
This ordinary bag, made from gray, rust, or tan cloth, appears empty. Reaching inside the bag, however, reveals the presence of a small, fuzzy object. The bag weighs 1/2 pound.

You can pull the fuzzy object from the bag and throw it up to 20 feet. When the object lands, it transforms into a randomly-determined beast. The creature vanishes at the next dawn or when it is incapacitated.

The creature is friendly to you and your companions, and it acts on your turn. You can command how the creature moves and acts, or to give it general orders, such as to attack your enemies. In the absence of such orders, the creature acts in a fashion appropriate to its nature.

Once three fuzzy objects have been pulled from the bag, the bag can't be used again until the next dawn.

<$button>
<$action-chooserandom $dataTiddler="BagOfTricksTable" $field="var"/>
Random Beast
</$button>

<<<
''{{!!var}}''
<<<
1: smoking pipe
2: abacus
3: pair of stilts
4: small amulet
5: five arrows bound together with twine
6: backpack
7: small bag full of ball bearings
8: bagpipes
9: bedroll
10: axe
11: bell
12: bit and bridle
13: velvet mask
14: thick blanket
15: fishing pole
16: blowgun with one dart
17: bolas
18: empty notebook
19: glass bottle with cork
20: brass mug
21: lantern
22: small bag full of caltrops
23: large wax candle
24: oar
25: humanoid femur
26: 10 feet of chain
27: chain mail shirt
28: wooden shoehorn
29: spatula
30: frying pan
31: copper chalice
32: leather boot (one)
33: crossbow bolt
34: crowbar
35: dagger
36: sparkling gemstone
37: small drum
38: dulcimer
39: pair of embroidered gloves
40: silk handkerchief
41: pair of linen pants
42: flail
43: steel hip flask
44: flute
45: full dragonchess set
46: bird cage
47: silver circlet
48: wooden comb
49: working music box
50: grappling hook
51: greatsword
52: ox horn
53: hammer
54: crossbow
55: 50 feet of hempen rope
56: hourglass
57: bear trap
58: iron pot
59: wooden box with 10 iron spikes inside
60: javelin
61: 10-foot ladder
62: leather armor (body)
63: lock and key
64: longbow
65: longsword
66: lute
67: magnifying glass
68: manacles
69: scroll case with pieces of blank parchment inside
70: merchant's scale
71: saddle
72: miner's pick
73: morningstar
74: compass
75: sextant
76: net
77: gambeson
78: set of paintbrushes
79: pair of dice
80: pan flute
81: 10-foot pole
82: portable ram
83: silk robe
84: quarterstaff
85: rapier
86: saddlebag full of feed
87: shield
88: shovel
89: sickle
90: whistle
91: silver and gold brooch
92: bar of soap
93: spear
94: [[spyglass]]
95: mirror
96: set of lockpicks
97: torch
98: small wooden totem
99: trident
100: waterskin
101: crochet needle
102: whetstone
103: whip
104: porcelain doll
105: bag full of coins (worth 2 crowns)
106: handful of chalk
107: pair of goggles
108: steel calipers
109: pair of spectacles
110: 2'x2' pane of half-inch-thick glass
111: bag of feathers
112: large shard of flint
113: coil of razor wire
114: leather belt
115: conch shell
116: wooden marionette doll
117: pair of scissors
118: oil lamp
119: toy boat
120: wind chimes
121: wet fistful of clay
122: tea kettle
123: monocle
124: shaving razor
125: chisel
126: iron file
127: horseshoe
128: brass bowl
129: wagon wheel
130: handsaw
131: flower pot
132: pillow
133: bowling ball
134: wire brush (steel bristles)
135: wrench
136: set of playing cards
137: shortsword
138: ceramic pot
139: footstool
140: bag of glass marbles
141: large silver platter
142: iron adze
143: small keg of explosive powder
144: fireplace poker
145: 3-foot wooden plank
146: body towel
147: burlap tarp, 6ft x 6ft
148: mortar and pestle
149: hedge trimmers
150: rolling pin
151: wooden clogs
152: sundial
153: iron helmet
154: cowbell
155: meathook
156: bucket
157: censer
158: steel ingot
159: fistful of beaded necklaces
160: kite
161: small wooden chest with nothing inside
162: eating utensils
163: leather vest
164: silver ladle
165: baby cradle
166: stone birdbath
167: ball of yarn (500 ft)
168: canvas apron
169: wooden mask
170: xylophone
171: very strong glue
172: bag of firecrackers
173: small jar of highly flammable liquid
174: pouch of itching powder
175: small vial of extremely spicy hot sauce
176: chattering teeth
177: stink bomb
178: flashbang
179: roman candle (a wand that shoots sparkling fireworks)
180: small bouncy ball
181: small makeup kit
182: outrageous wig
183: dolly
184: small duck on wheels
185: jar of corrosive jelly
186: handful of charcoal
187: bag full of door hinges
188: iron pipe
189: [[potion of healing]]
190: 10 matches wrapped in wax paper
191: needle and thread
192: glass bottle of wine
193: glass bottle of pure water
194: pair of iron gauntlets
195: [[smokestick]]
196: [[noxious smokestick]]
197: [[tindertwig]]
198: [[potion of climbing]]
199: pouch of sneezing powder
200: fake excrement
201: [[beetle buzzer]]
202: [[wand of colors]]
203: [[talking wand]]
204: [[wand of smiles]]
205: [[wand of scowls]]
206: [[wand of web]]
207: [[wand of pyrotechnics]]
208: [[bottled breath]]
209: [[alchemist's fire]]
210: [[acidic fire]]
211: [[alchemist's frost]]
212: [[alchemist's spark]]
213: [[feather token]]
1: weasel
2: giant rat
3: badger
4: boar
5: panther
6: giant badger
7: [[dire wolf]]
8: giant elk
9: rat
10: owl
11: mastiff
12: goat
13: giant goat
14: giant boar
15: lion
16: brown bear
17: jackal
18: ape
19: baboon
20: [[axe beak]]
21: black bear
22: giant weasel
23: giant hyena
24: tiger
This scale bears celestial symbols on one pan and fiendish symbols on the other. You can use the scale to perform a ritual to detect the presence of [[celestial]]s and [[fiend]]s, or consecrated or desecrated places or objects, within 30 feet of it. The scale remains motionless if it detects nothing, tips to one side or the other for "good" (celestial/consecrated) or "evil" (fiend/desecrated).

Balinor is the Sovereign of Horn and Hunt. He guides both the beast and the hunter, and he is the patron of those who walk on the edge of civilization and the natural world. His symbols include a pair of antlers or [[green dragon]].
Balinor's Sorrow is a forest in the southern tip of [[Shadow Marches]], near the town of [[Urthhold]]. It is named after the [[Sovereign|Sovereign Host]] [[Balinor]].
This backpack contains a bound air [[elemental]] and a compact leather balloon. While you're wearing the backpack, you can deploy the balloon and levitate for 10 minutes. Alternatively, you can deploy the balloon when you're falling and gain the effect of the [[feather fall]] spell for yourself.

When the effect ends, the balloon slowly deflates as the [[elemental]] escapes and returns to its native [[plane]]. As the balloon deflates, you descend gently toward the ground for up to 60 feet. If you are still in the air at the end of this distance, you fall if you have no other means of staying aloft.

After the spirit departs, the backpack's property is unusable unless the backpack is recharged for 1 hour and bind another elemental to the backpack.
Figures of ancient and terrible evil, balors rule as generals over [[demon]]ic armies, yearning to seize power while destroying any creatures that oppose them.

Wielding a flaming whip and a longsword that channels the power of the storm, a balor's battle prowess is fueled by hatred and rage. It channels this demonic fury in its death throes, falling within a blast of fire that can destroy even the hardiest foes.
If you are incapacitated while attuned to a //band of loyalty//, you instantly die. These rings are favored by spies who can't afford to fall into enemy hands.
Sahar of a small village on the [[Marrah plains|Mae-Kree]] in [[Syrkarn]], Banigar is an elderly hunter determined to die in the saddle.
Jovial to friend and stranger alike, he has a thoughtful
side that he shows only rarely. His village's lands extend
to within sight of the [[Whitewater]], and he has spent long
years watching the activities of the [[Karrak]] cults in the
area. As such, he is an excellent resource for PCs investigating the activities of the cults, or seeking background
information in the course of investigating the presence
of [[Inspired]] agents in [[Syrkarn]]. 
When night falls, unlucky travelers hear the faint cries of the forlorn dead. This woeful spirit is a banshee, a spiteful creature formed from the spirit of an [[elf]]. Banshees appear as luminous, wispy forms that vaguely recall their mortal features. A banshee's face is wreathed in a wild tangle of hair, its body clad in wispy rags that flutter and stream around it.
Creatures of unbridled greed and desire, barbed [[devil]]s (also known as hamatula) resemble tall [[humanoid]]s covered in sharp barbs, spines, and hooks. A barbed devil has gleaming eyes that are ever watchful for objects and creatures it might claim for itself. These fiends welcome any chance to fight when victory promises reward.

Barbed devils are known for an alertness that makes them difficult to surprise, and they attend to their duties without boredom or distraction. They use their sharp claws as weapons or hurl balls of flame at foes that try to flee them.
A bard is a musician, poet, and historian, trained in a variety of academic and performative disciplines. But much more than a minstrel singing in a tavern or jester cavorting in a royal court, a bard weaves arcane magic through words and music to inspire allies, demoralize foes, manipulate minds, create illusions, and even heal wounds. The bard is a master of song, speech, and the magic they contain.

Discovering the magic hidden in music
requires hard study and some measure of natural talent
that most troubadours and jongleurs lack. It can be hard
to spot the difference between these performers and true
bards, though. A bard's life is spent wandering across
the land gathering lore, telling stories, and living on the
gratitude of audiences, much like any other entertainer.
But a depth of knowledge, a level of musical skill, and a
touch of magic set bards apart from their fellows. 

Some bards claim that the [[Dragon Above|Siberys]] sang the world into being at the dawn of time, and that their music is an echo of that powerful tune of creation. Other scholars say that bardic magic is a form of [[arcane magic]], but one that specifically calls upon the power of the [[plane]] of story and song: [[Thelanis]]. In truth, these two theories could both be true.

Bards can be found throughout [[Khorvaire]], particularly [[Aundair]] and [[Zilargo]]. The [[Circle of Song]] is an informal bardic organization based in [[Sharn]]. In the [[Eldeen Reaches]], many bards can be found amongst the [[Greensingers]] [[druid]]ic sect. Amongst the [[Dhakaani|Heirs of Dhakaan]], [[dirge singer]]s are among the mightiest bards of history.
The endless baronies of [[Thelanis]] each embody the stories of a particular [[archfey]]. A barony is a unique collection of [[layer]]s that reflect the events of a familar tale... though not all of the stories of Thelanis are known to every culture in [[Khorvaire]].

Only one [[archfey]] is found in each barony, and it is a serious transgression for another archfey to enter a barony uninvited, as their presence disrupts the story.

!! Notable Baronies

<<list-links-article "[tag{!!title}sort[title]]">>
! The Lantern

''Color:'' Bright gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Finding|Mark of Finding]]<br/>
''Associated Plane:'' [[Irian]]

Barrakas is the brightest of Eberron's moons, and hunters value its light when stalking prey at night. This "sister moon" of [[Therendor]] shares a similar (if wider) orbit and occasionally seems to hide behind her closer brother. On nights when Therendor eclipses Barrakas—"when Barrakas is shy"—sailors worry about getting lost at sea. Those born when Barrakas is ascendant are thought to be gifted hunters, but many also believe they have a knack for clarifying things that others find confusing. The son of [[Lharvion]] sees what others cannot see, while the daughter of Barrakas sheds light on that which is already in the open.
The Barren Sea lies to the west of [[Khorvaire]], northwest of [[Xen'drik]]
and east of [[Sarlona]]. It encompasses warm, tropical waters and cold
expanses in the north. It flows into the [[Sea of Lost Souls]] to the south
and the [[White Sea]] to the northwest. [[Zarash Bay]] and [[Crescent Bay]] in the
[[Shadow Marches]] are part of the same body of water, as is the [[Phoenix Basin]] off the coast of Xen'drik. [[Varuz Bay]] in Sarlona marks its western edge. 

The Barren Sea is so called because it is poor for fishing and devoid of apparent
life. Hideous monsters are said to inhabit its depths—but sailors make
that claim about all ten seas. In fact, sailors have more to fear from
storms, icebergs in the north, and unpredictable winds than they do
from any living thing in the Barren Sea. In addition to the mundane
risks of storm and calm, the Barren Sea is known for scattered areas
of dead calm—areas of perfectly still water, sometimes suffused with
negative energy that attracts [[undead]].
Basilisks are predatory reptiles native to a variety of climates. They are not particularly fast on their feet, but they needn't chase prey. Meeting a basilisk's supernatural gaze can be enough to affect a rapid transformation, transforming a victim into porous stone. Basilisks, with their strong jaws, are able to consume the stone. The stone returns to organic form in the basilisk's gullet.

Some alchemists are said to know how to process the basilisk's gullet and the fluids contained within. Properly handled, the gullet produces an oil that can return petrified creatures to flesh and life. 
Basira Swamp covers the peninsula in northern [[Q'barra]] defined by the [[Torva|Torva River]] and [[Crimson River]]s. It is home to many sunken ruins dating back to the [[Age of Demons]], including [[Mar'saval]].

<<<
''Editor's Note''<br/>
In canon, this is called "Basura Swamp". "Basura" means "garbage" in Spanish. This area is literally called "trash swamp". I couldn't say it with a straight face, so I changed it for my game.
<<<
This division of the [[Harmonious Shield]] of [[Riedra]] works with the [[Thousand Eyes]] to maintain order in Riedran cities. This is
considered the worst duty within the Shield, since bastion
guards rarely see combat.
While holding this iron tower shield and use it push a creature within your reach at least 5 feet away, you can push that creature an additional 10 feet, knock it prone, or both.
The battle rod was developed as an alternative to the longer [[war staff]], and has gained popularity with [[wandslinger]]s across [[Khorvaire]]. This spellcasting focus enables the wielder to cast [[cantrip|spell]]s at up to twice the normal range.
The Bay of Madness lies off the coast of the [[Shadow Marches]], near the [[Crawling Swamp]].
The Bay of Swords lies the coast of [[Valenar]], and is fed by the [[Redwater River]].
''District Type:'' Marketplace and shops<br/>
''Buildings:'' Open-air market, temple ([[Sovereign Host]]), shrines (the [[Keeper]], [[Kol Korran]]), average
lodging (24), average food (85), exotic trades (30),
upscale trades (60), average trades (300), poor trades
(110), upscale services (20), average services (100),
poor services (40)<br/>
''First Impression:'' The crowd and noise of this
district are overwhelming. In addition to the shops
and stalls, the streets are full of people offering
questionable goods and deals; it seems like everyone has something to sell. The [[Watch|Sharn Watch]] maintains a
strong presence in the Bazaar, but they are more
concerned with preventing riots than in stopping
trade of illegal goods.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Underlook]] (west); [[Hareth's Folly]] (northeast); [[Stormhold]] (southwest); [[Callestan]] (below); [[Redstone]] (above)

The Bazaar of [[Dura]], the largest commercial district in [[Sharn]], sprawls out across a dozen towers.
The towers around the edges are devoted to shops
and services. Almost anything can be found in this
district, though the quality of any particular item or
service cannot be guaranteed. At the center of the
district, the open market from which the district
takes its name presents a labyrinth of shops, tents,
and makeshift stalls set up in the middle of the
street. A marketplace permit costs only 0.1c, though
many people try to avoid even this paltry sum. However, guards who catch such shirkers usually extort
far larger sums in exchange for a pass.

Of the four markets of Sharn, the Bazaar has the
highest concentration of criminal activity—illegal
services and trades, as well as pickpockets, bullies, and
con artists. These services are not as obvious as they
are in [[Lower Dura]] or the [[Cogs]], and quality and prices
are not as good, but shopping here is generally safer
than venturing to the lawless lower ward. The cost
of illegal services should be increased by 25%. The
[[Boromar Clan]] controls most of the illegal activities,
but [[Daask]] has been pressing up from below, and those
seeking services may be caught in the middle.

If an adventuring party displays obvious wealth—
if they are spreading gold around, wearing [[glamerweave]] or impressive magic armor or clothes—they
must deal with a constant stream of pleading beggars
and con artists. Pickpockets pose a constant threat,
and bullies try to lure shoppers into ambushes. When
doing business in the Bazaar, it's best to conceal
your wealth.

The Bazaar is a good place to dispose of random
acquisitions. Stolen goods aside (those requiring an
actual fence), most items can be sold here for 45%
of their actual value. 

Almost any sort of mundane item can be found at
the Bazaar, including [[alchemical|alchemist]] goods. A merchant
might even have a few [[magic item]]s in stock, or at
least items that he claims are magical. Any magic or
masterwork items found in the Bazaar are certainly
secondhand, and might have a dubious or intriguing history. 

!! Noteworthy Locations

* [[Caerlyn's Blade]]. A troop of [[Valenar]] mercenaries that calls itself Caerlyn's Blade uses the Bazaar as a base of operations.
* The [[Shrine of the Keeper]]. [[Gellis Candar]]'s pawn shop has a hidden back room with a shrine to the [[Keeper]], the [[Dark Six]] god of death and greed.
* [[Vundry's Curios]]. A pawnshop and well-connected fence for illegal or illegally obtained goods.
This small black sphere measures 3/4 of an inch in diameter and weighs an ounce. Typically, <<dr "1d4 + 4">> beads of force are found together.

When you throw a bead, the bead explodes on impact and is destroyed. Each creature within a 10-foot radius of where the bead landed that doesn't dodge suffers force damage. A sphere of transparent force then encloses the area for 1 minute. Any creature that failed to dodge and is completely within the area is trapped inside this sphere. Creatures that are partially within the area are pushed away from the center of the sphere until they are no longer inside it. Only breathable air can pass through the sphere's wall. No attack or other effect can.

An enclosed creature can push against the sphere's wall, moving the sphere up to half the creature's walking speed. The sphere can be picked up, and its magic causes it to weigh only 1 pound, regardless of the weight of creatures inside.
This spongy, flavorless, gelatinous bead dissolves on your tongue and provides as much nourishment as 1 day of rations.
This spongy, flavorless, gelatinous bead dissolves in liquid, transforming up to a pint of the liquid into fresh, cold drinking water. The bead has no effect on magical liquids or harmful substances such as poison.
An enormous [[beasthide]] [[shifter]] woman
named Leara owns
the Bear's Rest inn. The inn is of average quality and
price, but Leara gives a 20% discount to shifters.
The inn has a remarkable collection of bearskins and exotic hides,
including blankets, carpets, and wall hangings. 
The Bear's Wood is a forest in central [[Breland]].
A bearded [[devil]] (also known as a barbazu) is humanoid in form, with pointed ears, scaly skin, a long tail, and claws that clearly show its fiendish nature. These devils take their names from the snakelike growths that adorn their chins, which they use to lash and poison enemies, weakening them with their virulent venom.
Beasts are non-[[humanoid]] creatures that are a natural part of [[Eberron]]'s ecology. Some of them have magical powers, but most are unintelligent and lack any society or language.

<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
Stoic and solid, a beasthide [[shifter]] draws strength and
stability from the beast within. Beasthide shifters are
typically tied to the bear or the boar, but this subrace
could embody any creature known for its toughness.
On the Day of [[Mourning]], a cadre of [[warforged]] deserted its post at [[Fort Zombie]]
in [[Karrnath]] and entered the [[Mournland]]. These warforged took the name Godforged, claiming they each had a soul bestowed by a discorporate [[construct]] god.
Believing that a soul inhabits a body capable of consciousness only when the body is ready, the Godforged have taken it upon themselves to build a body for their god so it can walk among them.

The [[warforged]] believers also hold that a soul
becomes more powerful as the body increases in
power and size. Therefore, Godforged augment their
bodies with attached and embedded components. Warforged that die are believed to join the Becoming God, waiting for reincarnation in a new body or to
join the god in its physical form.

In addition to quests for self-perfection and to
build the Becoming God’s body, the Godforged seek
a way to build new [[warforged]]. This goal could bring
them into conflict with the [[Lord of Blades]], who controls a [[creation forge]].

Some believe that the Godforged hear the call of a [[fiend]] from [[Khyber]] or the being at the root of the [[Mourning]]. If this belief is true, the Becoming God could be a threat to [[Khorvaire]] and all of [[Eberron]].
This small metal beetle has spindly legs and a wind-up key on its back. While holding the beetle, you can wind it up and set it down. When you do so, the beetle walks 30 feet in the direction it was pointing when activated and emits loud noises for 1 minute, audible from as far away as 300 feet. 
One glance at a beholder is enough to assess its foul and otherworldly nature. Aggressive, hateful, and greedy, these [[aberration]]s dismiss all other creatures as lesser beings, toying with them or destroying them as they choose.

A beholder's spheroid body levitates at all times, and its great bulging eye sits above a wide, toothy maw, while the smaller eyestalks that crown its body twist and turn to keep its foes in sight. When a beholder sleeps, it closes its central eye but leaves its smaller eyes open and alert. Each of these smaller eyes are capable of emitting a different ray of magical energy; the gaze from one eyestalk might result in petrification, while a different eye ray might disintegrate its target, and another might charm a [[humanoid]].

Beholders and their kin ([[gazer]]s, [[gauth]]s, [[spectator]]s, etc) are native to the plane of [[Xoriat]], and were part of the initial incursion of the [[daelkyr]] into Eberron along with other [[aberration]]s from the plane of madness. They are closely associated with the daelkyr known as [[Belashyrra]], the Lord of Eyes.

!! Birth of a Beholder

Beholders can produce others of their own kind, but the
process has nothing to do with biology and everything to do with psychology.

When a beholder sleeps, its body goes briefly dormant
but its mind never stops working. The creature is fully
aware, even though to an outside observer it might appear oblivious of its surroundings. Sometimes a beholder's dreams are dominated by images of itself or of other
beholders (which might or might not actually exist). On
extremely rare occasions when a beholder dreams of
another beholder, the act creates a warp in reality—from
which a new, fully formed beholder springs forth unbidden, seemingly having appeared out of thin air in a nearby space. This "offspring" might be a duplicate of
the beholder that dreamed it into existence, or it could
take the form of a different variety of beholder-kin, such as a
[[death kiss]] or a [[gazer]]. It might also be a truly unique creature, such as could be spawned only from the twisted imagination of a beholder, with
a set of magical abilities unlike that of its parent.

!! Physical Characteristics

As a byproduct of their unique method of propagation,
beholders in one part of the world tend to look similar,
with variations becoming more pronounced the farther
one travels from that area. Even a slight variation in the
shape of an eyestalk or the texture of its skin is enough
for one beholder to consider another a flawed abomination, which should be destroyed.
Use the following button to produce a variety of different appearances for beholders. 

<<<
<$button>
<$action-chooserandom $dataTiddler="$:/BeholderBodyDiameter" $field="var1"/>
<$action-chooserandom $dataTiddler="$:/BeholderSkinTexture" $field="var2"/>
<$action-chooserandom $dataTiddler="$:/BeholderSkinColor" $field="var3"/><$action-chooserandom $dataTiddler="$:/BeholderSkinExtra" $field="var4"/>
<$action-chooserandom $dataTiddler="$:/BeholderSkinColor" $field="var5"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeMetallic" $field="var6"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeColor" $field="var7"/>
<$action-chooserandom $dataTiddler="$:/BeholderIrisDouble" $field="var8"/>
<$action-chooserandom $dataTiddler="$:/BeholderIrisShape" $field="var9"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeSize" $field="var10"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeSize" $field="var11"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyestalkShape" $field="var12"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyestalkTexture" $field="var13"/>
<$action-chooserandom $dataTiddler="$:/BeholderMouthSize" $field="var14"/>
<$action-chooserandom $dataTiddler="$:/BeholderTeeth" $field="var15"/>
<$action-chooserandom $dataTiddler="$:/BeholderTeethDouble" $field="var16"/>
Generate Beholder Appearance
</$button>

The beholder is {{!!var1}} feet in diameter, covered in {{!!var2}},
<$list filter="[{!!var4}!is[blank]]" emptyMessage="" variable="noop">
<$list filter="[all[current]!var3{!!var5}]" emptyMessage="" variable="noop">{{!!var5}}-</$list>{{!!var4}} </$list>
{{!!var3}} skin. Its eyes are {{!!var6}}
{{!!var7}} with <$list filter="[{!!var8}!is[blank]]" emptyMessage="" variable="noop">{{!!var8}}-</$list>{{!!var9}}-shaped pupils. <$list filter="[{!!var10}!is[blank]]" emptyMessage="" variable="noop">The central eye is {{!!var10}}.</$list> The beholder's {{!!var11}} extra eyes are attached to eyestalks that are {{!!var12}}, and {{!!var13}}. The creature's {{!!var14}} mouth is filled with {{!!var16}} {{!!var15}} teeth.
<<<
Most of the [[overlord]]s of the [[Age of Demons]] are truly
bound, unable to affect the world in any meaningful
way. A few have frayed their bonds, however, and have
found ways to influence [[Eberron]] even while bound. Seven centuries ago, this overlord nearly escaped from his bonds. The [[paladin]] [[Tira Miron]] defeated him by becoming a vessel for the [[Silver Flame]], but the overlord never truly returned to his
slumber. For centuries he has lingered in the heart of
the Silver Flame, whispering to the weak-willed and
manipulating the path of the [[Prophecy|Draconic Prophecy]] to bring about
an age of darkness. He draws strength from every feud
and every act of betrayal, and the discord of the [[Last War]] increased his might significantly. If he breaks free, chaos and despair will surely follow. He is Bel
Shalor, the Shadow in the Flame. Some scholars claim
that he is one and the same as the deity known as the
[[Shadow]], and that he taught the [[dragon]] [[Ouralonastrix]]
the arts of magic at the dawn of time.

While he is bound, Bel Shalor has little ability
to directly influence the world. His power is one of
insidious inspiration, of whispers in the dark. He
has turned his prison against his captors, reaching
through the bars of the Silver Flame to touch the
minds of the faithful. Some followers of the Flame
have been corrupted to actively worship Bel Shalor; this cult is known as the [[Whispering Flame]].
His strength is his ability to trick good people into
performing evil deeds, something he has accomplished all too often over the millennia. See [[Silver Flame Heresy and Corruption]] for more examples.

If the Shadow in the Flame is freed, his influence will begin to extend out
over the land around him, first covering a few miles,
and ultimately spreading out across all of [[Thrane]] and beyond.
People who fall under his sway become selfish and
cruel, turning on one another instead of standing
against him. Within this sphere of influence, people grow pale and their
shadows become clearer and more vivid even in poor
lighting, often seeming to move of their own accord. It is said that the shadows conspire against their owners, telling Bel Shalor of their secret plans; you
must decide if this claim is true.

The exarch of Bel Shalor is a mighty [[rakshasa]] named
[[Durastoran]], known to legend as the Wyrmbreaker.
Belashyrra is the Lord of Eyes, also known to its cultists as the All-Seer or the Glorious Eye. Stories told of Belashyrra in the [[Shadow Marches]] whisper that the Lord of Eyes can see every evil deed a person commits, and that those touched by this [[daelkyr]] suffer terrible hallucinations that inevitably drive them to violence or death.

//''Dreadful Visions.''// The madness of Belashyrra is tied to sight: images that can't be unseen, horrific hallucinations, the fear of blindness and of being watched—or realizing that something else is using your eyes. Belashyrra can force its victims to question whether what they perceive is real, or can fill their world with such terrors that they willingly blind themselves to escape.

Belashyrra sees mortals as raw materials to be exploited or insects to be exterminated. However, the Lord of Eyes has been known to take an interest in specific mortals. Belashyrra's [[warlock]]s serve as its envoys in the world and are often directed to seek out creatures and sites that the daelkyr wishes to see through their eyes.

//''Belashyrra's Cults.''// The Lord of Eyes has followers across Khorvaire, and its cults are typically driven by mad visions. Devoted cultists, such as members of the [[Vigilant Eye]], can grow eyes in unusual locations, and might have darkvision or other supernatural abilities when they view the world through those eyes. [[Beholderkin|beholder]] often advise or lead Belashyrra's cults, and cultists typically treat these [[aberration]]s as divine beings.
This symbiotic crown is carved from dark purple and mauve stone, with ten points like stalks set with gemstones resembling the eyestalks of a [[beholder]]. To attune to this item, you must wear it on your head for up to an hour, during which the crown's hidden tendrils burrow into your scalp to bond with your skull.

While wearing the crown, you can see normally in darkness, both magical and nonmagical, to a distance of 120 feet. You can also use the eyestalk points to shoot magical rays of energy, much like a beholder. These magical effects include telekinesis, inducing fear or sleep in a person, slowing or halting a person in place, or even disintegrating someone or turning their flesh to stone.

The [[daelkyr]] [[Belashyrra]] made these crowns. While on the same plane of existence as the crown, Belashyrra can see through its eyestalks.
Commander Belew Yorgan is a [[dwarf]] who
leads the [[Sword Point]] [[garrison|Sword Point Garrison]] in [[Middle Central]].
He does his best to serve the interests of the nobles
and wealthy patrons in the [[Central Plateau]], and as a
result these wards are among the safest in [[Sharn]]. But
Yorgan's loyalties are first and foremost to his purse,
and the troops under his command serve whoever's
paying the most. 
This cruel leather belt has shallow, sharp spikes along the inside. When worn, this belt can only be removed by the person who put it on. A certain command word must be spoken near the belt once per day. If the command word is not spoken, the belt will begin to poison the user, killing them slowly.
When you wear this belt and speak the command word, your size halves in all dimensions, and your weight is divided by eight. This effect can be used for a total of 10 minutes per day.
While wearing this belt, your physical strength matches that of a [[hill giant]]. Higher-rarity and higher-power versions of this belt exist.
When you wear this belt and speak the command word, your size doubles in all dimensions, and your weight is multiplied by eight. This effect can be used for a total of 10 minutes per day.
A finely crafted dark leather belt with three loops, each decorated with a shard of sapphire. The magic of the belt leaves an invisible mark on the surface of the weapons stowed in each loop and invisibly inscribes the name of the item on the sapphire shard.

Three one-handed throwable weapons can be 'attuned' to the belt. When a weapon, from the belt, is thrown at an object or creature, hit or miss, the weapon will return to the belt after a few seconds.
You can hold this berry out to a bird you can see within 30 feet of you. If the bird is willing, it can eat the berry and become your eyes and ears for 10 minutes or until you shake your head and end this effect. During this time, you are deaf and blind in your own senses.

While the bird is within 100 feet of you, you can
telepathically communicate with it, telling it where to go
and what to do. 
This magic axe is an extremely fine weapon, enchanted to pierce armor and improve the wielder's own vitality.

This axe is ''cursed'', and becoming attuned to it extends the curse to you. As long as you remain cursed, you are unwilling to part with the axe, keeping it within reach at all times. You also have disadvantage when using weapons other than this one.

Whenever a hostile creature damages you while the axe is in your possession, you have a chance of going berserk. While berserk, you must continuously attack the creature nearest to you with the axe, moving to attack the next nearest creature after you fell your current target. If you have multiple possible targets, you attack one at random. You are berserk until there are no creatures within 60 feet of you that you can see or hear.
[[Upper Tavick's Landing]] has always
had an isolationist attitude, in many ways considering itself to be a separate city within [[Sharn]]. Bestan ir'Tonn has represented this community for the last 30 years. A wealthy barrister from one of the [[Sixty]], he has strong connections to the [[Boromar Clan]]. He is a respected man who has always looked out for the interests of the wealthy of [[Tavick's Landing]], as well as for the Boromars. However, he has a secret: he is an agent of the [[Dreaming Dark]]. Fifteen years ago, the [[Inspired]] dominator [[Tirashana]] infected him with a [[mind seed]], and today he is one of three Inspired moles. While appearing to promote the agendas of his supporters, he has actually been stirring up dissent and discord. 
High Elder Bhisma Na'kala of the [[Flamebrow Clan|Flamebrow Clanhold]] is the ruler of the [[dragonborn]] city of [[Ka'rhashan]]. He joined King [[Sebastes ir'Kesslan]] to represent [[Q'barra]] at the [[Treaty of Thronehold]] two years ago, and continues to advocate for peace.

Bhisma has called upon the [[dragonborn]] clans to hold to their ancient duties, and forbids attacks on [[human]] towns. But Bhisma’s authority is far from absolute, and even those who respect his words will still butcher outsiders who trespass onto the unhallowed grounds that the dragonborn protect.
The Bitter Sea lies between [[Khorvaire]] and [[Frostfell]]. It includes [[Eldeen Bay]] and [[Karrn Bay]] to the south. Floating icebergs are a serious hazard in these waters, particularly in the summer months when they shear off the Frostfell and drift south into important shipping lanes
just off Khorvaire. Despite its inland location, [[Thrane]] has always made
an effort to maintain a presence in the Bitter Sea alongside ships from
[[Aundair]] and [[Karrnath]].
[[Rak Tulkhesh]]'s heart [[demiplane]] is a crimson fortress, with stones soaked
in blood and walls studded with rusted iron spikes. Around
the tower's base, [[rakshasa]]s and other [[fiend]]s endlessly battle,
their pointless struggle reflecting the bloodlust of their master. [[Mordakhesh]] the Shadowsword often returns to the Bitter
Shield between schemes, and is hailed as lord of the fortress.

The Bitter Shield has the //Unquenchable Fury// and
//Bloodletting// properties of [[Shavarath]]. 
''District Type:'' Garrison<br/>
''Buildings:'' Garrison building, temple ([[Silver Flame]]), average lodging (20), poor lodging (4), upscale food (8), average food (15), poor food (15),
upscale trades (15), average trades (33), poor trades
(28), average services (40), average residences (160),
poor residences (40)<br/>
''First Impression:'' This district was designed to
withstand a full siege. Every bridge to the outer
realms has a guard post and a heavy portcullis that
can be lowered at a moment's notice. The walls are
unusually thick stone, and arrow slits and murder
holes can be seen in every wall. A massive tower of
black stone dominates the center of the district—the
garrison of the [[Sharn Watch]], and the city's first line
of defense against outside attack.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Foundation]] (west); [[Dragoneyes]] (northeast); [[Firelight]] (bridge, north); [[Little Barrington]] (above)

Black Arch is a dark, foreboding district. Without the
use of magic or flight, all traffic to the higher wards
must pass through Black Arch, and the district has
been built to hold off an invading army. Fortified
spires and guard posts are everywhere, and each of
the major entrances has a heavy portcullis enchanted
with arcane lock. During the [[Last War]] a detachment of
the King's Guard was stationed in Black Arch, but
today it is back in the hands of the [[Watch|Sharn Watch]]. The Watch
assigned to Black Arch takes its job very seriously, and
its members are among the most ethical and trustworthy to be found in Sharn, mostly due to the efforts
of the district commander, [[Iyanna ir'Talan]].

Most of the trades and services in this district
support the [[Watch|Sharn Watch]]. There are a host of smithies, and
it is an excellent place to obtain masterwork weapons and armor. House [[Jorasco]] maintains a house of healing near the garrison tower, and there is a House
[[Sivis]] [[message station|speaking stone]] and [[Orien]] courier post to ensure
quick communication between the garrisons.
With deep-socketed eyes and broad nasal openings, a black [[dragon]]'s face resembles a skull. Its curving, segmented horns are bone-colored near the base and darken to dead black at the tips. As a black dragon ages, the flesh around its horns and cheekbones deteriorates as though eaten by acid, leaving thin layers of hide that enhance its skeletal appearance. A black dragon's head is marked by spikes and horns. Its tongue is flat with a forked tip, drooling slime whose acidic scent adds to the dragon's reek of rotting vegetation and foul water.

When it hatches, a black dragon has glossy black scale. As it ages, its scales become thicker and duller, helping it blend in to the marshes and blasted ruins that are its home.

!! Magic and Breath Weapon

The black dragon's breath weapon is a spray of powerful acid. As innate spellcasters, adult black dragons can cast spells such as [[darkness]], [[vitriolic sphere]], [[sickening radiance]], and [[blight]].

{{DragonAgeCategories}}
A massive chasm in the [[Blackcap Mountains]], the Black
Pit is over a mile across and descends beyond the limits of sight. It's said to be an entrance to the abyss of
[[Khyber]], and foul creatures live among the caves that
honeycomb its walls. A nearby village—also called Black
Pit—provides a haven for deserters and other criminals
as well as a thriving black market.

If you have shady friends, you've likely heard of Black
Pit's reputation as a place to quietly "disappear." Similarly, if you have ties to the [[King's Dark Lanterns]], you
know where to find some of [[Breland]]'s worst criminals. 
A black pudding resembles a heaving mound of sticky black sludge. In dim passageways, the pudding appears to be little more than a blot of shadow. 

Flesh, wood, metal, and bone dissolve when the highly corrosive pudding ebbs over them. Stone remains behind, wiped clean. When attacked with a well-placed slash or lightning bolt, a black pudding can split into two or three separate oozes.
''District Type:'' Industry district<br/>
''Buildings:'' Temple ([[Onatar]]), poor lodging (2),
poor food (7), poor trades (60), poor services (30)<br/>
''First Impression:'' Heat and the smell of smoke fills
the air. The long passages are dimly lit and coated
with soot, and the inhabitants are dour folk focused
on their work.<br/>
''Social Class:'' Lower class

Blackbones is located under [[Tavick's Landing]], and
stretched west toward the center of [[Sharn]]. In most
respects it is similar to [[Ashblack]]; it is slightly newer,
and the corridors are a little wider and better lit. Like
Ashblack, there are a considerable number of [[warforged]] laborers in this district, and a few businesses have sprung up around these constructs. 

!! Noteworthy Locations

* The [[Pool of Onatar's Tears]]. A small temple in the Blackbones district holds a pool said to be blessed by the god [[Onatar]]. Smiths come from across [[Khorvaire]] to dip their tools in the pool.
* The [[Red Hammer]]. The Red Hammer is Sharn's only inn maintained by and for [[warforged]]. It offers those who work in the Cogs opportunities to socialize, along with repair and cosmetic services. 
* The [[Lava Pit]]. This hole-in-the-wall restaurant overlooks a gigantic forge powered by molten rock, the glow from which suffuses the place with lurid red light.
Jutting fiercely into the sky along the southern shores of [[Lake Galifar]], the Blackcap Mountains (or "Blackcaps") in [[Breland]] form the nation's border with [[Aundair]]. Few trees grow on the lower slopes of the ominous mountains, and thick banks of clouds cling to the bare peaks. The mountains take their name from the complete lack of snow on the dark stone. Explorers who have dared the heights report that the rock faces are almost uncomfortably warm day and night, and any snow that falls melts immediately as it hits the surface. Dozens of streams flow from the mountains into [[Lake Galifar]] and [[Silver Lake]].

The highest point in [[Breland]] is found in the Blackcap Mountains: Erix Peak, at 13,256 feet. But perhaps the strangest mountain in the Blackcaps is Kyrrilspire, which exists inside a permanent [[manifest zone]] to [[Kythri]]. The mountain changes shape from day to day.

The Blackcaps are also home to the infamous [[Black Pit]].
The Blackened Book is a special division of the [[Sharn Watch]]. It is an elite core of [[abjurers|abjuration]] and
[[diviners|divination]], charged with investigating and containing
magical threats. These [[wizard]]s are highly dedicated
to their work and their city, and generally don't take
bribes. It's up to the higher-ups, however, to decide what
missions to assign to the Blackened Book; if there's a
case that a noble doesn't want investigated, it probably won't be.
The town of Blackrock on [[Orthoss]] is the seat of the [[Wind Whisperers]]. It is a growing port, despite the remote location and fierce winter storms that buffet the island. The foundling [[Mark of Storm]] bearers within the Wind Whisperers can redirect or alleviate harsh weather somewhat, but their mastery of the weather pales in comparison to the powerful scions of House [[Lyrandar]] with their [[storm spire]]s.
There are many shattered
temples in [[Fallen]], and the broken statues of the
[[Sovereign Host]] look down upon the ruins. Only one
temple still operates among the ruins—Blackstone
Church, [[Sharn]]'s first temple to the [[Silver Flame]].
Once this church was tended by dozens of acolytes
and filled with offerings and relics. Today, dust and
shadows hold sway, and a single priest administers to
the Flame. [[Faela]], not part of the church hierarchy of Sharn, saw
a need and took up residence in the abandoned
church. The [[Silver Flame]] is dedicated to fighting
the evil impulses of humanity as well as supernatural
evil, and Faela does her best to counter the darkness
she sees in Fallen. She provides nonmagical healing, acts as a mediator, and tries to defuse violent
situations. While the people of Fallen don't always
listen to Faela, she is the only priest that has not
abandoned them, and they generally look out for
her. She devotes most of her time to the poorest and
most wretched people of Fallen, trying to help these
unfortunates rise up from squalor and make a better
life. With her guidance, a number of the worst cases
have even managed to leave Fallen and start a new
life elsewhere in Sharn. 
Blackwater Lake in [[Khorvaire]] forms part of the border between the [[Shadow Marches]] and [[Droaam]], and it feeds the [[Blackwater River]].
The Blackwater River in [[Khorvaire]] flows from the [[Blackwater Lake]] into [[Azure Bay]]. It forms part of the border between [[Droaam]] and the [[Shadow Marches]].
Blackwood Bay lies off the southern coast of [[Aerenal]], between the mainland and the island of [[Thal Taluna]].
The Blade Desert is a vast region that stretches across [[Valenar]] and the [[Talenta Plains]], from the [[Mournland]] to the [[Ironroots|Ironroot Mountains]] and [[Endworld Mountains]]. Every year, the desert seems to creep farther into the grasslands of the [[Talenta Plains]].
While holding this weapon, you can use the stored energy in the blade to cast the [[fire bolt]] spell once per day.
While holding this weapon, you can use the stored energy in the blade to cast the [[ray of frost]] spell once per day.
This brightly-colored shortsword is kept in a wooden scabbard with eternally blooming flowers. The blade is made of dull green steel, and its pommel is fashioned from hard rosewood. At-will, you may conjure a flowery mist which fills a 20-foot area around you with pleasant-smelling perfume. The scent dissipates after a few minutes.

A creature damaged by the blade has a chance of being [[charm]]ed by you for up to a minute. Creatures cannot be charmed this way more than once every 24 hours.
While holding this weapon, you can use the stored energy in the blade to cast the [[mold earth]] spell once per day.

<<<
{{mold earth}}
<<<
The spellcaster extends their hand and traces a sigil of warding in the air. For the next 10-20 seconds, the caster gains magical resistance against physical attacks. More skilled spellcasters can cast this cantrip on a companion.
Most ambitious members of House [[Deneith]] spend a year or two serving as soldiers in the Blademarks Guild. The guild has fewer soldiers than it did five years ago, to be sure, but those blademarks under contract are as busy as ever. The end of the war just meant that the blademarks were available to be hired by entities other
than armies in the field, such as other
[[dragonmarked house]]s, local nobles, and
countries beyond the [[Five Nations]].
(Allosaurus)

The allosaurus is a predator possessing great size, strength, and speed. It can run down almost any prey over open ground, pouncing to pull creatures down with its wicked claws.
A blast disk holds destructive arcane power. A typical blast
disk is about nine inches in diameter and one inch thick, made
from layers of different metal; [[dragonshard]]s are embedded in
the surface of the disk and arcane symbols are engraved in its
surface. Most blast disks are explosive (see below), but others can store different magical effects. Knowledge in arcana is necessary for a person examining a spell-effect blast disk in order to identify the spell effect contained within the disk.

There are three elements to a blast disk: the trigger, payload,
and charge. Each effect is selected at the time it is created.

//''Trigger.''// A spellcaster touching a blast disk can choose
to activate it. However, generally you don't want to be holding
a blast disk when it goes off. A blast disk can be created with
one of the following triggers, or with a more complex trigger of
the creator's choosing (e.g. to detonate when a certain word is
spoken, when a specific object comes within range, etc.):

* ''Time. ''When the disk is activated, the user can set a time delay of up to 10 minutes before it releases its effect.
* ''Proximity.'' 30 seconds after the disk is activated, it can trigger when someone comes within a certain distance of the disk or when someone first makes contact with the disk, then breaks that contact.
* ''Impact.'' The activated disk can be set to detonate on impact, then used by throwing or dropping it.

//''Payload.''// When a common explosive blast disk is triggered, it creates an explosion in a 20-foot radius centered on the disk. More rare and expensive spell-effect blast disks produces a magical effect when triggered, chosen when it was manufactured.

''//Charge.//'' A typical blast disk holds a single charge, the
[[dragonshard]]s shattering when the effect is triggered. However,
more advanced blast disks recharge at dawn; this increases the
rarity of the disk by one category.

!

The blast disk is the most common form of magical explosive
used in the [[Five Nations]]. While blast disks serve a similar
role to bombs or landmines, they can produce a wide range of
magical effects; a blast disk could trigger a burst of confusion
and start a riot, or summon a rampaging [[elemental]] into a
crowded town square.

All nations employed blast disks during the [[Last War]]; when
exploring abandoned battlefields, untriggered blast disks are
an ongoing threat. While all nations used simple force or fire
explosions, there were a few variations tied to specific nations:

* [[Aundair]] made extensive use of high-powered blast disks; they were infamous for [[dragonhawk]] squads equipped with [[cloudkill]] disks.
* [[Breland]] utilized the base model of explosive disks.
* [[Cyre]] experimented with psychoactive effects—confusion, fear, and explosions that dealt psychic damage.
* During the ascendancy of the [[Blood of Vol]], [[Karrnath]] created disks that first dealt necrotic damage, then inflicted effects that killed victims with the initial explosion then animated the corpses to prey on survivors.
* [[Thrane]] developed blast disks that dealt radiant damage—a useful tool against Karrnathi [[undead]]. Toward the end of the war, Thrane was working on disks that created a column of searing light that lasted for a minute or more.

While the basic blast disk is a common [[magic item]], under
the Code of [[Galifar]], they're illegal for civilians to own or carry.
House [[Cannith]] manufactures blast disks, but won't sell them
to civilians (at least, not openly). So if you're looking for a blast
disk, you'll need to have criminal connections or build your own.

More powerful blast disks can be created to serve the
needs of a particular story. A powerful explosive disk could
have a radius of hundreds of feet instead of just twenty, while
a [[cloudkill]] disk could unleash a force that expands as it moves
and lingers for hours or days.
When you light this caged torch, you can control the fire like a 5-foot-long whip, cracking tongues of flame at your enemies.
Each [[Lord of Dust|Lords of Dust]] follows a discrete agenda on behalf of the [[overlord]] that they serve, but even such powerful and singular creatures
find it useful to meet in association on occasion. The
Bleak Congress is a collection of the exarchs that serve
the imprisoned overlords. Though the Lords of Dust
are active across [[Eberron]], they make regular pilgrimages to [[Ashtakala]] to exchange news and hone their
insidious plans. No more than a few of the Lords of
Dust meet at once, since they are a fractious lot, given
to treachery and infighting. However, rumors from the
[[Eldeen Reaches]] have told of a large number of caravans making their way to the [[Demon Wastes]], repelling
the [[Wardens of the Wood]] in their efforts to turn them
back. Are these servants of the [[Lords of Dust]]? If so,
why are they moving now, and why in such numbers?
Necromantic energy washes over a creature of your choice (not [[undead]] or [[construct]]) that you can see within 30 feet, draining moisture and vitality from it. On a hit, the target suffers rapid decay and necrotic damage.

If you target a [[plant creature]] or a magical plant, the spell is even more devastating.

If you target a nonmagical plant that isn't a creature, such as a tree or shrub, it simply withers and dies.
While wearing these boots, you can cast [[misty step]] once per day.

<<<
{{misty step}}
<<<
A blink dog takes its name from its ability to blink in and out of existence, a talent it uses to aid its attacks and to avoid harm. Blink dogs harbor a long-standing hatred for [[displacer beast]]s and attack them on sight.
House [[Tharashk]] established this tiny port at the end
of the [[Last War]]. Built on the shores of [[Crescent Bay]] and regularly supplied by ships from [[Yrlag]], a large town across
the bay in the Shadow Marches, Blood Crescent serves
as House Tharashk’s long dreamed-of foothold in the
[[Demon Wastes]]. From this outpost, the house sends parties to scout for resources such as deposits of [[narstone]] and open pits of Khyber [[dragonshard]]s. Finding
the resources isn’t difficult; surviving the dangers of
the Wastes is. To date, it has survived lost expeditions, the [[Carrion Tribes]], and the malefic horrors of the Wastes, but few believe the outpost will last.

Blood Crescent is home to a mix of [[human]]s and
[[half-orc]]s, all [[Tharashk]] operatives. The ruthless, no-nonsense [[half-orc]] Baruk commands the outpost. The town welcomes adventurers, and PCs could make
the place a base of operations. In addition to hiring
adventurers as escorts for house scouts and prospectors, Tharashk knows that its presence in the outpost
is an effective hedge against [[Carrion Tribe|Carrion Tribes]] attacks.
Blood gin is a necrotic narcotic, distilled from berries from a [[Mabar]]an [[manifest zone]] that are fermented in the blood of someone who died by
violence. It induces euphoria while replaying the final moments
of the victim's life, but frequent users can suffer dreadful
nightmares. It is produced in [[Droaam]] and smuggled into the [[Five Nations]] and beyond.
* Everyone has a spark of divinity. Find that power within.
* Death is the end, [[Dolurrh]] is oblivion, and if the gods exist, they are cruel. Stand with those you care for; all we have is this life and each other.

Life is pain, a ceaseless struggle against hunger, disease,
and despair. Every day we're one step closer to the grave,
and all that lies beyond is [[Dolurrh]] and the disintegration of
the soul. What just god would create such a world? What
benevolent [[Sovereign|Sovereign Host]] would condemn their creations to
such misery?

But what if mortality is something
that can be overcome? Perhaps we
all have a spark of divinity within
us, a spark that can become a
force to rival the [[Silver Flame]].
Perhaps one day we can end
the cycle of death and misery,
so all can live long enough
to find their divinity within.
Until then, the best we can
do is to hold our family
and friends close, defy
cruel fate, and fight to
live as long as we can.

This is the message of the Blood of Vol. Life is suffering and death is annihilation, but you can defy this cruel fate—and perhaps even break the cycle for good.

The Blood of Vol is a grim faith, founded by a mythical individual named "Vol" who they believe was the first person to find the divinity within. It asserts that death is oblivion, that the universe is uncaring, and that if the [[Sovereigns|Sovereign Host]] exist, they are cruel. Its followers study the secrets of blood and life, and because they believe that death is the end, they see nothing wrong with using the bodies of the fallen to serve the living. Seekers of the Divinity Within (as the faithful call themselves) are glad to be
reanimated after death; at least they can do some good.

Because of this association with [[necromancy]], many
believe the Blood of Vol embraces death and its followers want to become [[undead]]. Both ideas are false. The Blood of Vol sees death as the ultimate evil. Seekers
don't want to become undead; they want to become
divine beings. The faith teaches that divinity is tied to
blood and soul, and the undead can never fully harness
that power. The [[mummies|mummy]] and [[vampire]]s of the Blood of
Vol have sacrificed their chance at divinity to guide the
living. They're martyrs, not something to envy.

In addition to a general revulsion toward the undead, the public opinion of the Blood of Vol is colored by the actions of the Order of the [[Emerald Claw]]. This extremist sect serves a [[lich]] known as the [[Queen of Death|Lady Illmarrow]], and it employs necromantic magic in acts of terror. However, most Seekers don't support the Emerald Claw.

The Blood of Vol has its strongest following in [[Karrnath]] and the [[Lhazaar Principalities]]. For a time, it was the national religion of Karrnath. Though fallen from
favor, the faith is still practiced openly in that nation. 

!! Stronger Together

//"The universe is against us, and all we have is each other."// This is one of the most basic principles of the Blood of Vol. Despite its grim outlook, it is a faith that emphasizes the value of friendship, family, and community. There are no benevolent
gods looking out for us, so we have to look out for each other.
Death is the end, so we can't let it steal the people we care
about without a fight. And since there is no pleasant afterlife
waiting for us, we should treasure the time we have with those
we love. These values have kept the Blood of Vol alive through
the centuries: the deep commitment to community and to
working together even in the face of impossible odds.

!! Symbol

The power of a [[cleric]] of the Blood of Vol comes from within them. As such, every cleric chooses a unique holy symbol—an object that resonates with them. More generally, the faith is represented by a tear-shaped red gemstone or shard of glass. Priests of the Blood of Vol wear robes of red and black. 

!! Rites

The services of the Blood of Vol focus on drawing the faithful together as a community and encouraging people to find power within themselves. The most important ritual of the faith is the Sacrament of Blood. After a sermon, each member of the congregation sheds a small amount of blood into a basin. This is a symbol of unity, and a message that members of the community would shed their blood to defend one another. In some temples, this blood is donated to [[undead]] champions of the faith; [[vampire]]s drink this blood, while [[oathbound|mummy]] or [[lich]]es may bathe in it. Through this, undead priests who have lost their own divine spark draw their power from the blood of the living faithful. 

Seeker communities have often formed in or near [[manifest zone]]s to [[Mabar]]. While such areas are often inhospitable or dangerous, over the course of many
centuries, Seekers have learned how to tap the energies of these
places. Because Mabaran manifest zones are usually blighted,
outsiders often accuse the Seekers of causing blights. In reality,
the Seekers often perform rituals that limit the negative effects
of the manifest zones—so instead of causing the plagues and
blights associated with Mabar, they often prevent them.

!! Temples

A shrine devoted to the Blood of Vol requires only an altar and a means for collecting ritually spilled blood.

Temples of the Blood of Vol are fortified structures, built to serve as sanctuaries. In contrast to the [[Silver Flame]], such temples are stark and functional. Temples include vaults or catacombs, designed to hold [[undead]] or to store corpses. 

The largest temple to the faith is the [[Crimson Monastery]] in [[Atur]], [[Karrnath]], led by High Priest [[Malevanor]].

!! Origins of the Faith

Most followers of the Blood of Vol identify as Seekers of the
Divinity Within—usually shortened to Seekers—though there
are other traditions within the faith (such as the [[Thieves of Life]]). The Blood of Vol has long been vilified, with outsiders often viewing it as a death cult,
falsely equating it with the cult of [[Katashka]] the Gatekeeper, or blaming its members for plagues and blights. In the midst of misinformation and fear,
what is the truth of the Blood of Vol?

Human settlers to [[Khorvaire]] brought the faith of the [[Sovereign Host]] with them, but the Blood of Vol is indigenous to the
continent. The line of [[Vol]] was a [[noble line|Aereni noble line]] of [[Aerenal]] with a long tradition of [[necromancy]] tracing its roots back to [[Xen'drik]]. When members of the line of Vol developed the [[dragonmark]] known as the [[Mark of Death]], they undertook a risky series of experiments designed to unlock its full powers. This ended when the [[Undying Court]] and the [[dragon]]s of [[Argonnessen]] joined forces to eradicate the bloodlines that carried the Mark of Death. In the aftermath of this brutal purge, those elves who had supported Vol but didn't bear its blood were given the choice of exile or swearing fealty to the [[Sibling Kings]] of [[Aerenal]]. This resulted in a wave of
exiled [[elves|elf]] settling in the [[Lhazaar Principalities]] and spreading west into the lands that are now [[Karrnath]].

These exiles brought the knowledge of [[necromancy]] along
with stories of how the heroic family of [[Vol]] had sought to attain
godhood, only to be destroyed by the jealous gods. The people
of the region knew nothing of [[Aereni]] traditions or [[dragonmark]]s,
and they blended this story with their own experience of life in a
harsh land, local tyrants, and the empty promises of [[Sovereign|Sovereign Host]] priests. And in the process, they somehow discovered something
real. The line of Vol had never sought the divinity within, but
these first priests found it, drawing divine power from their own
conviction and their own souls.

So despite its name, the religion was never practiced by the
line of Vol, nor by the infamous [[Erandis Vol|Lady Illmarrow]] herself, who was in
hiding during the period in which the faith evolved. It is a faith
born of the blending of elf and human myths and traditions.
While the faithful believe that “Vol” was the first person to find
the divinity within and challenge the curse of mortality, the faith
is based around the divinity within each of us, not the worship
of this mythical Vol. Even devoted priests of Vol do not know
Erandis Vol's identity, though they respect the name of “Vol” as
author of their core texts, believing that this Vol challenged the
Sovereigns, then was subsequently destroyed by these jealous
gods—a martyr of the faith. Modern Seeker scholars debate the
origins of the name, whether Vol was an individual or a group
of people, or related to the elven line at all. So if Erandis Vol
were to proclaim her true identity, many of the faithful would be
impressed by her lineage, but her bloodline alone wouldn't give
her divine authority.

!! War and Peace

Throughout its history, the Blood of Vol has been treated with
fear and suspicion by the people of the [[Five Nations]]. It's a faith
that has dwelled in the shadows. This changed early in the [[Last War]]. His [[nation|Karrnath]] crippled by famine, King [[Kaius I|Kaius ir'Wynarn I]] accepted the aid
of the Blood of Vol. The Seekers provided [[undead]] soldiers and
[[necromantic|necromancy]] expertise; with the resources of the crown behind
them, Seekers developed necromantic rituals and weapons never
before imagined. In exchange, Kaius elevated the Blood of Vol to
the official state religion. Warlords were encouraged to embrace
the faith, and Seeker families were given lands and titles.

For a time, the Blood of Vol spread and was celebrated—or
so it seemed. Most of the old warlord families still despised
the Seekers and felt that the use of undead in battle debased
the proud martial traditions of their ancestors. Toward the
end of the war, Regent [[Moranna]] turned on the faith and the
Blood of Vol became a scapegoat for all of [[Karrnath]]'s troubles.
Moranna claimed that the famines and plagues the people had
suffered were caused by the Seekers. Its nobles were stripped
of their lands. Chivalric orders of Seekers, such as the Order of the Onyx Skull, were disbanded. Some—notably the infamous Order of the [[Emerald Claw]]—refused to surrender, but most Seekers remained loyal to their nation even when it betrayed them.

Today, the Blood of Vol has returned to the shadows, though
there are still Seekers who serve the crown. [[Kaius III|Kaius ir'Wynarn III]] has
sealed most of his undead forces in the crypts below [[Korth]]
and [[Atur]], but he isn't willing to entirely surrender this strategic
advantage. [[Fort Bones]] and [[Fort Zombie]] remain bastions
of loyal Seekers. But the faith is no longer celebrated, and
the old warlord lines still mutter that they would have won
the war if only they'd relied on skill and steel instead of foul
magics. In playing a Karrnathi Seeker, do you support the
crown and believe that Kaius III is only doing what he has to
do to maintain the support of the warlords, or do you despise
Kaius III and Moranna for betraying your faith?
Bloodcliff Bay lies off the coast of the [[Demon Wastes]].
When the [[Undying Court]] sought to destroy the [[Mark of Death]], all [[elves|elf]] carrying the blood of the line were slain. But the [[line|Aereni noble line]] of [[Vol]] had many allies beyond its blood relatives. The Undying Court allowed these elves to surrender, but there was no place for them on [[Aerenal]], and they left to find a new home on [[Khorvaire]]. Many of these refugees found their way to the island of [[Farlnen]], making a new home in the long shadow of the Fingerbone Mountains. Today, many elves choose to remain in isolated communities deep in the Fingerbones, but others have embraced [[Lhazaar|Lhazaar Principalities]] culture and the life of the sea. The largest of these is the Bloodsail principality, centered in [[Port Cairn]] (a town on the central southern coast of Farlnen).

The elves brought extensive knowledge of magic, archery, and woodworking to the Principalities; Bloodsail ships are some of the finest in the Lhazaar fleets. While the elves are interested in all fields of [[arcane|arcane magic]] knowledge, [[necromancy]] is especially important to them. 

During the [[Last War]], the Bloodsails served as privateers for [[Karrnath]]. This changed when King [[Kaius III|Kaius ir'Wynarn III]] denounced the [[Blood of Vol]] and abruptly cut ties with the principality, and today the Bloodsails often raid Karrnathi ships and villages. Recently, the Bloodsails have formed an alliance with the [[Diresharks]] of [[Port Verge]].

The Bloodsails are one of the most stable principalities, and Prince [[Shaen Tasil]] has ruled for over a century. They currently possess seven ships. Tales say that they dye their dark sails with the blood of their victims—but this could be a story spread to inspire terror.

The Bloodsails are largely elves, with a few [[human]]s, [[half-elves|half-elf]], and [[changeling]]s spread throughout the populace. While most Bloodsail sailors are warriors, rogues, or swashbucklers, a significant number of [[cleric]]s and [[wizard]]s live in the principality.

!! Bloodsails and the Undead

The Bloodsails share the same roots as the [[Blood of Vol]], as the principality was founded by [[Aereni]] exiles. However, they have followed a different path
and hewn closer to the traditions of their ancestors. They
don't believe in the divinity within and readily seek immortality
through undeath. However, the island can only support a
limited number of [[vampire]]s, and Bloodsails must earn their
afterlife by paying //velgys//—blood money—to the lords of the
land. Those who fail to earn enough to buy a better afterlife
are instead bound to objects after death. This is similar to the
Aereni techniques of creating [[spirit idol]]s, but Bloodsail elves
are often tied to ships and sails, enabling their vessels to move
across a windless sea, sails driven by [[ghost]]s and tended by [[oathbound|mummy]].

Bloodsail elves often bear crimson tattoos that are tied to
their families and vessels. As an adventurer, you might
have been exiled from your island, or you could be searching
for a way to quickly earn the blood money you need to leave
mortality behind.
This powerful melee weapon is adorned with small black spikes that seem to soak up any blood that splashes across them. Gain a large advantage for any combat action immediately after incapacitating a [[humanoid]], [[monstrosity]], [[giant]], or [[dragon]] with this weapon.
A [[Darguun]] mercenary troop
known as the [[Ja'khor]] (a [[goblin|goblinoid]] word translating to
“Blackbloods”) uses this inn as a base of operations. 
Bloodvine is a plant that grows in some [[Mabar]]an [[manifest zone]]s, including the [[Forest of Flesh]] in [[Droaam]]. The vines produce a substance much like human blood instead of sap, and can be used to create potent [[poison]]s and hallucinogens.
The sign above the door of
this inn displays a tilted clay mug, with what is presumably red wine trickling over the edge. This inn caters to visitors from [[Karrnath]], and the people of
the district often gather in the common room to
share a tankard of Nightwood ale and listen to traveler's tales, or engage in traditional Karrn chants and
dances. 
There are no continents in this aquatic [[layer]] of [[Shavarath]], but a handful
of islands support the warring fleets. Grand and powerful
warships clash in the open waters and bombard settlements.
The ships may be familiar, but there are many other unusual
engines of war: constructed [[kraken]]s, submersible warships,
[[monstrosities|monstrosity]] and [[dragon]]s bound to service—wonders that
the people of Eberron can //imagine// but can't yet create. The
pirate queen [[Lhazaar]] surely has inspired a sword wraith in the
Bloody Sea... but which [[legion|legion of Shavarath]] does her sword wraith fight for?
A blue [[dragon]] is recognized by its dramatic frilled ears and the massive ridged horn atop its blunt head. Rows of spikes extend back from its nostrils to line its brow, and cluster on its jutting lower jaw.

A blue dragon's scales vary in color from an iridescent azure to a deep indigo, polished to a glossy finish by the desert sands. As the dragon ages, its scales become thicker and harder, and its hide hums and crackles with static electricity. These effects intensify when the dragon is angry or about to attack, giving off an odor of ozone and dusty air.

These dragons can be found in deserts, dry steppes, searing badlands, and rocky coasts. 

!! Magic and Breath Weapon

The blue dragon's breath weapon is a powerful bolt of lightning. As innate spellcasters, adult blue dragons can cast spells such as [[wall of force]], [[wall of sand]], [[hold]], and [[dimension door]].

{{DragonAgeCategories}}
Boldrei is the Sovereign of Hall and Hearth. She guides and protects communities and families, inspiring people to work together for the common good. Her symbols include a fire in a stone hearth or a [[copper dragon]].
''Date: '' [[9 Rhaan|Khorvaire calendar]]

Gatherings across [[the city|Sharn]] mark this celebration of
community. The wealthy compete to throw the grandest
parties, and the most generous among them will be remembered throughout the year for their largesse.
''District Type:''  Inn district<br/>
''Buildings:'' Temples ([[Boldrei]], [[Silver Flame]]), average lodging (60), poor lodging (75), average food
(45), poor food (55), average trades (40), poor trades
(43), average services (35), poor services (45)<br/>
''First Impression:''  Hotels, inns, and rooms for rent
seem to be everywhere in this district.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[North Towers]] (northwest); [[Olladra's Kitchen]] (southwest); [[Myshan Gardens]] (west); [[Stoneyard]] (bridge, north); [[North Market]] (bridge, northeast); [[Blackbones]] (below); [[Sovereign Towers]] (above)

Boldrei's Hearth holds the [[Central Plateau]]'s largest concentration of hotels, inns, and other forms of lodging. It doesn't offer the elite hotels that are
found in [[Highest Towers]], [[Platinum Heights]], and
[[Ambassador Towers]], but a great number of very
comfortable rooms are available. 

!! Noteworthy Locations

* [[Marquan's Rooms for Let]]. A respectable but unassuming inn with a dark secret.
This bracelet of twine with a single iron bead allows its wearer to escape any nonmagical bonds, including ropes, shackles, chains, and so on.
All of the cursed nobles of [[Mabar]]'s [[Kingdom of Bones]] bow before the Bone King,
who embodies the concepts of death and decay. A [[lich]] in rotting
finery, he stands as a warning that even the mightiest lords
eventually become dust and bone. He prefers to drain the life
slowly from fragments he claims; he wants his hostages to dwell
on their coming death while their land withers around them, for
lords to turn on their people before he finally kills them all.

The Bone King can serve as a patron for [[warlock]]s, and is known to teach mortal [[wizard]]s the foul rituals that allow ascension to [[lich]]dom. To all who serve him in this way, he grants titles in his kingdom—and the knowledge that when they die,
they'll be forever bound to serve in it. He makes few demands of
these servants; they feed him whenever they use the powers he
grants to slay the living. But a warlock may be tasked to destroy
a lich or [[vampire]]—or even another warlock—because the Bone
King desires them to serve in his kingdom.
Bone knights are [[Karrnath]]i commanders of [[undead]] troops. Clad in distinctive bonecraft armor, these fearsome warriors are trained in [[necromancy]] techniques that allow them to compel the allegience of lesser undead.

Before the development of intelligent [[Karrnathi undead]], the animated soldiers of Karrnath were mindless [[zombie]]s that required guidance. The first bone knights were appointed to provide this control. Devoted [[paladin]]s of the [[Blood of Vol]] were fused into suits of bonecraft armor, whose magic focused their divine gifts, allowing them to command units of mindless undead. Bonecraft armor can't be removed without killing the knight who wears it, and when donning it, each bone knight understood that their former life was over.

During the [[Last War]], many bone knights took service with the Order of the [[Emerald Claw]], helping that name strike fear into the enemies of [[Karrnath]]. In the last decade, King [[Kaius III|Kaius ir'Wynarn III]] of Karrnath has done much to ensure a peaceful end to the Last War. Under the terms of the [[Treaty of Thronehold]], Kaius sealed most of Karrnath's undead in deep vaults, and the Order of the Emerald Claw was disbanded. A few bone knights remained in service to the crown, but most were cast aside—still bound to their bonecraft armor and still convinced of Karrnathi supremacy. These bone knights felt that Kaius had betrayed both them and their nation, leading their once-proud order to find a new purpose in the service of [[Lady Illmarrow]].
At the eastern end of the [[Blade Desert]] in the [[Talenta Plains]], where the [[Ironroot|Ironroot Mountains]] and [[Endworld|Endworld Mountains]] mountain ranges meet, a hidden valley is filled with the skeletons of countless [[dragon]]s. Ancient skulls form hillocks beneath the thin soil, and bones jut from the ground
like weathered ivory trees. Whether this place is an
ancient burial ground or the site of a long-forgotten
draconic battle remains unknown. [[Halfling|halfling]] legends
say that creatures that disturb the remains here draw
the attention of living [[dragon]]s. The plainsfolk take
these tales seriously, and local tribes drive off all outsiders foolish enough to approach the site.

The only regular visitors the Boneyard receives are also the only ones to whom the [[halfling]]s grant unfettered access. [[Dragonborn|dragonborn]] pilgrims from [[Q'barra]] travel for weeks to cross the [[Endworld Mountains]] and
skirt the desert to visit the site, but their reasons for
doing so remain unspoken. Many outside the plains
would love to learn what secrets this site holds, and
the [[human]]s of [[Q'barra]] have begun to speculate on
the plots the [[dragonborn]] might be hatching in this
ancient ossuary.
While you wear these boots, your steps make no sound, regardless of the surface you are moving across.
Only [[humanoid]]s can wear these boots. While wearing the boots, you can choose to have them leave tracks like those of another kind of humanoid of your size.
While wearing these boots, you can't be pushed by
nonmagical moving water while you have at least one foot
on the ground. 
These boots are made from patched green leather. The wearer can detect and identify any plant they can see, and sense when fresh water is nearby. With every step, plants suddenly grow around the wearer's feet, and when they leave, the plants slowly wilt away back into the earth.
While you wear these boots, you can cast the [[levitate]] spell on yourself at will.

<<<
{{levitate}}
<<<
These boots are made from red leather with thin soles. While wearing these boots, the user becomes highly sensitive to ground vibrations. If their feet are touching the ground, they can sense any movement within 60 ft, and it becomes almost impossible to sneak up on them.
These black ankle boots are made of a strange material that glows with a shifting purple light. They leave behind faintly glowing footprints that fade quickly.

Once per month, if you charge these boots under the light of a specific full [[moon]], you can step into that moon's associated [[plane]], on a randomly determined [[layer]] and location. 
These boots are made from mahogany leather with cork soles. They allow the wearer to jump from shadow to shadow, teleporting from one shadow to another within 60 feet.
These boots are made from white leather with blue silk laces. When the command word is spoken, the wearer floats one inch above the ground. Frost forms under their feet and the boots begin to slide, allowing the user to skate across the ground at high speeds. 

Once you use this property, the effect stays active for 1 hour or until you speak the command word again. When the effect ends, you can't use it again for several hours.
While you wear these boots, you can run 50% faster, and jump three times the normal distance.
These furred boots are snug and feel quite warm. While you wear them, you gain resistance to cold temperatures, and your motion is not hindered by thick snow or slippery ice.
These worn leather boots have copper beads woven into the laces. They allow the wearer to walk long distances without growing weary.
Bor'ob is a [[slaad]]i merchant of [[Syrania]]'s [[Immeasurable Market]] specializing in
extradimensional spaces: [[bags of holding|bag of holding]], [[handy haversack]]s,
and the like. He's usually a gray slaad, but it varies from
week to week.
King Boranel ir'Wynarn, who has ruled [[Breland]] since 961 YK, leads the royal family of Breland from an ancient estate in the capital city of [[Wroat]]. Older than the other rulers of the [[Five Nations]] and with heirs that have as yet not inspired love and devotion, Boranel worries about
the fate of Breland when his head finally becomes too weak
to carry the crown.

An adventurer before his ascension, Boranel traveled
twice to [[Xen'drik]] in his youth. During the [[Last War]],
the king won hearts and minds by leading sorties
against enemy forces. He personally defeated an [[ogre]]
chieftain while his people in the west retreated across
the [[Graywall Mountains]] to escape the brimming violence of savage [[Droaam]].

[[Breland]] loves its king, and
the people would follow him just about anywhere.
The same, however, cannot be said of his children.
Boranel's heirs have not shown the king's impressive
leadership abilities, and many Brelish worry about
what the future holds. The idealistic believe that whoever takes the throne next will grow to fill the crown's
demands, but not all are so sure. There's even talk of
dissolving the monarchy and giving full power to the
parliament once Boranel dies.
Borian Haldorak ([[dwarf]] councilor for [[Upper Dura]]) owes his position to the powerful bankers and merchants of [[Highhold]]. He is also a member
of the Gold Concord of the [[Aurum]], and serves the interests of this conspiracy. He is disarmingly cheerful and often plays up his age, telling elaborate stories about the great deeds of his youth. But beneath this façade, he is a sharp and ruthless negotiator. Most
interactions between the [[Aurum]] and the [[Boromar Clan]] are resolved by Borian and [[Ilyra|Ilyra Boromar]]. 
The most powerful criminal organization in [[Sharn]]
started as a family of [[halfling]] immigrants from the [[Talenta Plains]]. Operating out of its headquarters and key
holdings in the [[Little Plains]] district of [[Middle Menthis]],
the Boromar Clan controls gambling, smuggling, and
theft in Sharn. Most of the city's burglars, pickpockets,
and fences either work for or pay tithes to the organization. The Boromar Clan's network of extortion, bribery,
and blackmail extends from [[Lower Dura]] to [[Skyway]].

The Boromars' influence extends beyond criminal
enterprises into many legitimate circles of power. [[Ilyra Boromar]] sits on the [[city council|Sharn Council]], and a number of
other councilors are close allies of the clan. The family
has ties by marriage to House [[Jorasco]]. A Boromar attends every [[Skyway]] party. The family owns tenements
throughout [[Sharn]] and invests in shipping, storing both
legal goods and contraband in many of the warehouses
in [[Precarious]] and [[Cogsgate]]. In many districts, local officials and [[Sharn Watch]] officers have been taking bribes
from the Boromars for generations.

The criminal nature of the Boromar Clan is an open
secret, and in some districts the Boromars are seen as
hometown heroes. They are immigrants who've made
good, common people who've risen to rival the barons
and kings. They give the people what they want, whether
it's untaxed gambling, cheap spirits, or [[dreamlily]]. The clan operates with a degree of impunity because its operatives adhere to an unspoken rule: whenever possible,
criminal acts against individuals should target tourists
and travelers. Boromar pickpockets don't prey on the
people they see every day. Instead, they seek out the
many strangers who move around the city all the time.
The [[Watch|Sharn Watch]] officer who turns a blind eye to a pickpocket
thus feels justified, since it's not the citizens of [[Sharn]]
that are victimized.

Boromar's longstanding status at the head of Sharn's
criminal enterprises has recently come under challenge.
After nearly a decade of slow growth, the [[Droaam]]ish
mob known as [[Daask]] has recently started targeting
Boromar holdings. The [[halfling]] clan hasn't faced such
a serious threat before, and it's scrambling to figure out
how to deal with Daask's guerrilla tactics. 

!! Boromar Operations

The Boromar Clan has a hand in all types of crime in [[Sharn]]. Most Boromar leaders despise unnecessary violence, but the clan has a host of enforcers and a handful of capable assassins. The clan's web of extortion is so thoroughly woven into society that many residents simply consider it another form of tax. Boromar specializes in three fields of activity: gambling, smuggling, and thievery.

Gambling isn't illegal in Sharn, but all legal games are taxed by the [[Brelish|Breland]] crown and are required to follow regulations that spoil the experience for many. Boromar's operations are cheaper to participate in and offer the lure of greater profits.

Smuggling has become an increasingly important
business since the [[Last War]] disrupted many traditional
lines of trade. The clan's primary import is the narcotic
called [[dreamlily]]. But the Boromars traffic in a wide
range of goods, from arcane and alchemical weapons to
foreign luxury items that have been made scarce by embargoes and sanctions. Under [[Boranel|Boranel ir'Wynarn]]'s law, [[Aundair]]ian wine is heavily taxed in [[Breland]], so if you want the good stuff for cheap, you'll need to work with the Boromars.

Boromar-sanctioned acts of thievery include the activities of the ubiquitous pickpockets that can be found across the city as well as the well-planned jobs of professional burglars. As mentioned earlier, Boromar thieves focus their attention on visitors to [[Sharn]], thus avoiding friction with local law enforcement. When appropriate, stolen goods are transported out of the city by the fences and porters that drive the clan's smuggling operations. 

!! Boromar Clan NPCs

The Boromar Clan employs people of all races, but most
of the organization and nearly all of its inner circle are
made up of [[halfling]]s. Some of the organization's most
important people are these: 

* [[Saidan Boromar]] is the current patriarch of the family. He grew up in [[Lower Dura]] and worked as a thief and assassin there before taking over the organization.
* [[Mala Boromar d'Jorasco]] is an heir of House [[Jorasco]] and the Boromar family matriarch. Her position in the family ensures that important members of the Boromar Clan receive Jorasco healing services at no cost to them; Saidan reimburses Jorasco from the clan's treasury.
* Councilor [[Ilyra Boromar]] is the eldest daughter of Mala and Saidan and a member of the [[city council|Sharn Council]]. The Boromars' enemies on the council have grown bolder in the face of increased [[Daask]] attacks against the clan, and some of Ilyra's influence has eroded as a result.
* [[Halak Boromar]] is the family's chief enforcer. A recent immigrant from the [[Talenta Plains]], Halak leads the Clawfoots, the Boromars' personal guard, and is an accomplished warrior.
* [[Ilsa Boromar]] is the family's leader in [[Callestan]]. She is ruthless in protecting her family's interests.
* [[Castar]], a [[gnome]], is the lone non-halfling in the Boromars' inner circle. He serves as Saidan's chief advisor and the organization's intelligence expert. The family looks to Castar to come up with a plan to defeat [[Daask]], but so far none of his ideas have worked. 

!!! Boromar Clan Contacts

| !<<dr d6>> |!Contact |
| 1 |[[Sundry]] ([[gnome]]) is a fence who runs a pawn shop in the [[Bazaar]] of [[Dura]] and has ties to many smugglers, sailors, and burglars. |
| 2 |[[Canon]] ([[halfling]]) is a pickpocket who works across Sharn and is at home throughout the lower districts. |
| 3 |The [[Rake]] ([[dwarf]]) runs a handful of gambling dens and sets odds on the sporting events of Sharn. |
| 4 |[[Myri Olar]] (halfling) is a burglar and socialite, familiar with many of the mansions of the upper districts. |
| 5 |[[Hass Faldren]] ([[half-elf]]) is a smuggler and the captain of the elemental sloop //Ice Storm//. Hass is also well connected on the docks and in the warehouse districts. |
| 6 |[[Cala Boromar]] (halfling) is a lawyer by trade but with specialties in blackmail and intimidation. Cala loves engaging in the art of negotiation and is always interested in acquiring secrets. |

!! Shady Nightclubs

The Boromars control gambling dens and nightclubs throughout [[Sharn]]. The finer establishments are places for the Boromar Clan to wine, dine, bribe, and extort the city's powerful elite. At the other end of the spectrum, the run-down gambling halls and [[dreamlily]] dens in the poorer districts are places where those in the employ of
the Boromars plan heists, store smuggled goods, hide
bodies and wanted criminals, interrogate [[Daask]] spies,
make good on threats, and unwind.

These places are public and expertly run by the city's most powerful criminals, so an openly violent approach to problem-solving in such a spot is likely to end in tragedy for the characters. When combat does occur in one of these nightclubs, it's usually because the instigators have brought enough strength of arms to take on the Boromars. 

The table below offers reasons for the characters to enter one of these dangerous places. If
the characters have a Boromar patron, that NPC could
use a shady nightclub as a base of operations.

| !<<dr d6>> |!Adventure Goal |
| 1 |Get accepted into a private high-stakes card game, and try to win the grand prize. |
| 2 |Find out which [[Sharn Watch]] captain has a private meeting with a Boromar fence, and steal whatever the captain is buying. |
| 3 |Track down a missing noble hunted by assassins. |
| 4 |Steal a hidden stash of [[dreamlily]]. |
| 5 |Broker a deal with the Boromars on behalf of a [[city councilor|Sharn Council]] who's too scared to face the family in person. |
| 6 |Find evidence that could be used to blackmail a member of a [[dragonmarked house]]. |

!! Boromar Villains

With few exceptions, Boromar villains shun violence and would prefer to bribe, deceive, or manipulate the characters rather than send a squad of goons to attack them. That said, any of these villains and their minions will respond in kind if they are attacked or threatened. Examples of Boromar Clan villains appear on the table below. 

| !<<dr d6>> |!Villain |
| 1 |A [[halfling]] [[dreamlily]] dealer (an excoriate of House [[Ghallanda]]) smooth-talks new customers into sampling her wares. If pressed, she can call in favors from a number of dangerous clients. |
| 2 |A judge known as "the Turnkey" always rules in favor of Boromar Clan members. |
| 3 |A halfling pickpocket using alter self to pose as a child of another race plants contraband on people the Boromars are trying to frame. |
| 4 |A Boromar rogue has kidnapped the child of a strongly anti-Boromar [[city councilor|Sharn Council]]. |
| 5 |A [[kalashtar]] psychic serves the clan by detecting thoughts that suggest possibilities for blackmail. What stray thought might they pick up from an adventurer? |
| 6 |A Boromar smuggler is bringing unstable explosives or an especially addictive form of [[dreamlily]] into [[Sharn]], and innocents are being hurt. |

!! Boromar Clan Campaign Themes

The true power of the Boromar Clan lies in its institutions: watch officers who have been allied to the clan for generations, judges who are blackmailed into compliance, and officials who receive lucrative bribes in exchange for their cooperation. Adventurers who oppose the Boromars might discover that people they think of as friends and allies are in the pocket of the clan. The Boromars are villains in the noir tradition, and adventurers determined to tangle with them will be drawn down into the mud.

The Boromar Clan could serve as a group patron for a party of adventurers. The table below provides goals for adventurers who are working with the clan

| !<<dr d6>> |!Boromar Clan Assignment |
| 1 |Find evidence of an affair between two members of different [[dragonmarked house]]s. |
| 2 |Collect from a fence who is late with a payment. |
| 3 |Steal the bank records of a [[city councilor|Sharn Council]]. |
| 4 |Convince a [[Sharn Watch]] captain to aggressively root out [[Daask]] operatives. |
| 5 |Retrieve a package of dreamlily that has gone astray. |
| 6 |Discover the location of a [[Daask]] safe house. |

!! Boromar Clan Adventure Hooks

The table below presents ideas for additional adventures themed around the Boromar Clan.

| !<<dr d4>> |!Adventure Hook |
| 1 |[[Daask]] forces capture Boromar family members who are visiting [[Sharn]] from the [[Talenta Plains]]. The Boromars offer a reward for the safe return of their family and a larger reward for the kidnappers' heads, leading to gang violence in the streets. |
| 2 |A beloved [[Sharn Watch]] captain who openly spoke out against the Boromar Clan disappears. The Boromars claim they had nothing to do with it, but some [[Sharn Watch]] members use the incident as an excuse to go after the organization. |
| 3 |A [[changeling]] stole a smuggled artifact of great value from the Boromar Clan. Boromar enforcers shake down people all over [[Sharn]] to find it, and clan leaders consider going to war with the [[Tyrants]]. |
| 4 |The Boromars stage a festival in [[Callestan]] for [[Saidan|Saidan Boromar]]'s birthday. All of the family's allies will be there, creating opportunities for espionage and assassination. |

!

The Boromar Clan is the most powerful criminal organization in the city of [[Sharn]]. From its humble start as a gang of smugglers and thieves, the Boromars have risen to become one of the most influential forces in the city. They have a stranglehold on the smuggling trade and own the majority of the gambling halls in the city, while most of the fences and thieves in Sharn either work directly for the them or pay tribute in exchange for independence. The Boromars control a vast network of extortion, blackmail, and graft that extends throughout the city, and their influence reaches far beyond the criminal underworld. The early Boromar patriarchs invested wisely over the centuries, and today the Boromars are one of the [[Sixty]], the elite tier of Sharn's aristocracy. The Boromar Clan owns warehouses, taverns, and inns throughout the city, and it has a considerable interest
in the shipping trade. A [[Boromar|Ilyra Boromar]] heir sits on the city
council of [[Sharn]], and the current head of the clan is a
member of the Gold Concord of the [[Aurum]].

As much as some members of the [[Sharn Council]] and
the [[Watch|Sharn Watch]] would like to see the Boromars disbanded,
the syndicate is unlikely to collapse any time soon. 

//''Membership.''// The core membership of the Boromar
Clan syndicate—comprising about one in six of its members—is an
extended family of [[halfling]]s descended from immigrants
who came to [[Sharn]] from the [[Talenta Plains]]. Another
third of the members are unrelated halflings, and the
rest belong to other species. The syndicate employs a
wide variety of bookkeepers and administrators as well
as burglars, con artists, smugglers, and other criminals.
When a situation calls for physical violence, the Boromars usually hire freelancers—members of the [[Sharn Guard]] or agents of House [[Tarkanan]]. The Boromar
family proper has a team of personal bodyguards called
the Clawfoots, who are mostly fierce [[halfling]] warriors
recently relocated from the [[Talenta Plains]]. They primarily defend Boromar holdings and headquarters in the
halfling district of [[Little Plains]].

//''Allies.''// The Boromar Clan has a reputation for omnipotence that makes even the forces of law and order in Sharn hesitant to cross it. It's far safer to be an ally of the syndicate, or at least to stay out of its way, than it is to be its enemy—and it's more lucrative to boot. The
following groups count themselves among the Boromar Clan's closest allies: 

* ''House Jorasco.'' The head of the Boromar Clan, [[Saidan Boromar]], is married to an unmarked heir of House [[Jorasco]], [[Mala Boromar d'Jorasco]]. This marriage has created important ties between the Boromars and the [[halfling]] healers of [[Sharn]]. Members of the Boromar family can secure healing for free, and other members of the syndicate receive a 10 percent discount at Jorasco houses of healing.
* ''Sharn Council.'' Of the seventeen members of [[Sharn's city council|Sharn Council]], four have close ties to the Boromar Clan—including one, [[Ilyra Boromar]], who reports directly to the head of the syndicate. These four vote as a bloc to ensure that the council doesn't take direct action against the Boromars, while enough of the other council members fear the syndicate that they tend to carry the vote. A member of the Boromar Clan can call in a favor to secure an audience with one of these councilors, though such does not guarantee aid.
* ''Sharn Watch.'' The Boromars have been bribing captains of the [[Sharn Watch]] for generations. What's more, if the Boromar Clan collapsed, the underworld would erupt in anarchy as dozens of petty crime lords fought for territory and position. As a result, a member of the Boromars can call in a favor to get minor criminal charges dismissed. 

''//Enemies.//'' Despite the Boromar Clan's position of strength in [[Sharn]], it has many foes, and their unrelenting assaults have put the syndicate in what might be its most precarious position ever. Currently, the following groups pose the greatest threats to Boromar interests: 

* ''Daask.'' The monstrous criminal guild called [[Daask]], a pawn of the leaders of [[Droaam]], has started launching violent raids against Boromar holdings over the last two years. A mobile organization using guerrilla tactics, Daask has managed to circumvent Boromar security and avoid serious reprisals for a range of violent thefts and sabotages. Agents of Daask go out of their way to harm up-and-coming Boromar agents. 
* ''Sharn Council.'' Despite four friends on the city council, the Boromar Clan has several enemies as well. At least three councilors oppose the Boromars because of genuine concern for their constituents; two more oppose the syndicate because they're part of rival organizations (the [[Aurum]] and the [[Tyrants]]). Because of their influence, the council has so far refused to devote any resources to combating the rise of [[Daask]], hoping the monstrous guild will bring down the Boromars. Individual members of the Boromar Clan can be sure that these councilors will oppose any petition they might bring to the council. 
Borunan is homeland to [[ogre]]s. It's a barren and hostile
region, spread across the [[Andnemun Desert]] and the
[[Kelshak Mountains]]. Before the [[Sundering]], the ogres had
a brutal and aggressive culture, dominated by powerful
[[oni]] lords. Despite their martial might, the ogres
rarely threatened the other kingdoms; the Borunan clans
considered [[human]]s to be unworthy foes and devoted
their energy to internal struggles.

Over the course of the [[Sundering]] and the Unification,
the ogres were brought under [[Riedra]]n rule and forcibly
converted to the [[Path of Inspiration]]. Those who resisted
were killed or driven into [[Syrkarn]], where they spawned
the [[eneko]]. Today the ogres are a surprisingly peaceful folk,
their warlike culture expunged by the [[Inspired]]. Although
ogres form the bulk of the population in Borunan, all
villages have [[Chosen]] overseers, and [[human]] and [[shifter]]
troops are found in the bastion cities.

The people of Borunan tend to be cheerful and
straightforward. Feats of strength are admired; a human
isn't expected to match an ogre but still earns respect for
proving his prowess. Athletic events typically include
weightlifting and throwing contests. 

The ogre village of [[Mokush]] lies on the Borunan frontier, near [[Syrkarn]].
When the cork of this bottle is removed, it will capture whispers of any conversation within 30 feet. As it captures these conversations, colorful smoke begins to swirl through the bottle. The colors are vibrant and diverse, each unique to an individual conversation. Once 5 minutes of conversation have been captured, the bottle is completely filled and can hold no more whispers until its contents are emptied.

When the bottle contains smoke, it can be tipped on its side to pour out conversations one at a time. Each of these conversations are written on a small piece of parchment wrapped up and bound by a colorful string that matches the color of smoke that was poured out of the bottle. There is no indication of who spoke the words written on the page; the participants are simply listed as "Speaker 1", "Speaker 2", etc.

Once the contents of the bottle have been poured out, it requires 24 hours to recharge before it can absorb additional conversations.
This bottle contains a breath of elemental air. When you inhale it, you either exhale it or hold it.

If you exhale the breath, you can expel a powerful gust of wind. If you hold the breath, you don't need to breathe for 1 hour, though you can end this benefit early (for example, to speak). Ending it early doesn't give you the benefit of exhaling the breath.
Chill winds howl as snow and hail fill the air. Explorers may
find themselves on an icy plateau or in a mountain pass; with
the vicious storm, visibility is limited to 60 feet, so there's no
knowing what lies ahead. Adventurers may find an occasional
cave or other shelter, but it's always possible that it's already
occupied by a [[remorhaz]] or other stranded [[monstrosity]]. As
this is one of the more dangerous [[layer]]s of [[Risia]], this is a good place
to search for the frozen bodies of other adventurers, held in
stasis beneath the ice.

The raging storm of the Boundless Blizzard never ends,
and adventurers face high winds and lethal cold. The layer is
permanently caught between night and day; due to the storm,
the light is dim at best, and areas of intense snow may be
heavily obscured.
This branch of the [[Unity]] of [[Riedra]] oversees agriculture.
Farmers are servants of the Horn, while Chosen administrators tend to storage, distribution, and planning. [[Dul Maar]] is the seat of the Horn, and its high minister is Lady
Tantashar, a [[hashalaq]] [[Inspired]].
A stiff but bendable chain makes up the curvature of this longbow. Each link of chain has a small pink pearl in the center.

When you shoot a creature that can fly with this bow, its ability to fly is hampered for the next hour, or longer if the creature doesn't have a chance to rest and recover.
You have advantage when using this bow while injured.

When using this bow, you may link a "blood arrow" to your life force. When you fire that arrow, if it hits a target, both you and the target take additional necrotic damage.
This silver bracelet is set with a pale opal. It allows the wearer to interact with spirits, [[ghost]]s, and other supernatural incorporeal creatures as if they were physical entities.
A small yet sturdy steel bracelet, set with a tiny pyramid of clear crystal. When activated, the crystal emits a delicate beam of light, pointing the user towards whatever destination they set, as the crow flies. Destinations must be found on common maps.
This heavy cuff of iron is etched with simple circles. When worn, it completely hides the wearer's aura. Any holy, fiendish, or magical auras become nearly impossible to detect.
While wearing this narrow silver bracelet, nothing can be removed from the user's person without their explicit permission. This includes clothing and items such as coins, weapons and jewelry (but not this bracelet itself).
This bracelet of bright red beads allows the wearer to perform the [[prestidigitation]] cantrip at will. The durations of the effects are ''limited to five minutes''.

<<<
{{prestidigitation}}
<<<
While holding these bracelets, you can speak a command word and turn them into a set of
manacles. Speaking a second command word turns the manacles back into a pair of bracelets.

You can change the command words by touching the bracelets together, then speaking the two new command words. 
These two bracelets are each tied to a small volume of extradimensional space. They are woven from strings of red and glass white beads. While wearing the bracelets, one can store up to 20 pounds of items in each sleeve. There are no outward signs of the objects, and the user does not feel their weight. If the bracelets or clothing are removed, the objects will immediately spill out of the sleeves.

Placing these bracelets inside an extradimensional space
created by a [[bag of holding]], [[portable hole]], or similar item
instantly destroys both items.

See also [[gloves of storing]].
Brass is the finest architect of the [[dao]], and is responsible
for most of the grand palaces of the [[efreet|efreeti]]. She's always
intrigued by unusual architecture and has visited [[Sharn]]
a few times to study the towers. She's also celebrated for
her sculptures, and has produced everything from tiny
miniatures to towering colossuses, along with magical
marvels that begin as the former, then transform into
something far larger, like [[figurines of wondrous power|figurine of wondrous power]].
The most gregarious of the true [[dragon]]s, brass dragons crave conversation, sunlight, and hot, dry climates.

A brass dragon's head is defined by the broad protective plate that expands from its forehead and the spikes protruding from its chin. A frill runs the length of its neck, and its tapering wings extend down the length of its tail. 

A brass dragon wyrmling's scales are a dull, mottled brown. As it ages, the dragon's scales begin to shine, eventually taking on a warm, burnished luster. Its wings and frills are mottled green toward the edges, darkening with age. As a brass dragon grows older, its pupils fade until its eyes resemble molten metal orbs.

!! Magic and Breath Weapon

The brass dragon can breathe a line of fire, as well as a cloud of sleeping gas. As innate spellcasters, adult brass dragons can cast spells such as [[wall of sand]], [[charm]], [[sending]], and [[tongues]].

{{DragonAgeCategories}}
This [[adamantine]] breastplate of ancient [[Dhakaan]] belonged to
a [[hobgoblin]] hero known as a mighty slayer of [[aberration]]s.

This breastplate is exceedingly well made, nearly impenetrable, and even provides protection against spells and magical effects. In addition, if the wearer successfully resists the "mind blast" ability of a [[mind flayer]] or other aberration, they are unaffected, and the effect is reflected back toward the aberration as if the cone originated from the wearer, including the aberration in its area of effect.
While sucking on this breath mint, you can mimic the
speech of another person for 1 hour. You must have heard
the person speaking for at least 1 minute. 
[[Arcane artillery|arcane artillery]] requires a powerful surge of magical energy
to fuel the attack. [[Wizards|wizard]] and other spellcasters can prime
arcane artillery by expending their own power, but bombardiers (specialized [[magewright]]s) don't always have that option. Instead, a bombardier charges
the weapon by using the //breath of Siberys//—a small globe
containing a highly refined solution of [[dragonshard]]s held in a
suspended state. While priming arcane artillery, the operator
crushes the breath of Siberys against an engraved brass plate;
the sphere dissolves and the weapon is charged.

House [[Cannith]] [[artificer]]s are working to adapt
other charged items, such as traditional staves, to use breath of Siberys.
This translucent, bubble-like sphere has a slightly tacky outer surface, and you gain the item's benefits only while wearing it over your head like a helmet.

The bubble contains 1 hour of breathable air. The bubble regains all its expended air daily at dawn.
''Capital:'' [[Wroat]]<br/>
''Hallmarks:'' Espionage, industry, metalwork, organized crime, subterfuge

In the wake of the [[Last War]], Breland is one of the most
powerful nations in [[Khorvaire]]. Possessing a large population and abundant resources, Breland leads the continent in industry.

The Brelish are known for their pragmatism and independence. They lack the discipline of [[Karrn|Karrnath]]s and the faith of the [[Thrane]]s, but they excel at finding innovative
solutions to problems. The Brelish also have a talent
for intrigue and subterfuge. The [[King's Dark Lanterns]]
is one of the finest intelligence agencies in Khorvaire,
rivaled only by House [[Phiarlan]] and the [[Trust]] of [[Zilargo]].
The dark side of these aptitudes is a strong streak of
cynicism, which allows crime and corruption to flourish
in Brelish cities and temples. The [[Sovereign Host]] is the
dominant religion of Breland, but in general the Brelish
aren't as devout as citizens of other nations.

King [[Boranel ir'Wynarn]] rules Breland in conjunction
with an elected parliament. Boranel is a popular leader
celebrated for his exploits during the Last War, but his
children have yet to prove themselves, and a growing
movement advocates for abandoning royal rule when
Boranel passes. 

!! Interesting Things About {{!!title}}

* [[Sharn]] is the largest city in [[Khorvaire]]. Almost a nation in its own right, the City of Towers is a hub for commerce and intrigue. 
* The [[Boromar Clan]] is the oldest and most powerful criminal organization in Breland. The Boromar [[halfling]] leadership maintains ties to the [[Talenta Plains]]. Other notable criminal organizations include the monsters of [[Daask]] and House [[Tarkanan]], an alliance of assassins and thieves with [[aberrant dragonmark]]s.
* Breland's major cities are highly cosmopolitan. Due to its proximity to [[Droaam]], Breland's cities include more monsters—[[ogre]]s, [[orc]]s, [[goblinoid]]s, and even [[sahuagin]], [[harpies|harpy]], and [[gargoyle]]s—than elsewhere in the Five Nations. 

!! Brelish Characters

As you develop a Brelish character or NPC, consider the following qualities:

* ''Slightly Shady.'' Many Brelish have a loose relationship with the law. Even if you're a hero, you might have questionable connections or friends in low places. Backgrounds such as criminal, spy, or charlatan can reflect this tendency, regardless of your class. You could also be a folk hero who challenges the laws to protect the innocent, or an entertainer who plays in every dive in [[Sharn]].
* ''Innovative and Independent.'' Find your own path in the world; don't simply follow established traditions. As a [[cleric]], you might challenge your church and follow your own divine revelations. As a [[wizard]], you could search for new techniques or attempt to unravel forgotten secrets.
* ''Practical.'' Whether it's about fashion, food, or conversation, the Brelish tend to be pragmatic. Why spend a fortune on a fancy meal when a simple one will do? You use whatever tool gets the job done, and you don't see a need for unnecessary flair. 

!! Cities and Sites

Beyond the magnificence of Sharn, Breland hosts a vast spectrum of other wonders. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>


!! Aftermath of the Last War

For Breland, the Last War was an ever-shifting tangle
of enemies and alliances. Breland fought [[Aundair]], [[Cyre]],
[[Karrnath]], and [[Thrane]] at various points of the war, as
well as clashing with [[Darguun]] and [[Droaam]]. These conflicts caused many Brelish to embrace a cynical view of
the world, a sense that no one can be fully trusted and
that people need to look out for themselves. As a Brelish
character, you could have an axe to grind against any
of the other nations. This is balanced against a strong
belief in humanoid rights and dignity, convictions that
motivated the Brelish to shelter more Cyran refugees
than any other nation.

The major cities of Breland host significant populations of refugees, both Cyrans and Brelish from villages
lost in the war. This has increased the overall level of
poverty and desperation and contributed to an increase
in crime. The southern cities—including [[Wroat]] and
[[Sharn]]—suffered relatively little damage in the war, but
northern Breland was hard hit. The city of [[Vathirond]]
is still repairing the damage from Thrane attacks, and
many northern villages are either recovering or have
simply been abandoned.

Despite these struggles, the Brelish maintain a positive view of their future. The heart of Breland is as
strong as it ever was, and the citizens believe that had
the war continued, Breland would have triumphed. 
[[Breland]]'s parliament consists of both elected legislators and hereditary noble legislators. The citizens of Breland elect legislators every two years. These elected lawmakers, selected by popular vote (one from each village or town, two from each city, and three each from the metropolises of [[Sharn]] and [[Wroat]]), are sent to the capital to participate in all parliamentary proceedings. The noble legislators gain their seats in the parliament based on the status of their families; each noble family holds one seat in the parliament. Each year, the recognized head of the family appoints a family member to parliamentary duty. In many cases, the yearly appointment is symbolic, and
each family has one representative who serves year in
and year out. Twenty-seven noble families serve the
crown of Breland.

The [[Breland]] parliament usually works in concert
with the [[crown|Boranel ir'Wynarn]], but the two branches of authority have
disagreed and even clashed on occasion. One noble in
particular, Lord [[Ruken ir'Clarn]] doesn't want to see the monarchy continue after
[[Boranel|Boranel ir'Wynarn]]'s death. He and a few trusted conspirators seek to
remove the crown's authority with the passing of Boranel,
thereby giving all ruling power to the parliament. The
parliament, in turn, would elect a prime minister to
preside over the council and the nation. Ruken envisions
himself initially filling that role.
[[Breland]]'s
national museum is located in Farhaven Tower, near
the Bazaar Bridge leading to [[Middle Dura]]. It has two
main areas of emphasis: art representing the Brelish
spirit (which primarily means any artwork created
by a Brelish artist) and antiquities from [[Xen'drik]],
which certain people in the Brelish government
would like to view as a colony of Breland. Its Brelish art collection is unequalled, and includes some
world-famous works by great masters of antebellum
[[Galifar]]. Its collection of antiquities is also impressive, though it is small in comparison to that of the
[[Dezina Museum|Dezina Museum of Antiquities]] at [[Morgrave University]]. 
The baron of House [[Deneith]], Breven commands the
largest army remaining after the end of the [[Last War]],
but he’s not inclined to use it for his own ends. He
is surrounded by aggressive advisors, however, who
would like to see a Deneith sitting on the throne at
[[Thronehold]]. 
The Brey River in [[Khorvaire]] flows from [[Lake Brey]] into [[Scions Sound]]. It forms part of the border between [[Breland]] and [[Thrane]].
The long, arcing, covered bridge
that connects [[Breland]] Spire (and the [[Commons]])
to Dalannan Tower serves as a center of student
life at [[Morgrave|Morgrave University]]. Shops line one side of the bridge,
including bookstores, paper makers, clothing and
equipment vendors catering to students, and related
businesses. Notices, such as announcements of
campus events, job opportunities, items for sale,
rooms for rent, and the like, cover the opposite wall
of the bridge. 
The people of [[Oakbridge]] are generally a social and outgoing group, but the friendliest
inhabitants of the district are the members of Milana
family, who live in a small, comfortable townhouse
they have named Bright Wind. Jolan Milana ([[human]]) is a baker who sells his wares in
[[High Hope]], while his wife Sarina ([[human]]) is a seamstress who works out of their
home. They have three young children: Jalina (female,
12), Mesin (male, 8), and Jeral (male, 5). Anyone who
settles in Oakbridge soon receives a personal welcome
from the Milanas. In time, the family may be used as
a way to pull a party into an adventure. Perhaps one
of the children goes missing or overhears a conversation she shouldn't have. Maybe Jolan is infected with a [[Riedra]]n [[mind seed]]. Or perhaps this friendly family is
hiding a dark secret—a tie to a [[Radiant Cult|radiant idol]] or one
of the [[Cults of the Dragon Below]]. 
''Date: '' [[12 Nymm|Khorvaire calendar]]

Brightblade, the holy day of [[Dol Dorn]], the [[Sovereign|Sovereign Host]] Lord of Strength
and Steel, sees festivals occur in all of the temple districts of the city. Prizefights, wrestling matches, archery contests, and jousts occur throughout the day, culminating in a contest of champions at the [[Cornerstone]] arena in [[Middle Tavick's Landing]]. The
champions receive generous prizes, and a fortune can be made gambling on the contests.

Occasionally, even more fantastic conflicts have been staged on Brightblade—full-scale battles held on the training grounds of [[Daggerwatch]], free-for-all melees with hundreds of contestants, and similar spectacles.
This wand is made from the bristles of a giant boar bound together with magical, silver thread. It weighs half a pound and is 8 inches long. The wand has a strong boar musk scent to it, which is difficult to mask. The wand is comprised of 5 individual bristles, and, while holding it, you may choose to remove a bristle to invoke one of the following effects.

* //''Ghostly Charge.''// You toss the bristle towards one creature you can see. A phantom giant boar charges 30 feet toward the creature. 

* //''Truffle.''// You plant the bristle in the ground to conjure up a magical truffle. The mushroom can be consumed to rapidly heal from injuries.

So long as the wand has 1 bristle remaining, it regrows a bristle daily at dawn. Using the last bristle destroys the object.
The Broken Anchor is a tavern catering to [[Lhazaar|Lhazaar Principalities]] travelers. It one of the few places in [[Sharn]] where one can order salasta, a strong, clear alcoholic beverage from made using salas seaweed. Illusory sounds of gently crashing waves fill the tavern, creating a nostalgic environment for Lhazaarites far from home.
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression: ''Rows of stone houses circle the
central towers of this district. The stone is worn
and cracks are beginning to show. The streets are
surprisingly quiet and empty. The people view
strangers with suspicion and fear, and hurry toward
their destinations.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Tumbledown]] (northeast); [[Hareth's Folly]] (southeast); [[Underlook]] (southwest); [[Oldkeep]] (below); [[Highwater]] (above)

Early in the history of [[Sharn]], Barchan's Arch was
one of the finest residential districts in the city.
Barchan ir'Tyran, a powerful nobleman, along with
Hestian ir'Tain, helped shape the City of Towers.
Then, during the reign of King [[Galifar the Dark]],
the ir'Tyran family attempted to seize the throne of
the kingdom. Those ir'Tyrans who survived were
stripped of their noble rank and banished from [[Galifar]]. Since then, Barchan's Arch has been shunned
by the powerful families of Sharn, and it has fallen into disrepair; two hundred years ago, people began
calling it “Broken Arch,” and the name stuck.

Today, Broken Arch lies under the shadow of the
treason of the past. While it has a few manor houses,
these belong to the lesser families of Sharn or merchants trying to climb the social ladder. The district
rarely receives aid from the [[city council|Sharn Council]], and the
[[Watch|Sharn Watch]] patrols are lighter than in the other districts
of the ward. As a result, criminals from [[Lower Dura]]
often frequent the alleys of Broken Arch and prey
on the honest citizens. [[Daask]] bullies have become an
especially common threat over the past three years.
[[Dol Dorn]] stands between the treacherous [[Mockery]] and the honorable [[Dol Arrah]]. He is the [[Sovereign|Sovereign Host]] of the simple warrior, of anyone who pits their strength and skill against another in a fair fight. Legend says that when a soldier was set upon by three [[ogre]]s who sundered his sword (a gift of the [[Traveler]]), he called on Dol Dorn for guidance and miraculously slew his foes using only his hands, feet, and the hilt of his broken blade. He founded the order that continues to this day.

The Order of the Broken Blade is a religious [[monastic order|monk]]. Its devotees respect all the [[Sovereigns|Sovereign Host]] and honor them in their moments, but it is [[Dol Dorn]] who they look to for inspiration. While a Monk of the Broken Blade trains to become a weapon, they also honor the Sovereign of Strength and Steel through mastery of the longsword. The order teaches that their Sovereign speaks to them in battle, and while they learn the basics of their tradition in a monastery, it is only in true combat that they can learn directly from Dol Dorn. As such, monks of the Broken Blade wander [[Khorvaire]] in search of worthy struggles. Some followers of the Sovereigns welcome the presence of one of the Broken Blades and may ask the monk to help overcome a threat to their community. Others—especially followers of the [[Three Faces of War]]—see the Broken Blades as dangerous loners who are unwilling to work within the greater structure of an army. 
The Broken Land of [[Lamannia]] is a volcanic region filled with high
mountains and lava plains. There are constant eruptions, and
the layer is home to many fire and earth [[elemental]]s that engage
in an ongoing environmental conflict. Fire elementals flow
out with the lava as volcanoes erupt; earth elementals work
to contain the eruptions and to rebuild the shattered peaks,
only to have them erupt again. Few beasts manage to thrive in
this layer, but some tough [[dinosaur]]s have clawed out a niche.
While this region has fewer connections to [[Eberron]] than the
[[Twilight Forest]], it's also possible to find remnants of other
travelers here; it's a harsh and deadly landscape for stranded
adventurers or for those who seek a lost relic from this place.
The {{!!title}} is a street gang of 
Khoravar [[half-elves|half-elf]] in [[Sharn]] who often target
[[elves|elf]] with acts of violence, frequently
disfiguring their victims.
Twelve nations collapsed during the [[Sundering]], folded
into the realm of [[Riedra]]. Old customs were wiped away,
castles and cathedrals shattered and left in ruins. People
were told to forget the past. [[Sarlona]] had finally risen
from the nightmare of war into an age of peace.

Yet the past held as many wonders as terrors. Art, religion, philosophy, magic—each kingdom had its treasures, and many of those jewels are still out there. Study of the past is forbidden to Riedrans, but some find its lure
impossible to resist. Over the centuries, a secret movement has grown, an alliance of those who doubt the [[Path of Inspiration]] and seek to reclaim the traditions of the
past. These rebels call themselves the Broken Throne.

The Broken Throne is not a violent organization,
and its members have no plans to fight the [[Inspired]]. They simply want to preserve ancient traditions. To this end,
they gather relics of the past, both physical treasures and
knowledge. Illiterate recruits are usually taught to read,
so they can appreciate books and scrolls recovered from
the ruins. Many learn the traditional crafts of their culture, pushed into obscurity by the Inspired. A few study
the priestly traditions of [[Pyrine]] and [[Khalesh]], the [[psionic|psionics]]
teachings of the [[Maleeri|Dor Maleer]] [[wilder]]s, or the [[arcane magic]] of
the [[Corvagura]]n [[sorcerer]]s and [[Syrk|Syrkarn]] [[wizard]]s. Members of
the Broken Throne believe these are not the tools of dark
spirits but are instead wonders.

The Broken Throne is most active in villages located
near ancient ruins. Within the bastions, a few of its members hold significant positions in the [[Guiding Path]], and these pathfinders help cells communicate
with one another. A passive force, the Broken Throne takes
no direct action against the [[Inspired]]. Nonetheless, the
practices of the Throne are heresy, and the [[Thousand Eyes]]
(and most [[Riedrans]]) eliminate any cell that is exposed.

''Getting the PCs Involved:'' Members of the Broken
Throne have a critical trait most Riedrans lack: curiosity about other cultures. They might offer unexpected sanctuary or assistance to foreigners in trouble, and they
are often educated about nearby ruins. It's possible to
make contact with the Broken Throne in [[Syrkarn]], since
those fleeing the [[Thousand Eyes]] often come to this land
to continue exploring the past. A Throne refugee can
also provide a relic hunter with helpful contacts inside
[[Riedra]]. Of course, the help of the Broken Throne comes
at a price—those who plunder an ancient ruin might have
to give the Throne access to what they recover.
The royal residence of King [[Boranel ir'Wynarn]] of [[Breland]] rises
from an island in the middle of the [[Howling River]] in the nation's [[capital|Wroat]].
Two bridges connect the isle to the south bank.
Streets climb a steep hill and end at the tall gate set
in the castle’s high stone walls. According to legend,
the castle takes its name from [[Galifar]]’s conquest. At
one point while in these lands, he broke his blade in
battle but somehow managed to win the day. (This story has much in common with the founding myth of the monastic order of the [[Broken Blade]].) He had
the fortress built to commemorate the victory, and it’s
said the blade remains inside its walls still.

Brokenblade Castle contains royal apartments,
garrisons, armories, kitchens, and other rooms and
features necessary to keep the place in full operation. King Boranel spends two-thirds of every year traveling, so his brother [[Kor ir'Wynarn]] oversees the
castle when not attending to his responsibilities at the
[[King's Citadel]].
The {{!!title}} is a [[Sharn]] street gang of 
[[Brelish|Breland]] veterans who antagonize [[Cyrans|Cyre]]
and former soldiers from other nations.
Bronze Bay is a body of water in [[Argonnessen]], located near its northern shore between the [[Great Barrier]] mountains and the [[Nestling Plateau]].
Bronze [[dragon]]s are coastal dwellers. A ribbed and fluted crest defines the shape of a bronze dragon's head. Curving horns extend out from the crest, echoed by spines on its lower jaw and chin. To help them swim, bronze dragons have webbed feet and smooth scales. 

A bronze wyrmling's scales are yellow tinged with green; only as the dragon approaches adulthood does its color deepen to a darker, rich bronze tone. The pupils of a bronze dragon's eyes fade as the dragon ages, until they resemble glowing green orbs.

!! Magic and Breath Weapon

The bronze dragon can exhale lightning bolts, as well as a wave of repulsion that knocks creatures back. As innate spellcasters, adult bronze dragons can cast spells such as [[watery sphere]], [[storm sphere]], [[tidal wave]], [[control winds]], and [[fog cloud]].

{{DragonAgeCategories}}
This exceptionally hard wood, which only grows in [[Aerenal]] and in a
few groves hidden deep in the [[Towering Wood]], is useful in the manufacture of armor and
weapons. Unlike most woods, bronzewood can be used
instead of metal to fashion heavy armor and weapons—it
is somewhat shapeable during manufacturing, and it keeps
a sharp edge. Although dense and weighty compared to
other woods, it is still lighter than steel.

//Leafweave// armor is made from alchemically treated leaves of the bronzewood
tree, and can offer the same level of protection as studded
leather or a chain shirt.
While wearing this brooch underwater, you can twist it and cause it to become a large air
bladder. The bladder brings you to the surface at a rate of
10 feet per second. The air bladder turns back into a brooch
when you reach the surface, or when you pop it and end the effect. 
This wooden broom, which weighs 3 pounds, functions like a mundane broom until you stand astride it and speak its command word. It then hovers beneath you and can be ridden in the air. It has a maximum flying speed of about 12 miles per hour. It can carry up to 400 pounds, but its flying speed drops with increasing weight. The broom stops hovering when you land.

You can send the broom to travel alone to a destination within 1 mile of you if you speak the command word, name the location, and are familiar with that place. The broom comes back to you when you speak another command word, provided that the broom is still within 1 mile of you.
This finely carved pipe blows odorless bubbles instead of smoke when used. While you hold the pipe, you can create a 20-foot-radius sphere of bubbles centered on you, which heavily obscures the area.

Also, once per day, you can use the pipe to summon a bubbly steam [[mephit]] that obeys your verbal commands. It disappears in a harmless puff of steam after 1 minute or if it moves more than 60 feet from the pipe.
Bugbears are hulking, hairy [[goblinoid]]s typically reaching 7 feet in height and weighing in at around 300 pounds. They mature at about the same pace as [[human]]s and live about as long. Bugbears possess plenty of raw strength, but also exhibit a surprising capacity for stealth; they are fond of setting ambushes, and flee when outmatched.

The [[Dhakaan]]i word for bugbears is //guul'dar//, meaning "strong people".
<$list filter="[tag[dragonmarked house]!has[article]]">
<$button>
<$action-setfield article="House "/>
<<currentTiddler>>
</$button>
</$list>

<ul>
<$list filter="[tag[Lower Central]!tag[district]sort[title]]">
<li><$button>
<$action-listops $tags="-[[Lower Central]]"/>
x
</$button> {{!!article}}<$link/>{{!!title}} ({{!!tags}})
</li>
</$list>
</ul>
As the caster holds their hands with thumbs touching and fingers spread, a thin sheet of flames shoots forth from their outstretched fingertips. The flames spread out in a cone that extends up to 15 feet from the caster.
The Burning Ring is not
a specific location in [[Firelight]]. It moves frequently
as the [[Sharn Watch]] keeps trying to shut it down, but
it seems to find a place to operate every night. It
offers blood sport, gladiator-style combat conducted
by amateur and professional warriors. The combat
is real—the combatants use a variety of weapons but
wear no armor—and sometimes matches end in
death. Ideally, the healer on hand for every fight
reaches a fallen combatant before he dies, but sometimes the fallen are beyond help. Death only seems
to make the crowds cheer louder.

The ringmaster is Hoas Junter ([[shifter]]), who has extensive connections to the [[Daask]]
gang. Sometimes his connections help him bring in a
monster as a combatant to the crowd's utter delight.
The monster usually wins.

Finding the Burning Ring on any given night requires gathering information from the locals in [[Firelight]] or [[Torchfire]]. 
The sky of this [[layer]] of [[Shavarath]] is filled with many [[airship]]s, some large enough to be floating towns. A few islands of rock float amongst the solid
clouds, but if there's any land below, it's hidden by deadly fog.
While there are skirmishes on the stone islands, most of the
action occurs in the skies. Winged [[angel]]s and [[fiend]]s circle and
duel, while [[conscript|manifestation]]s guide [[dragon]]s and other aerial mounts. 
A creature that inhales this poison and can't resist its effects suffers significant poison damage to their lungs. The effect persists up to a couple of minutes after the initial attack, causing additional damage.

Mined in the [[Byeshk|Byeshk Mountains]] and [[Graywall Mountains]] bordering [[Droaam]], this rare metal is prized by smiths for use in jewelry and weapons. It
has a lustrous purple sheen and is hard and dense. Byeshk weapons of any type are able to overcome the defenses of [[daelkyr]], which are resistant to all other weapons. 

Byeshk is difficult to work, especially when attempting to make it into armor,
and it offers no significant advantage over iron armor. An item made of byeshk weighs
50% more than the same item made of iron. 
This mountain range separates [[Droaam]] from the [[Eldeen Reaches]]. The mountains are named after the abundant veins of [[byeshk]] ore that are found here. The lustrous purple metal is particularly effective against [[aberration]]s.
In [[Sharn]], in lieu of an embassy, the [[Valenar]] are represented by Caerlyn's Blade, a mercenary troop based in
the [[Bazaar]] of [[Middle Dura]]. When Valenar diplomat [[Daera Sorandal]] comes to the
city, she generally stays with these warriors. If adventurers need to do business with the [[Valaes Tairn]], they
should begin by speaking with [[Caerlyn Tyrell]], the commander of the Blade. If he
can't help them, he may at least know where Daera can
be found. Of course, he needs a reason to help them.

Caerlyn will shed blood in exchange for gold, but
his friendship cannot be bought—it must be earned.
A character who defeats Caerlyn in a duel or a race,
or even someone who challenges him and loses the
contest, is more likely to receive help than someone
who tries to buy information from him.

During the [[Last War]], Caerlyn's Blade earned great renown by aiding the [[Brelish|Breland]] evacuation of its western lands, riding into battle against the [[ogre]]s and [[troll]]s of [[Droaam]] with deadly skill.
Unusually intelligent for one of his
kind, Cairngorm is a [[nabassu]] [[gargoyle]] and the lord of
[[Grimstone Keep]]. He holds the loyalty of a host of gargoyles that have long dominated the [[orc]]s and [[goblin]]s
of the region. The [[Daughters of Sora Kell]] have placed
a troop of [[troll]]s under Cairngorm’s command, but
these servants are charged with watching the wily
gargoyle as much as assisting him.
''District Type: ''Inn district<br/>
''Buildings:'' Temples ([[Olladra]], the [[Traveler]]), average
lodging (35), poor lodging (100), average food (5),
poor food (40), upscale trades (2), average trades
(35), poor trades (70), upscale services (2), average
services (30), poor services (70)<br/>
''First Impression:'' The inns and taverns in this
district are dark and grimy. Vermin run like water
through the streets on a stormy day, including rats
that scurry into shadows and foul men and women
who study you with avaricious eyes.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Precarious]] (west); [[Gate of Gold]] (northeast); [[Oldkeep]] (north); the [[Stores]] (south); [[Ashblack]] (below); the [[Bazaar]] (above)

When [[Sharn]] first rose from the ruins of Shaarat,
Callestan (sometimes called "Hostelhome") was the center for trade and commerce.
Today, it serves as a center for illegal trade and
activity. The people who come to stay in the inns of
Callestan sacrifice comfort to avoid the watchful eyes
of the law, and many crooked deals are arranged in
these dark taverns.

Until recently, Callestan was a stronghold of
the [[Boromar Clan]]. The [[Tyrants]] and House [[Tarkanan]] both conducted business in the district, but
the Boromars collected tribute from the merchants,
and the fences, [[dreamlily]] dens, and gambling halls
all owed allegiance to the [[halfling]] crime lords. Over
the last two years, however, [[Daask]] has been posing a
significant threat to the Boromar position in Callestan. Daask soldiers have beaten and killed Boromar
operatives. Businesses with ties to the Boromars have
been threatened, robbed, or even destroyed. [[Tarkanan]] and the [[Tyrants]] have taken advantage of this
conflict to strengthen their own positions, expanding
their businesses and contacts in the region.

Most of the average services and trades, and all
of the upscale services and trades, offered in this
district are criminal in nature. Callestan is the best
place to go to find a fence, arrange for a burglary,
or acquire forged papers. All of these things can
be found elsewhere in the city, but in Callestan
you don't have to worry about the [[Watch|Sharn Watch]] taking an
interest. At this point, the district has become a crossroads for the four major criminal powers of
[[Sharn]], and one must deal with different groups for
different services. House [[Tarkanan]] usually handles
assassination and theft; forgery, deception, and
prostitution are typically tied to the [[Tyrants]]; and
smuggling, gambling, petty theft, and illegal goods
are the realm of the [[Boromar Clan]]. [[Daask]] takes the
role of a wild card that could intrude on any of these
areas, but usually deal in violent crime. 

!! The Shape of Callestan

The heart of Callestan is the plaza called the
Bridge. This central square serves as an open
market and speaker's corner. It's not on a bridge;
rather, the center of the plaza contains the
wreckage of a bridge that fell from one of the
higher wards.

More recently, the Bridge has taken on
another meaning: it's the line between Boromar
territory and the wilds. Everything to the west
of the Bridge is still under Boromar dominion.
Fences, [[dreamlily]] dens, gambling holes—if it's
Westbridge, the Boromars take a cut and will act to protect it. The [[halfling]] [[Ilsa Boromar]] is the local clan leader. Eastbridge is a blend of Boromar
loyalists, [[Daask]] insurgents, refugees and veteran
soldiers driven here by war, even a small band of
[[warforged]]. Westbridge is as safe as Callestan gets,
while anything goes in Eastbridge.

Westbridge has a significant [[halfling]] population.
In Eastbridge, a group of [[goblin]]s, [[kobold]]s, and
[[gnoll]]s have taken up residence in a block of
condemned tenements known as the Kennels.
Aside from this, Callestan is incredibly diverse,
and members of any race can be found here.

Callestan is an inner district, which means
that it's largely enclosed in one of the massive
core towers of [[Dura]] Quarter. However, it's large
enough that it extends out to the walls of the
tower. Many people live in or on the walls, in
tenements or shops carved into the thick stone. 

!! Noteworthy Locations

* The [[Anvil]]. This fading [[Ghallanda]] inn struggles to maintain its poor to modest quality. It's known to be under the protection of the [[Boromar Clan]], which makes it one of the safest establishments in [[Lower Dura]]. 
* The [[Crooked Mirror]]. A curious tavern owned by a family of [[changeling]]s, the Crooked Mirror changes its appearance and theme every week. It's rumored to be connected to the [[Tyrants]]. 
* The [[Silvermist Theater]]. A remnant of Callestan's glory days, this place is a shadow of the grand establishment it once was. The current owners are known for staging bizarre events at the Silvermist. Since the [[Sharn Watch]] stays out of Callestan, anything can happen here. 
* The ''Butcher's'' is a combination butcher shop and bar in Eastbridge. It's popular with the local [[gnoll]]s and is the best place to find Daask soldiers, though not all monsters in the region have ties to Daask. 
* The ''General'' is a headless statue in a small square in Eastbridge. It's hundreds of years old and no one actually knows who it represents. The most destitute inhabitants of the district often sleep around the General. 
These small [[layer]]s of [[Fernia]] reflect the comfort fire can offer. A campfire
layer can be a literal campfire, a lonely light out in the darkest
wilderness. Another campfire layer is an inn called the First
Hearth, where the [[angel]]ic barkeep Ashe offers warm drinks
around the fireplace from which the inn takes its name. Campfire
layers are safe havens, and a perfect place for travelers to rest.
The flame of this candle is not extinguished when immersed in water. It gives off light and heat like a normal candle.
''Leader:'' Cannith East, [[Zorlan d'Cannith]]; Cannith West, [[Jorlanna d'Cannith]]; Cannith South, [[Merrix d'Cannith]]<br/>
''Headquarters:'' Cannith East, [[Korth Enclave]] ([[Karrnath]]); Cannith West, [[Aundair Enclave]] (near [[Fairhaven]], [[Aundair]]); Cannith South, [[Cannith Tower|Cannith Enclave (Dragon Towers)]] ([[Sharn]], [[Breland]])<br/>
''Dragonmark:'' [[Mark of Making]]

//My house built the modern world. [[Orien]] may drive the lightning rail, but it's Cannith who builds the cars and lays the stones it travels on. Cannith makes the [[everbright lantern]]s hold the night at bay. Smith, carpenter, [[alchemist]]—the best all carry my seal.//

<div align="right">—Baron Merrix d'Cannith</div>

House Cannith dominates all forms of manufacturing,
both mystical and mundane. [[Gorgon|gorgon]]-marked Cannith
forgeholds use streamlined forms of production to
quickly produce common goods. Even independent
artisans often learn their trade at Cannith academies
and adhere to Cannith standards. The House of Making
builds the tools the other houses rely upon, and it has
always been the unspoken leader of the [[Twelve]].

The [[Last War]] was a time of great opportunity for
Cannith. Every nation wanted weapons and [[warforged]],
along with mundane arms and armor. The war raised
the house up, and then tore it down. House Cannith was
based in [[Cyre]], and the [[Mourning]] destroyed the house
leadership and key facilities. Now three barons jockey
to fill the leadership vacuum: the [[alchemist]] [[Jorlanna|Jorlanna d'Cannith]] of
[[Fairhaven]], weaponsmith [[Zorlan|Zorlan d'Cannith]] of [[Korth]], and [[Merrix|Merrix d'Cannith]] of [[Sharn]], innovator of [[warforged]]. It remains to be seen
whether one of these leaders will unite the house, or if it
will shatter under the strain. If you're an heir of House
Cannith, you should decide which of these barons you
serve or if you have other ideas about the house's future.

!! History of House {{!!title}}

The [[Mark of Making]] first appeared among the [[human]] traveling tinkers and artisans of the Cannith clan of [[Cyre]] almost 2,500 years ago. Between the magic of the mark and its members’ natural inventiveness, Clan Cannith steadily increased its power and influence, creating its own areas of jurisdiction throughout Cyre and central [[Khorvaire]]. An active and enthusiastic participant in the [[War of the Mark]], House Cannith found itself one of the most powerful of the [[dragonmarked house]]s after the war.

House Cannith used that power to forge partnerships. At the end of the
[[War of the Mark]], House Cannith
worked with the other [[dragonmarked house]]s to establish the
[[Twelve]]. They allied with the [[elemental]]
binders of [[Zilargo]] and the scions of
House [[Lyrandar]] to create [[elemental ships|elemental galleon]] to sail Eberron’s seas. Emboldened by that success, House Cannith’s [[magewright]]s collaborated with House [[Orien]] on the [[lightning rail]]. House Cannith also helped
to establish the network of [[message stations|speaking stone]] that
House [[Sivis]] uses to facilitate communication across
[[Khorvaire]].

!!! The Last War

When the [[Last War]] began, House
Cannith found itself acting as arms dealer to all five
of the combatant nations, a position that allowed it to
amass fantastic wealth and an unparalleled degree of
influence among the [[Five Nations]]. But selling weapons and armor was only the beginning. In 965 YK, the first [[warforged]] soldiers marched out of Cannith’s
forgehold at [[Whitehearth]], and soon House Cannith was supplying not only weapons but also the soldiers that wielded them.

House Cannith’s unbounded prosperity lasted
almost thirty years. But in a single moment on the
Day of [[Mourning]], House Cannith lost its leader,
Baron [[Starrin d'Cannith]], many of its [[dragonmark]]ed heirs, and the [[Whitehearth]] forgehold. The [[Treaty of Thronehold]] made matters worse for the house,
because it set the [[warforged]] free and banned House Cannith from making more. With the [[Five Nations]] at peace, Cannith’s role as arms dealer to the world
diminished.

These recent setbacks have made House Cannith’s leaders more determined than ever before to reverse the house’s fortunes, and have highlighted the rivalry among the house’s leadership. At any given moment, Cannith’s inventors are sequestered in secret laboratories across [[Khorvaire]], trying to create something even more dramatically world-changing than the towers of [[Sharn]], the [[lightning rail]], or the [[warforged]].

Since 994 YK, Cannith has been a house divided. So
many of [[Starrin|Starrin d'Cannith]]’s heirs and the house’s elders died on
the Day of [[Mourning]] that not only was it unclear who
would succeed Starrin, but in the weeks and months
after the disaster, House Cannith couldn’t gather
together enough leaders to enable the succession to
be determined. Eventually three rivals emerged, each
having only a distant link to Starrin d’Cannith. The
contenders claim roughly equal support within the
house, so the matter cannot be resolved through consensus. Each would-be baron is involved in multiple
plots against the other two.

!! Guilds and Organizations

The house has two [[guild|trade guild]]s that are responsible for the lion’s share of Cannith’s postwar profits.

* the [[Fabricators Guild]]
* the [[Tinkers Guild]]
Cannith Enclave inhabits
the whole of Cannith Tower. In both [[Highest Towers]]
([[Upper Central]]) and [[Granite Halls]] ([[Lower Central]]), members of House [[Cannith]]'s [[Fabricators Guild]] operate artisans' shops in the tower. [[Merrix d'Cannith]] leads House Cannith's [[Sharn]] [[enclave]].

The tower extends down into the [[Cannith Forgehold]] in [[Ashblack]], Merrix's heavily warded personal domain.
House [[Cannith]] played a major role in the development of [[Sharn]], and as the
towers of the city rose up into the sky, the Lords of
Cannith sunk their roots into the ground. The [[enclave|Cannith Enclave (Dragon Towers)]]
in [[Dragon Towers]] is used for trade negotiations and
diplomatic purposes, but the Forgehold is the heart of
House Cannith. This subterranean fortress includes
a wide range of forges, alchemical workshops, and
mystical facilities. It is an [[artificer]]'s dream, and
[[Merrix d'Cannith]] spends most of his time there.

The Forgehold has many secrets. The first is a
shrine to the [[Traveler]], who was revered by the early
[[Cannith]] tinkers. The greatest secret is hidden even
from other members of the house. In an ancient
chamber hidden behind [[illusion]]s and arcane seals,
Merrix has preserved one of the [[creation forge]]s used to
produce the [[warforged]]. This chamber is largely operated by warforged, although Merrix has confided in a few of his closest associates.

The Forgehold is one of the finest fortresses built
by the House of Making. It is designed to withstand both
magical and physical assaults, and a thief or spy must
overcome a wide range of deadly traps to even approach
its secrets. A force of warforged soldiers and [[Sharn]]'s five
members of the Darkwood Watch, the elite wand adepts
of House Cannith, protect the place. The existence of
the [[creation forge]] is a terrible secret—but not one that is
likely to be revealed any time in the near future. 
Different versions of these small tokens exist, each with a different single-use effect. Creatures with a [[Mark of Making]] can activate the effect of the token.

//''Anchor.''// You can touch the token to a
boat, ship, or other vehicle. For the next 24 hours, the vessel can't be
moved by any means. Touching the token to the vessel
again ends the effect. When the effect ends, the token
disappears.

//''Bird.''// You can toss the token 5 feet
into the air. The token disappears and an enormous,
multicolored bird with a 200-foot wingspan takes its place. The bird obeys
your simple commands and can't attack. It can carry
up to 500 pounds while flying at its maximum speed
(16 miles an hour for a maximum of 144 miles per day,
with a one-hour rest for every 3 hours of flying), or 1,000 pounds at half that speed. The bird disappears after flying its maximum distance for a day or if it is incapacitated. You can dismiss the bird at will.

//''Fan.''// If you are on a boat or ship, you can toss the token up to 10 feet in the air. The token disappears, and a giant flapping fan takes its place. The
fan floats and creates a wind strong enough to fill the
sails of one ship, increasing its speed by 5 miles per
hour for 8 hours. You can dismiss the fan at will. 

//''Swan Boat.''// You can touch the token
to a body of water at least 60 feet in diameter. The token
disappears, and a 50-foot-long, 20-foot-wide boat shaped
like a swan takes its place. The boat is self-propelled
and moves across water at a speed of 6 miles per hour.
While on the boat, you can command it
to move or to turn up to 90 degrees. The boat can carry
up to thirty-two humanoid-sized or smaller creatures. The boat remains for 24
hours and then disappears. You can dismiss the boat at will.

//''Tree.''// You must be outdoors to use this token. You
can touch it to an unoccupied space
on the ground. The token disappears, and in its place
a nonmagical oak tree springs into existence. The tree
is 60 feet tall and has a 5-foot-diameter trunk, and its
branches at the top spread out in a 20-foot radius. 

//''Whip.''// You can throw the token to a
point within 10 feet of you. The token disappears, and a
floating whip takes its place. You can then mentally control the whip, directing it to attack a creature within 10 feet of the whip. The whip deals magical force damage. You can continue to direct the whip to attack and fly around. The whip disappears after 1 hour, when you dismiss it, or when you are incapacitated or die. 
While wearing this cap underwater, you can speak its command word to create a bubble of air around your head. It allows you to breathe normally underwater. This bubble stays with you until you speak the command word again, the cap is removed, or you are no longer underwater.
Cape Far is a peninsula in the mainland [[Lhazaar Principalities]], [[Khorvaire]], that extends into the [[Lhazaar Sea]], forming the boundaries of several smaller bodies of water including the [[Eel Bay]] and the [[Far Strait]]. The island prison of [[Dreadhold]] is located near the tip of Cape Far.
This candle is affixed to the skeletal hand of a dead
necromancer. When lit, the candle sheds bright light in a 5-foot radius, and dim
light for an additional 5 feet. The light lasts 1 hour and is
''only visible to you''.

Once you have used this property, it can't be used again
until the next dawn. 
This poison must be harvested from a dead or incapacitated [[carrion crawler]]. A creature that makes physical contact with this poison and can't resist its effects is poisoned for up to 1 minute. The poisoned creature is paralyzed, unable to move or speak. 
Against all odds and expectations, clans of [[human]]s and [[tiefling]]s make their homes in the [[Demon Wastes]]. They are the descendants of settlers who crossed the sea from [[Sarlona]]. Long years in proximity to the evil suffusing this land have left them corrupted—altered in body and mind to become the savage servants of the ancient [[overlord]]s. The Carrion Tribes lead nomadic lives, hunting and preying on each other in a state of perpetual warfare. Resources are scarce, and many tribes have turned to cannibalism to survive. Many tribes practice ritual scarring and mutilation along with varieties of [[cosmetic transmutation]] to give themselves [[fiend]]ish features.

The tribes often clash with outposts of [[dragonmarked house]]s as well as the [[Ghaash'kala]] of the [[Labyrinth]].

!! Carrion Tribes

<<list-links-article "[tag{!!title}sort[title]]">>
Cask is a [[changeling]] [[artificer]] allied with [[Daask]]. His specialty is [[alchemy|alchemist]], and he provides
Daask with [[wrath]], [[noxious smokestick]]s, and other alchemical weapons. More importantly, he plays a key role in the [[dragon's blood]] trade, selling from
his [[shop|Wounded Dragon]]. Dragon's blood is smuggled into [[Sharn]] in
an inert, unrecognizable solid form. Cask prepares
a special salve; when this is applied to the dragon's
blood, it restores the drug to its proper consistency.
Cask cannot create dragon's blood on his own, and
he does not know the ingredients of the drug. 
Caskar Halavik ([[halfling]] councilor for [[Middle Menthis]]) was born in the [[Talenta Plains]]. When he first came to Sharn, he worked as an enforcer for the [[Boromar Clan]]. He was also a remarkably skilled [[clawfoot]] racer, and in time he became a celebrity in [[Little Plains]]. [[Saidan Boromar]] helped him transform his fame into political cachet, eventually earning him a seat on the Council. Caskar enjoys the prestige of his position, but he prefers to leave political maneuvering on behalf of the Boromars to [[Ilyra Boromar]] and [[Bestan ir'Tonn]].
''District Type:'' Shops<br/>
''Buildings:'' Temple ([[Onatar]]), shrine ([[Gatekeepers]]),
average lodging (15), average food (40), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (10), average services
(40), poor services (8)<br/>
''First Impression:'' Citizens rush by with their arms
full of packages in this shop district. There is a definite foreign element to some of the architecture and
the goods for sale, not to mention the people.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Warden Towers]] (north); [[Everbright]] (northeast); [[Rattlestone]] (bridge, west); [[Kenton]] (bridge, south); [[Downstairs]] (below); [[Seventh Tower]] (above)

Cassan Bridge is a fairly unremarkable shopping
district, unique only in the small community of
human immigrants from the [[Shadow Marches]] who
make their homes and livings here. Several importers bring Marcher crafts into [[Sharn]], and specialty
groceries carry ingredients favored in Marcher cooking. Although no buildings need be built on
stilts in [[Middle Menthis]], some of the architecture
of Cassan Bridge echoes the styles of the Marches
as well.
Cassia Lyrriman Dal is a [[gnome]] priestess of [[Aureon]] in [[Sharn]] who works at the [[Zilargo Embassy|Zilargo Embassy (Sharn)]]. Like her companion Holas, she is a supernatural spy, using [[augury]], [[scrying]], [[speak with dead]] and other [[spell]]s to help [[Doran Del Doras]] gather information and formulate plans. She is fascinated by all religions, and whenever she encounters another
adept or priest she tries to start a discussion about
her own theories about the nature of the gods and
the foundation of [[divine magic]].
You can doff this armor in an instant.
Castar ([[gnome]]) is the intelligence expert of the [[Boromar Clan]] and
[[Saidan|Saidan Boromar]]'s chief advisor. He is the lone non-[[halfling]] in the Boromars' inner circle. Saidan expects Castar to
come up with a solution to the problem of [[Daask]], but so far none of his ideas have worked, and the gnome worries he may find himself at the bottom of
the [[Dagger River]] if he doesn't come up with an
idea soon.
The troops of the would-be conqueror [[Mishva Garodya Stormhorn]] gather at Castle Garodya, a sturdy stronghold in southwestern Q'barra. Mishva’s army is made up primarily of young [[dragonborn]] eager to prove their worth. Subordinate leaders assign these members to units based on skill and desire. Castle Garodya has a large body
of soldiers, arcanists, priests, and support personnel.

[[Mishva|Mishva Garodya Stormhorn]]’s fortress is still incomplete, and her army is
relatively small. However, she garners more power and support among the [[Q'barra]]n [[dragonborn]] each day. With the power of [[Argonnessen]] behind her, control of [[Ka'rhashan]] is within her grasp.
The [[Forgotten Prince]] dwells in the Castle of Lost Things in
[[Thelanis]]. The castle seems to be its own distinct [[layer]] of
Thelanis; if it exists in some other realm, its location has been
forgotten. There are no doors that allow exit from the castle,
and all windows are sealed and show scenes of places that
have been forgotten. The only way to enter or leave the castle
is through magic, whether by [[spell]], through a [[manifest zone]],
or through a portal. Such portals can take many forms, such as
a simple burlap sack; normal people forget the location of a portal within an hour of discovering it, though player characters and other remarkable people could be
immune to this effect. It's possible characters could discover
that what they assumed to be a normal [[bag of holding]] can
serve as a portal to the Castle of Lost Things.
Endless tunnels of gray stone wind through the Catacombs, the
destination of [[humanoid]] spirits. Some passages are painfully
tight, while others widen into grand halls with ceilings lost in
darkness. The Dead are everywhere, [[shade]]s pleading for release,
[[husk]]s keening in the shadows. The chambers of the Catacombs
might contain vast wells filled with moaning mist, or [[nalfeshnee]]s
herding [[shade]]s into pens and scraping [[lemure]]s off the walls.

The Catacombs may be larger than [[Khorvaire]], or even
[[Eberron]] itself. A mortal could wander forever through these
winding tunnels—at least until they're consumed by ennui.
However, there are junction points that transcend the logic of
distance. If one knows the right symbols to follow, they can
cross the vastness of the Catacombs quickly or pass to other
layers—perhaps in search of a shade to rescue.
[[Sharn]]'s most important temple to the [[Silver Flame]], named in honor of the church's role in cleansing [[Khorvaire]]
of the stain of evil, ironically may also be its most
corrupt holy institution. The Archierophant of
the region, [[Ythana Morr]], helps foster this corruption, while many of the
clergy and other staff simply covet privilege, power,
and material wealth. The Archierophant, however,
actively cooperates with the [[rakshasa]] [[Zathara]], who
lives in the [[Cogs]] district of [[Khyber's Gate]].
No matter where one stands in [[Flamekeep]], the Cathedral of the [[Silver Flame]] is visible. Situated at the highest point of the city, the massive cathedral sports alabaster walls and flying buttresses fitted with brilliant stained glass
windows depicting religious and historical scenes.
Icons, angelic beings, and gargoyles decorate the
exterior.

Inside, the walls are black marble inlaid with silver patterns, testifying to the church’s wealth and power. The nave can hold thousands at a time, with pews spreading out among the supporting pillars, each of the four transepts, and balconies hanging just
below the clerestory. A raised area before the presbytery can hold a choir of one thousand children, each selected for their ringing voice.

Beyond the presbytery, behind two enormous wooden doors, is the Chamber of the Flame. This place is where the holy light of the [[Silver Flame]] burns
and where the [[Keeper of the Flame]] comes to commune with the [[Voice of the Flame|Tira Miron]] upon the mosaic encircling the fiery pool.

The cathedral also has cloisters in the rock below. Labyrinthine passages lead to cells where high-ranking priests attending the cathedral live, pray, and reflect on their devotion. The lower levels also contain the offices of the [[Council of Cardinals]], a garrison for the church’s divine warriors, and the [[Keeper of the Flame]]’s personal apartments.
Following the spread of the Church of the [[Silver Flame]] in
[[Thrane]], the Cathedral on the Hill (also called the Cathedral of the [[Sovereign Host]], located in [[Metrol]], [[Cyre]]) became the primary seat of Vassal devotion in [[Galifar]]. Many of the rulers of Galifar would build an addition to the Cathedral as a way of
showing their piety. By the reign of King [[Jarot|Jarot ir'Wynarn]], it was a wonder
indeed. Nine colossal statues encircled the temple, illusory displays within depicted scenes from the faith, and it held a vast collection of relics and artifacts. Since the [[Mourning]], the fate of the Cathedral and
its treasures remains unknown.
The cathier, a small, harmless herbivore native to the [[Eldeen Reaches]] and similar to a hare, has a magical ability to camouflage itself. Its spleen aids in the casting of [[illusion]] [[spell]]s and the creation of [[potion]]s that have illusory effects.
This spell awakens the sense of mortality in the target creature, causing it to become deathly terrified. The spellcaster chooses a creature (but not an [[undead]] or [[construct]]) within 60 feet; if the creature lacks resolve, it will be filled with fear for up to a minute.
Also known as the Stonelands, this is
a rocky region surrounding the ruins of an [[ancient|Dhakaan]] [[hobgoblin]] metropolis. The city was abandoned after the [[daelkyr]]
released a horde of [[basilisk]]s, [[gorgon]]s, and [[cockatrice]]s from
the depths of [[Khyber]]. The streets of the ruined city are
still filled with petrified [[goblin]]s and [[hobgoblin]]s, although
most of these statues have been shattered or eroded by
the ravages of time. The monsters that ravaged the city in
ancient times still dominate the region, and other strange
anomalies are found here, such as petrification-resistant
[[gargoyle]]s and places where trees and other vegetation have
become petrified.

The passage to [[Khyber]] near the center of the ruined
city remains open, even after nine thousand years. Two
hundred twenty years ago (778 YK), a band of [[medusa]]s
came up from [[Khyber]] and took possession of Cazhaak
Draal, renovating a few of the buildings for their own
use. The medusas have domesticated many of the other
creatures in the region and have slowly expanded their
power base. The city's physical size is far larger than
that of the [[Great Crag]], but the medusas inhabit only a
small part of it, and their individual lairs are often some distance apart. Over the years, they have been exploring the ruins and searching for treasures left behind by
the [[goblinoid]]s. However, other beasts have come from
[[Khyber]] as well, and there are things hidden in Cazhaak
Draal that even the medusas fear. Queen Sheshka currently leads the medusa community, styling herself as
the [[Queen of Stone]].
Celestials are [[immortal]] creatures of good formed in the expanse of [[Siberys]], or in another plane such as [[Shavarath]], [[Irian]], or [[Syrania]]. Celestials cannot be destroyed; unless they are bound, they will always reform some time later after being killed.

Included among their number are [[angel]]s, [[couatl]]s, and [[pegasi|pegasus]].
The Celestial Vista
is the most well known of [[Skyway]]'s elegant restaurants, and the most in demand. The maitre d'hotel
cheerfully turns away visitors who have no reservations, and even those with reservations can be forced
to wait an hour or more to be seated. The menu is
similar to that of the [[Azure Gateway]], but offers some
less exotic fare as well to accommodate throngs of
not-very-adventurous tourists who come for the view
rather than the food. The owner of the Celestial
Vista is [[Evix ir'Marasha]], who is also Skyway's representative on the
[[City Council|Sharn Council]]. 
Celyria ir'Tain, the current matriarch of the
[[Sharn]] branch of the [[family|ir'Tain family]], is the queen of high
society, and her monthly [[gala|Tain Gala]]s at Tain Manor define
the social order within the city. In addition to the
great families of Sharn, Lady ir'Tain always invites
a handful of more exotic people to entertain her
guests—artists, poets, adventurers, or oddities such
as [[Flamewind]]. An adventurer known to be a friend
of Lady ir'Tain finds that many closed doors suddenly open, and may receive invitations to other events or other forms of special consideration. 
''District Type:'' Average residential<br/>
''Buildings:'' Average residences (280), poor
residences (80)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this district.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[Forgelight Towers]] (northwest); [[Torchfire]] (northeast); [[Firelight]] (southeast); [[Downstairs]] (southwest); [[Granite Halls]] (bridge, north); [[Foundation]] (bridge, south); [[Everbright]] (above)

Center Bridge tries to be a quiet residential district,
but with [[Torchfire]] and [[Firelight]] on one side and
[[Downstairs]] on the other it can't help but smolder
with seedy activity. Its residents include a number of
people associated with [[Morgrave University]], since it
is located directly below the [[University District]] and
it offers much cheaper housing than can be found
in the ward above. In fact, groups of students share
inexpensive housing here, so close to the illicit
pleasures of [[Lower Menthis]], and are responsible for
much of the rowdiness that sometimes disturbs the
peace of Center Bridge.
The power and wealth of [[Sharn]] are concentrated in Central Plateau. Whether you're looking to deal with powerful merchants, [[city councilor|Sharn Council]]s, [[dragonmarked|dragonmarked house]] barons, or the ambassadors of other nations, Central Plateau is the place where big deals are made. 

* [[Upper Central]]
* [[Middle Central]]
* [[Lower Central]]

Central Plateau has bridges to [[Northedge]] and [[Menthis Plateau]]. It is not directly connected to [[Dura]] or [[Tavick's Landing]].

!! Things to Do in Central Plateau

Looking for work or amusement in this quarter? Some
of the things you can do here include:

* ''Attend an auction.'' The [[Aurora Gallery]] in [[Platinum Heights]] is the finest auction house in Sharn and specializes in auctions of exotic magic items and relics from [[Xen'drik]]. You never know what's going to be available—or who will be bidding against you.
* ''Plan a heist.'' Perhaps your goals depend on recovering an item a villain has hidden in the [[vaults|Vaults]] of [[Korranath]]. Can you penetrate the most secure facility in Sharn?
* ''Go to jail.'' The [[King's Citadel]] in [[Ambassador Towers]] is also Sharn's high-security prison.
* ''Worship.'' The primary temples of the [[Sovereign Host]] and the [[Silver Flame]] are located in [[Middle Central]], along with a host of shrines to specific sovereigns and lesser faiths. Take part in a festival or drop in for some spiritual guidance!
* ''Engage in espionage.'' Whether you work for your nation or get entangled in the schemes of the [[dragonmarked house]]s, [[Middle Central]] is home to a lot of powerful people who have a use for capable agents. 
This ominous [[fiend]] wears chains like a shroud. Driving lesser creatures before it with its fearsome gaze, a chain [[devil]] (also known as a kyton) animates the chains that cover its body as well as inanimate chains nearby, which sprout hooks, blades, and spikes to eviscerate enemies.

Chain devils act as sadistic jailers and torturers in [[Daanvi]] and [[Shavarath]], relishing pain and living to inflict it on others.
While holding this simple silver necklace, you can speak
its command word to cause it to turn into a
10-foot chain. You can speak the command word again to
turn the chain back into a necklace. 
This hooded lantern is affixed to the end of a 10-foot chain.
While lit, it burns for 6 hours on 1 pint of oil, shedding
bright light in a 30-foot radius and dim light for an
additional 30 feet. If you lower the hood, you can reduce the light to dim light in a 5-foot radius.

If you hold one end of the chain and speak the command word, the chain animates. You can command the other end to move toward a destination you choose or cause the chain to stiffen and move with you. 
This chalice has six buttons around the base. You can press one of the buttons and cause the chalice to produce fragrant smoke. You can choose between vanilla, jasmine, lavender, frankincense, sandalwood, and cinnamon. The scent fills a 30-foot radius, originating from the chalice.

You can press the button again and cause the chalice to stop producing smoke. 
Conspiracy theorists insist that a network of [[dragon]]s
is hidden in [[Khorvaire]], and these mighty creatures use
powerful magic and [[humanoid]] agents to work their will
across the continent and beyond. These claims are usually dismissed as madness, but they are in fact correct. The Chamber is a cabal of dragons that have monitored
Khorvaire for thousands of years, treating humanoids
as pawns in an ancient game.

First and foremost, the [[dragon]]s of the Chamber are
observers, gathering information about new aspects
of the [[Draconic Prophecy]] and sharing it with their elders in [[Argonnessen]]. They are also charged with stopping any
creature that seeks to use the Prophecy for its own ends.
This responsibility sets them against the [[Lords of Dust]],
who must manipulate the Prophecy in order to release
their fiendish [[overlord]]s. It also leads them to recruit
or eliminate any humanoid who learns too much about
the Prophecy.

The Chamber is loosely organized. Each dragon monitors its own small corner of the world and maintains a network of humanoid agents. Although the mission of
the Chamber is one of observation, individual dragons
often have their own agendas. Some seek to manipulate the Prophecy personally, directing the future along a particular path. Others conduct experiments
on [[dragonmark]]ed humanoids, trying to understand the
connection between these creatures and the [[Prophecy|Draconic Prophecy]].
Still others are obsessed with the [[Lords of Dust]] engage in century-spanning games of cat-and-mouse with their
fiendish counterparts. In general, the Chamber seeks to
maintain the status quo and opposes [[demon]]s, so agents
of the Chamber can often be useful allies or patrons.
But ultimately [[humanoid]]s are just pawns in the dragons'
eyes, and they readily sacrifice any of those pawns to
ensure the sanctity of the Prophecy and the defeat of the
Lords of Dust.

!! The Chamber and the War
The lives of humanoids and the welfare of their nations
mean little to the ancient dragons. A member of the
Chamber who is friendly now might turn out to be little
more than a war criminal, responsible for horrible atrocities while directing critical events of the war to ensure
that a skirmish or an untimely assassination didn't derail some crucial stanza of the [[Prophecy|Draconic Prophecy]]. An even more
disturbing prospect is that the [[Mourning]] might have
been orchestrated by the Chamber, either as part of its
struggle against the [[Lords of Dust]] or even directly in
response to the dictates of the Prophecy.

Whatever the truth, the [[Last War]]'s impact on the
Chamber was small in the grand scheme of things.
[[Planar observatories|planar observatory]] were damaged here and there,
humanoid servants died in droves, and the clash of
armies derailed short-term plans. But even the effects of
a hundred years of war are minor in the context of plans
that span continents and millennia. 
This small leather pouch contains 3 pieces of hard candy.
When eaten by a creature, the candy tastes like that
creature's favorite food. The candy disappears 1 hour after
being removed from the pouch.

The pouch replaces any candy that has been removed
from it daily at dawn. 
Chanaakar, the Speaker of the Word, is the fifteenth
person to hold the position of spiritual leader of [[Adar]].

!! Chanaakar's Story

He was born the son of a servant. Geetru, the Speaker at
that time, encountered him in the halls of [[Kasshta Keep]].
The five-year-old Chanaakar was reciting complex codes
of magic to his sister, [[Luunkashtai]], as the two played a
game imitating their father's arcanist employers. Amazingly, the boy was reciting the formulas correctly.

Geetru immediately took the boy to her private
quarters and questioned him. Chanaakar's abilities were
astounding, and Geetru began to suspect that he was a
reincarnation of a former [[Keeper of the Word|Keepers of the Word]]. The boy's
integrity and love became clear when he refused to be
separated from his sister in order to train, even though
his training occurred within the keep. Geetru allowed
Luunkashtai the chance to pass one of the tests for entering the Keeper order. She did. 

Chanaakar mastered philosophies and preparatory
spellcasting techniques quickly, at the same time showing himself to be affable and humble. The boy devoured
history and learned the lore of [[Riedra]] and the [[Inspired]].
At the same time, he trained in the citadel's martial techniques, learning forms quickly and keeping his body fit
so he didn't fall asleep in meditation as many others did.
He showed himself balanced in body and mind. 

When he was nineteen, however, Chanaakar became
restless. He broke with tradition and secretly left [[Kasshta Keep]] with his sister. With the aid of a mountaineer named Kaala, they ventured deep into [[Adar]]. Chanaakar
saw what life was like in this harsh land, and he came to
love its people. For their part, many folk returned the
affection—Chanaakar, [[Luunkashtai]], and Kaala became
known for solving problems, helping the needy, and
even slaying a monster or three. The stories of these days
tell that the trio never asked for payment and humbly
received any reward forced upon them, giving what they
could in the form of work or service. 

This break from tradition might have actually assured
Chanaakar's ascension to the position of Speaker. Geetru
watched his travels with interest. She knew her time on
Eberron was ending, and she knew her replacement must
be chosen from among those serving at [[Kasshta Keep]].
Chanaakar, even better than she, knew not only the ways
of the [[Keepers|Keepers of the Word]], but also the ways of [[Adar]]. In Chanaakar's
absence, Geetru declared him her successor—much to the
chagrin of several of her closest advisors.

Chanaakar was descending the slopes of [[Korrandar]]
after seeking to speak to a [[Storm Guardian|Storm Guardians]] (whether he
succeeded in this mission is unknown) when word came
ordering him to return to [[Kasshta Keep]]. They arrived to find
Geetru had passed from the world. The elders of Kasshta
Keep approved her choice for successor, and a shocked
Chanaakar became Speaker of the Word.

Chanaakar appointed his sister and Kaala as two
of his Hands, persons who serve the Speaker and act as
his agents. As Speaker, he changed little of Kasshta's
traditions. Perhaps because he had never been a part of
the Keep's hierarchy and because he had been away for
so long, Chanaakar didn't remove anyone from power
or make any reforms, thinking he didn't need to. He
was wrong. 

The respected Kasshta teacher [[Raadu Xeel]], corrupted by dark magics, allied with the [[Endseekers]] and attempted to assassinate Chanaakar. But they failed, thanks to
[[Luunkashtai]], Kaala, and the monks. Still, Kaala, Chanaakar's friend, guard, and secret love, died that night as a storm gathered over [[Kasshta|Kasshta Keep]]. When the truth of the plot was uncovered, the elders had Xeel executed and his
family banished from Kasshta Keep, despite Chanaakar's
request for mercy.

Chanaakar has now been Speaker for nearly forty
years. His reign has been just and his popularity has
strengthened the position of [[Kasshta Keep]] among the
monasteries of [[Adar]]. Many young mountainfolk seek
tutelage at Kasshta, and the Speaker's word carries more
weight with [[Adarans]] than it ever has in the past. Chanaakar uses this influence to help keep Adar secure and its people on a righteous path, encouraging adherence to
the [[Path of Light]]. He also has a cadre of nearly a hundred followers and students within Kasshta Keep.
[[Dragoneyes]] has quite a few rowdy gambling halls, but Chance is a more sophisticated casino. In addition to running the standard games and making odds on the various races and sporting events that occur throughout the city, Chance has a reputation for being able to arrange and cover almost any bet. Can you survive for two days with House [[Tarkanan]]
trying to assassinate you? Can you seduce the ambassador from [[Aerenal]] in the next 24 hours? Chance makes the odds, takes the bet, and makes the arrangements required to set the challenge in motion. 

The casino is owned by a [[changeling]] named Chance, who is also a priest of the [[Traveler]]. Almost nothing is known about Chance; the changeling wears a different guise
every night, and the only way to recognize Chance is by the distinctive amulet they wear.

Chance is not an agent of the [[Tyrants]]. They respect the guild and may provide magical assistance to guild members, but they serve the [[Traveler]] in their own way and stand above the guilds and politics of the city. 
//Long ago, there was a woman named Jes, and she had one hundred children. Her rivals conspired against her and swore to kill her children. Jes begged the [[Sovereign|Sovereign Host]]s for help, but their only answer was the wind and rain. In the depths of her despair, a lonely traveler took her hand. "I will protect your children if they follow my path. Let them wander the world. They may be shunned and feared, but they will never be destroyed." Jes agreed, and the traveler gave her his cloak. When she draped it over her children, their old faces melted away and they could be whoever they wanted to be. And so it remains. Though the children are shunned by all, the gift of the [[Traveler]] protects them still.//

<div align="right">—[[Chance]], changeling priest</div>

Changelings can shift their forms with a thought. Many
changelings use this gift as a form of artistic and emotional expression. It's also an invaluable tool for grifters,
spies, and others who wish to deceive. This leads many
people to treat changelings with suspicion. 

!! A Hidden People

Wherever [[human]]s live, changelings reside also; the
question is whether their presence is known.

Changelings are born to one of three paths. A few
are raised in stable communities where changelings
are true to their nature and deal openly with the people
around them. Some are orphans, raised by other races,
who find their way in the world without ever knowing
another like themselves. Others are part of nomadic
changeling clans spread across the Five Nations, families who keep their true nature hidden from the single-skins. Some clans maintain safe havens in major
cities and communities, but most prefer to wander the
unpredictable path of the god known as the [[Traveler]]. 

In creating a changeling adventurer, consider the
character's relationships with people around them.
Does the character conceal their true changeling nature? Do they embrace it? Do they have connections to
other changelings or are they alone and in search of
companions? 

!! Masks and Personas

In their true form, changelings are pale, with colorless
eyes and silver-white hair. It is rare to see a changeling
in that form, for a typical changeling changes their shape
the way others might change clothes. A casual shape—one created on the spur of the moment, with no depth or
history—is called a mask. A mask can be used to express
a mood or to serve a specific purpose and then might
never be used again. However, many changelings develop
identities that have more depth. They build an identity
over time, crafting a persona with a history and beliefs.
This focused identity helps a changeling pinpoint a particular skill or emotion. A changeling adventurer might
have personas for many situations, including negotiation,
investigation, and combat. 

Personas can be shared by multiple changelings; there
might be three healers in a community, but whoever is on
duty will adopt the persona of Tek, the kindly old medic.
Personas can even be passed down through a family,
allowing a younger changeling to take advantage of contacts established by the persona's previous users. 

!! Changeling Names

A changeling might use a different name for each mask
and persona and adopt new names as easily as they
change faces. The true name of a changeling tends to
be simple and monosyllabic; however, there are often
accents to a changeling's name that are expressed
through shapeshifting, something single-skins will
likely miss. So, two changelings might have the name
//Jin//, but one is //Jin-with-vivid-blue-eyes// and one is //Jin-with-golden-nails//.

Changelings have a fluid relationship with gender, seeing it as one characteristic to change among many.

//''Changeling Names:''// Aunn, Bin, Cas, Dox, Fie, Hars, Jin,
Lam, Mas, Nix, Ot, Paik, Ruz, Sim, Toox, Vil, Yug 

!! Changelings of Sarlona

The [[Inspired]] have embraced the changelings of [[Riedra]],
and these shapeshifters are treated with far more respect
than their cousins in [[Khorvaire]] are. This acceptance
comes at the price of individuality, however. Riedran
changelings are taught to set aside personal identity, in
order to fully serve the Inspired. 

Riedran changelings are invariably drawn into the service of the [[Thousand Eyes]] (see [[masquer]]) or the [[Iron Gate]], and most are deeply loyal. As a result, changelings
are often feared and distrusted in the other lands of
[[Sarlona]]. The role of changelings in Riedra presents
many opportunities for foreign shapeshifters, who can
blend in with their kin. The [[dragon]]s of [[Argonnessen]]
use changeling agents as observers in [[Riedra]], and
other nations might find changeling agents ideal for
Riedra operations. 
A channeling wand is a short metal wand tipped with a Siberys
[[dragonshard]]. Each wand is tied to a specific [[dragonmark]], such
as the [[Mark of Healing]] or the [[Mark of Making]], and you can only
attune to it if you possess that dragonmark.

While holding the wand, you can expend some of its stored power to enhance your dragonmark abilities (double the range, double the duration, halve the casting time, cast twice). You can do this between 5-10 times before the wand is depleted and must recharge overnight.
The Chanthwood is a small forest in western [[Aundair]], near the town of [[Wyr]].
In recent months, a number
of vessels have vanished from what were thought to
be safe sea lanes near the [[Lhazaar Principalities]]. No
known pirates have claimed responsibility, and no
wreckage has been found.

At the same time, pirates and merchants have
reported seeing a bizarre fleet of ships on the horizon
of the [[Lhazaar Sea]]. The lead vessel appeared to be a
[[Lhazaar|Lhazaar Principalities]] warship, but the ships that flanked it were
oddly misshapen. Mysterious colored lightning was
said to dance between the masts of this ghostly fleet.

In truth, these rumors are connected. For the moment, Captain [[Magwroth]] of the Chaos Fleet seems content to attack and raid lone vessels. However, the ships and crews he destroys are taken under his control, and so the Chaos Fleet has begun to grow, as malign [[elemental]]s possess the crew like zombies and advance the captain's apocalyptic agenda.

The Chaos Fleet consists of half a dozen to two
dozen vessels, its numbers changing from day to
day. Most of the ships, including [[Magwroth]]'s //Devourer’s Hand//,
are mortal-built wrecks kept afloat by the elemental power that now infuses their waterlogged hulls, and are manned by [[elemental drudge]]s in the shape of their former crews. Their horrid features include eyes of fire, teeth and fingernails of ice, and wounds that bleed mud. The other ships hail from the mysterious [[demiplane]] where the [[drudge|elemental drudge]]s originated, and are driven by the power of fire and air. Though they appear to be roughly carved of rock or ice, these
chaos ships are impossibly swift and can run down
even [[elemental galleon]]s.

Where raw unmaking has scarred the Material Plane, chaos pools form like pustules of entropy. A chaos pool is often the place where a great [[fiend]] or being of chaos died or was imprisoned, or it is near such a place. 

Chaos pools are condensations of wild potential. They are pits of flashing light, welling darkness, bubbles of cacophonous sound, and spurts of wind and other materials. They are easy to spot and hear. Ground surrounding a chaos pool is destroyed and remade
constantly, changing shape and even composition. A chaos
pool hungrily pulls at those near it. Bones are scattered
about it. Wisdom seems to dictate against nearing the pool,
which whispers of dissolution and doom.

Several chaos pools exist within [[Uutkleza]], the [[wild zone]] to [[Kythri]] located in the mountains of [[Adar]]. The
[[githzerai|gith]] of that place guard the pools against interlopers. 
Whenever you roll this six-sided die, you can control which number it rolls.
While wearing a pair of charlatan's gloves, you can produce an illusory image that fits in the palm of your hand. The image lasts for 1 minute or until your concentration ends (as if you were concentrating on a spell). The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it.
You attempt to charm a [[humanoid]] you can see within 30 feet. If the creature fails to withstand your enchantment, it is charmed by you for up to one hour or until you or your companions do anything harmful to it. If you or your companions are fighting it, you have disadvantage on this spell.

The charmed creature regards you as a friendly acquaintance. When the spell ends, the creature knows it was charmed by you.

If you are able to cast rare-tier spells, you can cast this as such to target a non-humanoid creature. Alternatively, you can target up to three humanoids with this spell simultaneously; the targets must be within 30 feet of each other when you target them.
This light green apron is embroidered with lovely little artichokes. Once per day, the apron's pockets fill with the ingredients for a different recipe. While worn, the user instantly knows hundreds of recipes, and becomes very adept at cooking.
Chervina "the Architect" is a prominent heir to House [[Ghallanda]]. Her rivals within the
house whisper that she’s mad, but most of the house’s
viceroys believe that Chervina d’Ghallanda, a powerful [[wizard]], has a mystical connection to the [[Draconic Prophecy]]. Chervina has convinced Baron [[Yoren|Yoren d'Ghallanda]] (and, by extension, House [[Ghallanda]]) that there is a prophetic
imperative for the house to build [[enclave]]s and offer
hospitality in specific places—even if those places are almost deserted at present. So far, Chervina has overseen construction of new Ghallanda enclaves on
the southeast border of the [[Demon Wastes]], the shore
of [[Lake Dark]] in [[Karrnath]], the middle of the [[Blade Desert]], and even on the [[Xen'drik]] coast.
Food and other perishable items do not age or decay while inside a //chest of preserving//. The chest is 2½ feet long, 1½ feet wide, and 1 foot tall with a half-barrel lid. The chest has a lock, which can be picked with [[thieves' tools]]. Smashing the lock or any other part of the chest renders it nonmagical.
//We, the Children of Winter, preserve the natural cycle of life and death. Disease and decay cull the weak and strengthen the whole. We must destroy undead and ensure that the cycle continues. //

The Children of Winter believe that death and decay are
vital aspects of the natural cycle of life. They believe that
if the cycle falls out of balance, it will trigger a devastating cataclysm as the world resets this balance. They battle [[undead]], but they also engage in actions that cull the
weak. Extremists have been known to spread plagues in
cities. The Children of Winter are particularly interested
in unraveling the mystery of the [[Mourning]], as some of
them believe it is a sign of the apocalypse they fear. 
The spellcaster creates a ghostly, skeletal hand near a creature within 120 feet. The hand attempts to grab and cling to the target, assailing it with the chill of the grave. The hand clings for 10-20 seconds, during which time necrotic energy seeps into the target and prevents magical healing, and then the hand vanishes. The spell is particularly effective against [[undead]], making them sluggish and dizzy.

This hollow metal tube measures about 1 foot long and weighs 1 pound. You can strike it, pointing it at an object within 120 feet of you that can be opened, such as a door, lid, or lock. The chime issues a clear tone, and one lock or latch on the object opens unless the sound can't reach the object. If no locks or latches remain, the object itself opens.

The chime can be used up to ten times, after which it cracks and becomes useless.
These multi-headed monstrosities are the result of the twisting chaos of [[Kythri]], having entered [[Eberron]] through [[manifest zone]]s centuries ago.

A typical specimen has the hindquarters of a large goat, the forequarters of a lion, and the leathery wings of a dragon, along with the heads of all three of those creatures. The monster likes to surprise its victims, swooping down from the sky and engulfing prey with its fiery breath before landing.
A chieftain of the [[Chuniigi]] Chok tribe, Chok-Palla
is desperate to find help battling the [[Kalaak]] raiders. One
of the few tribal leaders still trying to unite the struggling nation, he despairs that the conflict is wearing at
the very soul of the people—turning tribe against tribe
as resources dwindle. Chok-Palla is actively seeking alliances with the southern [[shifter]] nations, the [[Icebinder|Icebinders]] [[frost giant]]s, and the lowland clans of the [[Dorann Holds]].
He also visits [[Whitetooth]] and [[Winterstead]] regularly,
seeking small bands of adventurers willing to scout the
[[Kalaak]] homeland in the [[Krertok Peninsula]]. 
Chokers are small, rubbery humanoid [[aberration]]s capable of striking with astonishing speed and reach. Believed to be warped [[halfling]]s, these creatures lurk in dark places and squeeze into narrow fissures where they can surprise and throttle the unwary with their starfish-shaped hands.
This is a simple choker of red ribbon, with a silver clasp. When worn, the necklace tightens and strangles the wearer whenever the command word is spoken. It can only be removed when a second command word is spoken.
Set above the [[rabble|Riedrans]] of the workers and commoners of
[[Riedra]], the Chosen have been touched by the divine
force of the nation. Or so they're told. The truth of the
matter is much more sinister. The Chosen are in actuality "empty vessels" designated as host bodies for the [[extraplanar spirits|quori]] of [[Dal Quor]] (the terms Chosen and
empty vessels can be used interchangeably, but the former
is preferred in Riedra because it represents the esteem
with which these beings are held). The result of generations of controlled breeding (originating as [[human]]s magebred with traces of [[elf]] and [[fiend]] blood) and [[psionic|psionics]] manipulation, the Chosen enjoy a life of privilege in Riedra... all in
preparation for inhabitation by a [[quori]].

Although the Chosen are granted luxuries unknown to
most [[Riedrans]], they do not lead lives of indolence. Chosen
hold important positions—even those who are never possessed become military officers, village overseers, and administrators in the arms of the [[Unity]]. A Chosen who
has the potential to be a primary host undergoes especially intense training, ensuring that they have skills useful to the [[quori]] who claims them.

Every Chosen family is bound to a specific quori
spirit. That spirit can possess any Chosen of its line at
will. There is no warning, no chance to resist. Most quori choose one particular vessel of
their line to serve as primary host, and this is the being
[[Riedrans]] come to think of as the [[Inspired]] tied to that
spirit. However, this arrangement places no limitations
on the quori; they can leave their host at any time to inhabit
another of their Chosen. Important [[quori]] often spread
their vessels across [[Riedra]], allowing them to quickly
manifest in different cities. Likewise, a vain quori often
abandons a host who becomes old or suffers significant
injuries, but they can always return when they want. Most
Chosen are eager participants in the possessing process,
and as such, a particular family might be used as hosts
by multiple quori; however, only one has the irresistible
bond to their vessels.

The Chosen are bred to be ideal hosts in a complex
process involving mingling of bloodlines, and metacreative and telepathic manipulation. Superficially, the Chosen are very similar in appearance to the [[kalashtar]],
displaying a beauty so unnatural that some find it disturbing. They also have an innate bond to [[Dal Quor]], which
manifests itself as natural [[psionic|psionics]] talent.

It is extremely difficult to drive a [[quori]] from a
Chosen host. Many of the more powerful quori simply can't
possess normal [[human]]s, because there are no mundane
humans who can contain them; the Chosen can.

When a [[quori]] first takes a primary host, it spends
a considerable amount of time drilling its beliefs and
personality into the vessel. The Chosen are taught to
embrace this, surrendering their personality to the
divine spirit. The net result is somewhat similar to [[mind seed]]—the vessel does not actually gain the knowledge
of the quori, but after a month of the quori thinking
with her brain, she behaves much like the quori even
in its absence. Discarded hosts, who have served as
[[Inspired]] for decades, are often indistinguishable from
the quori patron; all traces of their human personality
are long lost.

It is important to bear in mind that while the quori
gains access to the memories of the Chosen, the reverse
is not true. Chosen that serve in administrative positions
might know very little of the grand goals of the [[Dreaming Dark]]; they only know that the Inspired seek to create a stable and stagnant society, and they do not question this
goal. The critical exception to this rule are the "''shadow lines''"—those Chosen dedicated from birth to serving the true quori agenda. These Chosen are taught the nature of [[il-Lashtavar]] and their quori masters, and they are loyal to
the Dark as opposed to [[Riedra]], believing that
through their service they're destined to become [[quori]]
after death. The shadow lines provide
the [[Inspired]] with agents who can be trusted with covert
and disturbing assignments. [[Dul Catun]], [[Dar Ulatesh]], and [[Dar Mirn]] are centers of the shadow lines. 

As most of the Chosen are utterly dedicated to
[[Riedra]] and the [[Inspired]], they are best suited for use as
NPCs. However, the life of a vessel who has turned on their
masters has many interesting hooks.
The Chuniigi are the most nomadic of the three [[shifter]] tribal nations of [[Sarlona]], and the roam the largest area of the [[Tashana Tundra]]—all inland territories west of the [[Tiiki River]] and north to the [[Eska Mountains]]. But the Chuniigi populace is
sparse relative to their territories, and they share the wild northern lands with many [[human]] tribes. In recent years, the northern Tashana has been ravaged by the terrible [[Kalaak]] barbarians, and these incursions have reduced the Chuniigi's
numbers further still. 

See also [[Culture of the Tashana shifters]].

''Chok'', one of the tribes of the Chuniigi, is led by chief [[Chok-Palla]].
The Church of the Wyrm Ascendant worships the [[Sovereigns|Sovereign Host]]
in the same groupings and names as the [[Pyrinean Creed]].
However, the church asserts that the champions who fought the
[[overlord]]s were [[dragon]]s, depicting them as such. The church
is very focused on wealth and economic power; members
are expected to contribute to the hoard of their local temple,
and the priests often engage in behavior that outsiders might
consider to be corrupt. They hold the unorthodox belief that
mortals can ascend to become Sovereigns themselves—that
by emulating a particular Sovereign, a mortal can eventually
take their place. Popular rumor holds that the founder of the
[[Library of Korranberg]], [[Dorius Alyre ir'Korran]], built the library
as part of a quest to assume the mantle of [[Aureon]]. While this
Sovereign ascension is believed to occur after death, some
priests teach that devoted members—especially those who
donate great sums to the temple hoard—can actually become
[[dragon]]s in life. While this seems unlikely, it could be an
interesting background for a draconic [[sorcerer]];
it's not that you have draconic ancestry, but rather, due to
your devotion, you appear to be evolving into a dragon.

Wyrm Ascendant Vassals believe the dragons themselves are
divine tools and emissaries of the Sovereigns and Six, though
few dragons have ever acknowledged the church in any way.
It's thought that the [[dragon]]s themselves follow a form of this faith known as [[Thir]]—Draconic for “three”—but the traditions of
[[Argonnessen]] are rarely revealed to people of [[Khorvaire]].

The Wyrm Ascendant is strongest in [[Aundair]] and [[Zilargo]],
though it remains an obscure sect, and has noteworthy temples
in [[Stormreach]], [[Korranberg]], and [[Fairhaven]].
The Circle of Song is an informal organization in [[Sharn]], open
to any [[bard]] who knows its customs and who can find
an outpost. It has no membership dues; you're expected
to make a donation if you make significant use of the
group's resources. Membership provides the following benefits: 

* You can always find food and lodging at a circle outpost, though you might be expected to entertain the patrons in exchange. If times are tough, your food and lodging might be a step lower than the usual quality of the inn, but at least it's free.
* You have advantage on ability checks made to perform research or gather information while in a circle outpost, provided you have an opportunity to peruse archives and talk with other members. 
* Circle members are often willing to do minor favors for other members—gathering information, embarrassing a minor noble, causing a distraction. There's no cost for such a service, but anyone who helps you will expect you to provide similar assistance when they need it.

The first and oldest outpost of the Circle of Song is the
[[Golden Horn]] in the [[University District]] of [[Upper Menthis]];
a few bards are almost always in residence and willing
to share news and stories. Other, less elaborate outposts
are maintained in Sharn, and over the centuries the
circle has established outposts in most major cities and
many smaller communities across [[Khorvaire]]. These
sites are usually taverns or inns that have hidden areas
accessible only to members of the circle.

Bards are expected to set aside personal rivalries
while in a circle outpost, and any kind of combat or violence is prohibited. Violating this rule results in immediate expulsion from the circle, at the least. 
While wearing this circlet, you can cast the [[scorching ray]] spell with it once per day.

<<<
{{scorching ray}}
<<<
This silver crown is set with a crystalline orb set in the center. While worn, it allows the user to cast [[lesser illusion]] at will. If the wearer can cast [[rare-tier|spell tier]] spells, they can also cast [[greater illusion]].
This copper circlet is set with a sphere of polished granite. The wearer can cast [[meld into stone]].

<<<
{{meld into stone}}
<<<
This rugged crown is made of black feathers and copper wire. If you are able to channel [[primal magic]], you can cast [[polymorph]] on yourself to transform into a crow. You retain your mental capabilities while in crow form.
This elegant circlet of emerald and silver defends the wearer's mind. While it is worn, the user's mind cannot be read, and they have a large advantage to defend against magical [[enchantment]]s such as fear, [[charm]], sleep, or any spells that would alter the user's mental state.
[[Belashyrra]]'s prison [[demiplane]] is the Citadel of Lidless Eyes, located deep in [[Khyber]], a site that appears to have been molded from molten stone, chitin, and flesh. Across its warped and liquid expanses, thousands of eyes of every size and shape peer into the endless darkness. [[Beholder|beholder]]s, [[dolgrim]]s, and stranger [[aberration]]s dwell within the halls of the citadel, which is one of the few places where such creatures are willing to live side by side.

Some beholderkin serve Belashyrra as guards and agents, while others spend their lives in deep meditation, pursuing inner visions known only to the Lord of Eyes. It's rumored that anyone who sits on the citadel's throne can see through the eyes of any sentient creature on [[Eberron]] or in [[Khyber]].
In the dawn of [[Sharn]], there were three [[wizard]]'s circles: The [[Esoteric Order of Aureon]], the [[Guild of Starlight and Shadows]], and the [[Closed Circle]]. The wizards of the Closed Circle were interested in the lore of the [[daelkyr]], and soon developed strong ties to the [[Cults of the Dragon Below]]. Eventually their work began to frighten the other two circles; it came to a war of wizards, and the Closed Circle was sealed in its fortress in the undercity. Now, centuries later, the Dragon Below has returned to this arcane fortress. A [[mind flayer]] named Chyrassk has emerged from [[Khyber]] and broken the seals of this ancient dungeon. Chyrassk brought a small force from Khyber—[[dolgaunt]]s, [[dolgrim]]s, and an [[umber hulk]]—but he has begun to build up a [[human]] following, especially among the refugees of [[Cyre]]. He has found many disturbing and powerful relics in this fortress. 
The tallest tower in
[[Hope's Peak]] is the Citadel of the Sun, a temple dedicated to [[Dol Arrah]], the [[Sovereign|Sovereign Host]] lady of Sun and
Sword. The stone of the tower has been enchanted to
shine like gold, but it is still stone—something that
has proven to be a grave disappointment to many a
beggar who has sought to scrape a shaving from the
wall. Aerela Tal, a
devoted priest who served with distinction in the war
before retiring, maintains the temple. Aerela may provide assistance
in exchange for services; she is distressed by the
darkness in [[Sharn]], and would like to see light shed
on the shadows of the city.

This large and beautiful temple's tower rises far
above the other districts of [[Upper Dura]]. At the top
lies a garden, where three golden [[griffon]]s—half-celestial creatures said
to have been touched by the lady of the sun—reside.
The griffons rarely stray from the tower, but an
oracle has said that they will rise and fight at the time
of Sharn's greatest peril. Killing one of these creatures would be a heinous crime that would outrage
the devotees of the goddess.
This large, windowless building
near the top of Vasha Tower contains the nearly endless legal and historical records of [[Sharn]]. Copies of
birth records, marriage rolls, and death certificates
are kept in the archives, as well as property records,
copies of letters of marque, and records of identification papers issued in the city. Agents of the [[Citadel|King's Citadel]]
have unrestricted access to the records, and other
characters with contacts in the government or in a
[[dragonmarked house]] might be able to gain access to
a specific set of records for a single use by calling in
a favor.
The sole metropolis in [[Fernia]], the City
of Brass is the glorious city of the [[efreet|efreeti]], a place of marvels.
Here, a towering statue of an efreeti holds a sphere of [[continual flame]] the size of an [[airship]]. The statue reshapes itself to match
the appearance of the efreeti who currently dominates society;
both the statue and whichever efreeti it depicts are known as
the Sultan. Currently, the Sultan is [[Azhalar]] of High Hearth. 

All efreet have mansions in the City of Brass, though at any
given time, many dwell within their island estates. Likewise,
there are always a few [[dao]] in residence showing off their latest
creations and taking new commissions. The streets are filled
with [[mephit]]s and [[salamander]]s. Visiting mortals are a curiosity,
but most elementals are too busy to take much time on them.
The City of Brass is ringed with teleportation circles, linking it
to all of the estates and major foundries.
This [[layer]] of [[Shavarath]] looks like it was once a city of marvels, with towers
rivaling those of [[Sharn]], gilded monuments, museums,
gardens, and more. But the City of Knives lies between vast
armies of the Legion of [[Justice]] and the Legion of [[Tyranny]],
and it represents the impact of brutal war on a glorious city.
Ongoing bombardment is a constant threat. The civilian
conscripts are fighting their own war for shelter and supplies;
some rally together for the common good, while others have
become looters and brigands. Justice and Tyranny hold their
positions on either side of the city, relying on bombardment
and occasional assaults. The Legion of [[Cruelty]] spreads terror
within the city, while the [[celestial]]s of the Legion of [[Freedom]]
seek to rally the common people against all enemies.
Look to the cliffs to the north of [[Sharn]], and you'll see
a collection of crypts embedded into the cliff face. This
is the City of the Dead, the final resting place of the
wealthiest citizens of Sharn. Common folk are cremated
after death, but members of the [[Sixty]] Families and others with sufficient wealth have their remains interred in
the tombs and tunnels of this necropolis. 

Few people reside in this area. Among its major features are [[Aureon's Holt]], a temple of the [[Restful Watch]],
where [[Sovereign|Sovereign Host]] priests conduct funerals and serve
as the caretakers of the tombs. [[Warden Tower]] is an
outpost of the Church of the [[Silver Flame]], staffed by a
single hermit tasked to watch for supernatural threats.

Though the City of the Dead is largely peaceful, stories circulate about dark powers lurking there. Some
parents warn their children of the [[Lich|lich]]-Priest [[Gath]], who
steals disobedient children and forces them to work in
his kingdom of the dead, polishing the bones of his skeletal subjects. 
Clade is the first level of underworld power for the [[Dream Merchants]] in [[Dar Myan]]. Seemingly a mousy and reserved man, Clade wears
a mask of calm, pretending to be nothing more than an
apothecary. He is discreet and observant, cunning and
careful. He's also a cold killer who helps facilitate the
[[dreamlily]] trade through Dar Myan. Long ago, he lost all
faith in the [[Path of Inspiration]], but he doesn't know the
true power behind the Dream Merchants.
You create an invisible sensor within 1 mile in a location familiar to you (a place you have visited or seen before) or in an obvious location that is unfamiliar to you (such as behind a door, around a corner, or in a grove of trees). The sensor remains in place for up to 30 minutes, and it can't be attacked or otherwise interacted with. You can see and hear through the sensor as if you were in its space. 

A creature that can see the sensor (such as a creature with [[truesight]]) sees a luminous, intangible orb about the size of your fist.
The only major theater in
[[Middle Menthis]], the Classic lives up to its name by
performing only traditional works written before the
start of the [[Last War]]. While the [[Grand Stage]] in the
[[University District]] also performs more recent works
echoing the classical style, the Classic has a stated
policy of not even considering new works. Every performance in the Classic features archaic language,
outmoded social customs, and the idealistic outlook
of a world that has utterly vanished from [[Khorvaire]],
yet its thousand seats fill up every night. 
(Deinonychus)

Clawfoot [[dinosaur]]s are two-legged saurians with sharp
teeth and toe claws that resemble deadly sickles. They
are imposing creatures, about the size of a tall human,
and are fierce enough to take down even larger prey.

In the wild, an untrained clawfoot can easily hold its own in combat, but they are even fiercer when hunting in packs. Their instinct for pack structure has made these dinosaurs a traditional war mount for the [[halfling]]s of the [[Talenta Plains]], with clawfoots quickly and eagerly responding to training and control. 
These heavy gauntlets of brown iron are forged in the shape of an [[umber hulk]]'s claws, and they fit the wearer's hands and forearms all the way up to the elbow. While wearing both claws, you can tunnel through soil at a rate of 3 feet per second, and you can tunnel through solid rock at a rate of 4 inches per second.

You can use a claw as a melee weapon while wearing it. While wearing the claws, you can't manipulate objects.
A cleansing stone is a sphere 1 foot in diameter, engraved with mystic sigils. When touching the stone, you can activate it and remove dirt and
grime from your garments and your person.

Such stones are often embedded in pedestals in public
squares in [[Aundair]] or in high-end [[Ghallanda]] inns. 
While most people think
of [[dwarves|dwarf]] as grim and stoic individuals, the
merchant princes of the [[Mror Holds]] take great
pride in their appearance and clothing. Run by
Hellien Clamas Clebdecher, Clebdecher's Loom
specializes in fine clothing in Mrorian and [[Zil|Zilargo]]
styles. Clebdecher is one of the finest workers of
[[glamerweave]] in the city, and many [[human]] lords and
ladies come to [[Highhold]] to avail themselves of her
talents. As a result, there is usually a considerable
wait for Hellian's services; anyone preparing for an
important event needs to plan ahead to purchase a
Clebdecher gown or suit. 
Through prayers and rituals of their faith, clerics are [[divine|divine magic]] spellcasters that combine the magic of healing and inspiring their allies with spells that harm and hinder foes. They can provoke awe and dread, lay curses of plague or poison, and even call down flames from the heavens to consume their enemies.

Most clerics are priests of a [[religion]] with the devotion required to perform miraculous deeds. Their magic may not be as predictable or flexible as a [[wizard]]'s, but it can produce incredible phenomena that no [[arcane|arcane magic]] spell can reproduce. 
Cliff's End is a bay off the coast of mainland [[Lhazaar Principalities]] near [[Cliffscrape]], and is fenced in by [[Traglorn Isle]] and [[Tempest Isle]].
Cliffscrape is a town in mainland [[Lhazaar Principalities]]. It has a high population of [[dwarves|dwarf]] and [[orc]]s with family ties to the [[Ironroot Mountains]].
Cliffside encompasses the docks and waterfront of
Sharn, running along the edge of the [[Dagger River]] and
up the cliff above it. Massive lifts levitate goods up to the
skydocks in the district of [[Precarious]]. The area's rough
and poor, filled with sailors and dockworkers. Many of
these boisterous folk love the life in Cliffside; as a common saying goes, "Better a tankard of ale in Cliffside than a barrel of [[Central|Central Plateau]] wine."

Plenty of legitimate services can be found here—ships
need supplies and repairs, goods need to be stored,
captains need to hire crew, and sailors need a dry bed to
sleep in once in a while—but other businesses meet different kinds of demands. These services include bordellos, taverns, gaming dens, and shadier entertainments
for sailors to spend their off duty hours and wages on.

Even though the [[Sharn Watch]] has a token presence
here, Cliffside remains one of the most crime-ridden
districts in the city. This situation is exacerbated by the
presence of [[sahuagin]], who sell their services as guides
to help ships traveling to [[Xen'drik]]. In fact, the sahuagin
rarely initiate violence, but there have been clashes between them and aggressive, drunken sailors.

!! Districts and Noteworthy Locations

* [[Grayflood]]. This seedy waterfront district fills roughly the northern half of the docks and wharves running along the Dagger River.
* [[Mud Caves]]. This shantytown sits on the edge of Cliffside, where generations of destitute people have carved out homes in the cliff walls. It's a wretched existence, but most of the inhabitants have no other options. It also makes an excellent hiding place for fugitives. 
* [[Sharn's Welcome]]. Also known as the docks of Cliffside, this area is rough and dirty. Its taverns frequently host brawls, while the inns offer travelers a wide variety of ways to be cheated or robbed. 
* [[Ship's Towers]]. Drifting alongside the Cliffside docks is a collection of rafts, ships, and houseboats lashed together to form a floating community. 
''District Type: ''Adventurer's quarter<br/>
''Buildings: ''Shrines ([[Silver Flame]], [[Sovereign Host]],
[[Dol Dorn]], [[Dol Arrah]], [[Olladra]]), average lodging
(25), poor lodging (45), average food (20), poor
food (60), upscale trade (1), average trades (25), poor
trades (60), average services (20), poor services (60),
average residences (20), poor residences (80)<br/>
''First Impression:'' The towers of this district are
drab gray granite, but the crowds that fill the streets
are quite colorful. People of all races and cultures
can be seen. An [[Aundair]]ian wizard compares notes
with a [[kalashtar]] monk in the shade of a tavern, while
across the street a [[Lhazaar|Lhazaar Principalities]] privateer and a [[Valenar]] [[elf]]
compare blades. Clifftop is a fairly dingy district—but
it attracts an interesting crowd.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Highwater]] (southwest); [[Hope's Peak]] (south); [[Tumbledown]] (below)

This district attracts those willing to devote sword,
spells, or skills to risky but profitable endeavors. Anyone looking for a discreet bodyguard, a mercenary soldier, or a guide to the wilds of [[Xen'drik]] can
find what they need in Clifftop. Adventurers looking for a patron may find one here.

Clifftop is a curious blend of wealth and poverty.
Most of the businesses in the district are serviceable,
but not exceptional, providing for the needs of the
adventurer who rarely has more than a few pieces of
gold in his purse. It also provides services for the lucky
explorer or privateer who has returned home with
gold to spare, with commercial spellcasters, shops
selling used wands and old mageworked weapons, and
other exotic goods readily available. While similar in
many ways to the [[Deathsgate]] district, Clifftop has a
better and generally well-deserved reputation.

The district provides a number of services
adventurers may find useful. A wide variety of hirelings can be found here, and all of them are used
to putting up with the odd demands of adventurers. Likewise, as adventurers have a way of getting
into trouble with the law, there are a considerable
number of barristers and advocates in the district.
The pawnshops of Clifftop offer 45% of value for
almost any sorts of goods, except those that are obviously stolen; fences that deal in stolen goods must be
found in the [[lower levels|Lower Dura]] of [[Dura]]. 

!! Noteworthy Locations

* The [[Augury]]. A shop specializing in [[divination]] services.
* The [[Clifftop Adventurers' Guild]]. An institution that provides adventurers with camaraderie and profitable work. 
* The [[Drunken Dragon]]. A tavern frequented by members of the Clifftop Adventurer's Guild. The food is modest, but it has the widest selection of exotic alcohol in Sharn. 
* The [[Esoteric Order of Aureon]]. The guildhall of one of Sharn's most prestigious arcane orders. A reliable source for arcane spellcasting services. 
* The [[Korranor]]. A theater focused on tales of adventure.
* The [[Mystic Market]]. A collection of shops specializing in different categories of [[magic item]]s. Most merchandise is common or uncommon, but rare items are occasionally available. 
* A [[House Sivis Enclave|Sivis Enclave (Clifftop)]] specializing in legal services and translating texts from [[Xen'drik]].
* A [[House Tharashk Enclave|Tharashk Enclave (Clifftop)]] specializing in exploration and prospecting, with a focus on [[Xen'drik]].
* [[Kavv's]]. A small little-known restaurant that offers flavors of [[Xen'drik]].
* [[Kurala's House of Healing]]. A [[Jorasco]] house of healing.
A dwarf named
Shekkal Korranor established the Clifftop Adventurers' Guild 150 years ago, intending it as a place where
explorers and wanderers could find support and good
company. Shekkal died in the [[Last War]], but the guild
remains—a social club for adventurers and a one-stop
marketplace for anyone seeking capable champions. 

Located in the
[[Clifftop]] district of [[Upper Dura]], this organization has a
sterling reputation as a source of reliable explorers and
champions. Clifftop adventurers are known for their
courage and integrity, and guildmaster [[Sumara "Summer" Korranor|Summer Korranor]] holds members to a high standard of virtuous behavior. As a Clifftop adventurer, you're expected to keep
your word, to stand by your comrades, to uphold the law,
and never to intentionally endanger innocents with your
actions. Many of the local businesses cater to adventurers, and if you're a member of the guild, you can expect
a warm welcome in the taverns of Clifftop. 

The Clifftop Adventurers' Guild headquarters is the physical and social center of its district,
a massive stone edifice built with the riches acquired
over a lifetime of adventuring. Part quiet library, part
comfortable inn, part active gymnasium, and part rowdy
tavern, the guildhall contains practically every facility
adventurers could need to train, study, and socialize.
The neighborhood around it caters to adventurers' other
needs with its variety of shops and services. 
While wearing this cloak, you can make it billow dramatically at will.
While you wear this cloak, it projects an illusion that makes you appear to be standing in a place near your actual location, much like a [[displacer beast]]. If you or the cloak take damage, the property ceases to function for 5-10 seconds. This property is suppressed while you are incapacitated, restrained, or otherwise unable to move.

(See also [[Thuranni cloak]], the lower rarity version of this item that requires a [[Mark of Shadow]].)
While you wear this cloak with its hood up, you gain a large advantage to hide, as the cloak's color shifts to camouflage you.

(See also [[cloak of shadows]], the lower rarity version of this item that requires a [[Mark of Shadow]].)
This olive green cloak is pinned with dozens of long yellow ribbons. On command, the cloak will fly off the user's shoulders and attempt to entangle and distract an enemy within fifteen feet.
While wearing this cloak, you can speak its command word. This turns the cloak into a pair of bat wings or bird wings on your back for 1 hour or until you repeat the command word. The wings allow you to fly at a speed of up to 20 miles per hour. When they disappear, you can't use them again for several hours.
The wearer of this tattered black wool cloak can cause it to billow at will. Smoke issues out from under the cloak's hem, and the wearer's eyes seem to glow faintly red. Gain an advantage when intimidating.
While wearing this loosely-woven cashmere cloak, you can pull its hood over your head to cause yourself to become invisible. While you are invisible, anything you are carrying or wearing is invisible with you. You become visible when you cease wearing the hood. 

After 2 total hours of use, the cloak ceases to function. For every uninterrupted period of 12 hours the cloak goes unused, it regains 1 hour of duration.
This simple black cloak is covered in a layer of long, silky feathers. When a feather is removed, it hardens and can be used as a throwing knife, though the feathers shatter after one use. <<dr 1d6>> feathers regrow overnight.
This cloak is made of deeply violet silk, hemmed in gold and royal red. The collar is high and lined with golden beads.

Once per day, the user can summon the cloak's magic to greatly increase the strength of a single [[arcane|arcane magic]] spell.
In order to attune to this magic item, you must possess the [[Mark of Passage]].

This cape smells faintly of brimstone. While wearing it, you can use it to teleport yourself from your current location to any other spot within 500 feet. You arrive at exactly the spot desired. It can be a place you can see, one you can visualize, or one you can describe by stating distance and direction, such as "200 feet straight downward" or "upward to the northwest at a 45-degree angle, 300 feet."

You can bring along objects as long as you can carry them. You can also bring one willing creature of your size or smaller who is carrying gear up to its carrying capacity. The creature must be within 5 feet of you when you use this effect.

When you disappear, you leave behind a cloud of smoke, and you appear in a similar cloud of smoke at your destination. The smoke lightly obscures the space you left and the space you appear in, and it dissipates at the end of your next turn. A light or stronger wind disperses the smoke.

This property of the cape can't be used again until the next dawn.
This cloak provides allows you to cast [[mage armor]] on yourself once per day. However, the duration is only four hours.

<<<
{{mage armor}}
<<<
To use this cloak's effect, you must have the [[Mark of Shadow]].

While you wear this cloak with its hood up, you gain a large advantage to hide, as the cloak's color shifts to camouflage you.

(See also [[cloak of elvenkind]], the higher rarity version of this item that does not require a [[dragonmark]].)
While you wear this cloak, it does not billow in the wind. 
While wearing this cloak, you have advantage when hiding or skulking. In an area of dim light or darkness, you can grip the edges of the cloak with both hands and use it to fly at a speed of 7 mph. If you ever fail to grip the cloak's edges while flying in this way, or if you are no longer in dim light or darkness, you lose this flying ability.

While wearing the cloak in an area of dim light or darkness, you can [[polymorph]] yourself into a bat. The cloak can't be used this way again until the next dawn.
This huge cloak is made from the entire skin of a grizzly bear, clasped with rough iron hooks. If you are a spellcaster, you can cast [[polymorph]] on yourself to transform into a grizzly bear. However, there is a small chance you will forget that you were once human, in which case the spell does not wear off after 1 hour, and you will be unable to remove the cloak without magical assistance such as [[dispel magic]] or [[remove curse]].
This dark indigo cloak with a tattered, golden hem allows the wearer to create an illusory double of themselves up to three times per day. The double looks, sounds, and smells identical to themselves, and persists up to 1 hour, but the illusion is not solid, and will disappear if touched.
While wearing this cloak with its hood up, you can breathe underwater, and you have a swimming speed of 15 mph.
This thick cloak is made of a strange smooth leather that has a faintly blue hue. If you are able to channel [[primal magic]], you can cast [[polymorph]] on yourself to transform into a shark.
This bright yellow cloak has a huge golden sun emblazoned on the back. If the wearer is a [[cleric]] or [[paladin]] of [[Dol Arrah]], they rapidly recover from injuries while they stand in strong daylight.
This simple grey cloak billows with an eternal breeze. The cloak contains a bound air [[elemental]]. The user can freely change the direction of the wind, and once per day, can summon a huge blast of wind in a 30-foot cone.
Made of awakened vines, this cloak normally acts as a garment, but comes alive and acts on its wearer's will when needed.

While wearing the cloak:

* You can cause the vines to flail out and attack hostile creatures within 5 feet of you, piercing them with poisoned thorns.
* You can climb as fast as you can run, as the vines animate and pull you up even sheer surfaces.
* You gain a resistance to poison.
* If you would knocked prone or into a wall, the vines animate, cushion your fall and restore your balance.
This copper amulet contains tiny interlocking gears and is powered by magic from [[Daanvi]], a [[plane]] of clockwork predictability. A creature that puts an ear to the amulet can hear faint ticking and whirring noises coming from within.

When you make an action while wearing the amulet, you can forgo rolling the dice to get a low-[[impact]] [[partial success]]. Once used, this property can't be used again until the next dawn.
There is one dark stain in the
shared history of the arcane orders. Three hundred
years ago, a third order arose in Sharn—a sinister cabal
called the Closed Circle. This order specialized in transmutation and necromancy and dabbled in the forbidden
lore of the [[daelkyr]] and the [[Dragon Below|Khyber]]. It's said that
the members of the Closed Circle went mad and sought
to summon terrible things; whatever the truth, the guild
was wiped out more than two hundred years ago by the
combined action of the Church of the [[Silver Flame]], the
[[Esoteric Order|Esoteric Order of Aureon]], and the [[Guild of Starlight and Shadows]].
Hidden workshops of the Closed Circle might still be
found in Sharn, where vengeful [[lich]]es or other [[wizard]]s
of the Circle practice their dark arts in hiding. 
This elegant outfit magically mends itself to counteract daily wear and tear. Pieces of the outfit that are destroyed can't be repaired in this way.
Like the [[Azure Gateway]], the Cloud Dragon is an upscale,
elegant restaurant with breathtaking views, but without the crowds and long waits typical of the [[Celestial Vista]] Restaurant. Its menu concentrates on the best
of [[Brelish|Breland]] fare—spicy ginger soup, sautéed garlic
beef, curried chicken, and the like. In contrast to the
secretive owner of the Azure Gateway restaurant, the
owner of the Cloud Dragon is very forthright about
her identity, making sure to meet and greet every
customer and ensure that everyone has an enjoyable dining experience. Ironically, Kathya Morn is a shapechanger, an [[aranea]] in
[[human]] guise. She has no far-reaching evil agenda;
she just wants to run her restaurant in peace. She does
engage in shady business deals and has ties to at least
one of [[Sharn]]'s criminal organizations, but those take
a back seat to her interest in her establishment.
Cloud [[giant]]s are muscular with light skin and have hair of silver or blue. They are able to turn into mist and create clouds of billowing fog. Average height: 24 ft. 
The spellcaster creates a 20-foot-radius sphere of acidic, yellow-green fog centered on a point within 100 feet. The fog spreads around corners, and its area is heavily obscured. The fog lasts for 1-10 minutes, or until dispersed by a strong wind. The vapors are heavier than air and roll along the surface of the ground.

Each creature in the cloud that can't withstand the effects of the fog suffers painful acid burns. Creatures are affected even if they hold their breath or don't need to breathe.
Near the center of [[Skyway]],
where Azure and Brilliant meet, Cloudpool Park
stands as a testimony to the fantastic power of magic.
Wispy cloudstuff is shaped throughout the park to
resemble exquisitely detailed trees, whose leaves rustle
in the ever-present breeze. The cloudscape rolls in
gentle hills, forming beautiful lawns where the residents of Skyway enjoy picnics and long walks. At the
center of the park lies a large “pool” of crystal-clear ice
that affords a spectacular view of [[the city|Sharn]] below to those
brave enough to stand on it or peer over the edge. 
Led by Prince [[Mika Rockface]], the Cloudreavers are a powerful band of [[dwarf]] and [[orc]] marauders based in [[Port Krez]] on [[Krag]] Island. The Cloudreaver Principality is in some ways the antithesis of the [[Seadragons]]. If High Prince [[Ryger|Ryger ir'Wynarn]]’s rule represents stability for the [[Lhazaar Principalities]] as the nation moves forward to a new future, the Cloudreavers represent the violent instability of a return to the old ways of bloodthirsty piracy.

Currently the Cloudreavers have a fleet of six vessels, but these ships are remarkably swift; the Cloudreavers possess a number of //windsail//s, which are [[magic item]]s that can shift the wind in their favor. These treasures allow the Cloudreavers to range far from their homeland and to match the speed of [[elemental galleon]]s. Typically, the Cloudreavers prey on the southeastern shores of [[Khorvaire]], striking at [[Q'barra]]n, [[Aereni|Aerenal]], [[Darguul|Darguun]], and [[Zil|Zilargo]] vessels and villages; occasionally Cloudreaver captains even head into [[Brelish|Breland]] shipping lanes, attacking ships en route to [[Stormreach]] or [[Trolanport]]. The Cloudreavers prefer to strike at night, taking full advantage of the darkvision possessed by most of their sailors.

Many Cloudreavers worship the [[Devourer]], and some develop [[divine magic]] abilities as a result of this devotion. The principality takes its name from this practice; tales speak of Cloudreaver pirates calling lightning from the sky to shatter enemy sails and ships.
Clovis Forlaine, pirate and fence, runs various gray-market operations in [[Whitetooth]], acquiring [[Tashanan lichens|Tashana lichen paste]], art, and other valuable resources of the [[Tundra|Tashana Tundra]].
Originally a privateer from the [[Lhazaar Principalities]],
Clovis has operated out of Whitetooth for more than a
decade now. He has a hand in, or an eye on, every significant transaction that takes place in Whitetooth. Clovis
keeps several different safe houses in town and often conducts business on vessels anchored in the waters west
of Whitetooth. Clovis's true identity is a carefully guarded
secret, and he "officially" presents himself as a slickly
dressed male human of conspicuously Lhazaar origin.
This armor is a creation of the [[daelkyr]] [[Belashyrra]], the Lord of Eyes. Made from a tough, leathery material, a coat of many
eyes is warm to the touch. It is covered with eyes—eyes of many
different types of creatures, constantly glancing around as it
studies your surroundings. When you attune to the armor, it
binds itself to your flesh and shares its insight, granting the
following benefits:

* The armor lets you see in all directions, and you have advantage on perception attempts that rely on sight.
* You have darkvision with a range of 120 feet.

//''Gifts of the All-Seer.''// All coats of many eyes are linked to
[[Belashyrra]], and while wearing one you may receive visions—flashes of things the Lord of Eyes wishes to see through you. If you follow through with these tasks, your armor can evolve, gaining additional powers and increasing its effective rarity.

* A rare coat also grants you an advantage to dodge physical threats, and allows you to see invisible creatures and objects within 120 feet.
* A very rare coat also grants you the ability to cast [[arcane eye]] with it once per day.
The cockatrice looks like a hideous hybrid of lizard, bird, and bat, and it is infamous for its ability to turn flesh to stone. These omnivores have a diet that consists of berries, nuts, flowers, and small animals such as insects, mice, and frogs—things they can swallow whole. They would be no threat to anything else if not for their fierce and frenzied response to even a hint of danger. A cockatrice flies into the face of any threat, squawking and madly beating its wings as its head darts out to peck. The smallest scratch from a cockatrice's beak can spell doom as its victim slowly turns to stone from the injury.
The Cogs lie deep beneath [[Sharn]], below the [[sewers]]
and [[Old Sharn]]. Streams of [[Fernian|Fernia]] lava flow through this area, and over the
centuries, House [[Cannith]] has helped [[Breland]] establish
vast foundries that tap this mystic resource. The Cogs are a honeycomb of passages, just wide enough for the carts and caravans that transport goods to and from the surface. The heat is palpable, and smoke and sulfur scents the air. [[Ashblack]]
and [[Blackbones]] are industrial districts, largely inhabited by [[warforged]] laborers and miserable workers of other races. It is said that House Cannith maintains a
forgehold in the Ashblack district, and that this is where Baron [[Merrix d'Cannith]] conducts his experiments.

The [[Sharn Watch]] maintains a presence in the Cogs,
and overseers from House Cannith are stationed here
to keep things in order. Beyond these industrial districts lies the deeper tunnels of [[Khyber's Gate]], a tenement district. 

!! Districts and Noteworthy Locations

* [[Ashblack]]. The first foundries of Sharn were built here. The district is devoted to industry, and the environment here is sweltering and claustrophobic. 
** [[Keldoran Forge]]. Though most of the foundries in the Cogs are devoted to large-scale industry, the [[dwarf]] Antos Keldoran maintains a small forge and produces bespoke arms and armor. 
* [[Blackbones]]. Blackbones is newer than Ashblack, and it shows. The district's corridors are wider and better lit. The foundries are well maintained, and the district has a few thriving businesses. Most of the [[warforged]] that reside in Sharn work in Blackbones. 
** The [[Pool of Onatar's Tears]]. A small temple in the Blackbones district holds a pool said to be blessed by the god [[Onatar]]. Smiths come from across [[Khorvaire]] to dip their tools in the pool.
** The [[Red Hammer]]. The Red Hammer is Sharn's only inn maintained by and for [[warforged]]. It offers those who work in the Cogs opportunities to socialize, along with repair and cosmetic services. 
* [[Khyber's Gate]]. On its surface, this is a wretched, stifling [[goblin]] tenement district. But [[Sharn]]'s darkest secrets can be found within the Gate's tunnels. 
''District Type:'' Warehouse district<br/>
''Buildings:'' Warehouses (50), poor trades (20), poor
services (40), poor residences (400), other (3)<br/>
''First Impression:'' This district is filled with sturdy
warehouses and storage towers. Teamsters and
laborers haul goods to and from storage vaults. A
sulfurous smell wafts up from the shafts that lead to
the [[Cogs]] far below.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Terminus]] (northwest); [[Wroann's Gate]] (northeast); [[Torchfire]] (bridge, southwest); [[High Walls]] (south); [[Blackbones]] (below); [[Graystone]] (above)

Travelers who arrive at [[Wroann's Gate]] or [[Terminus]]
may take [[skycoach]]es up to the higher wards, but cargo
is brought to the warehouse district of Cogsgate.
The [[Guardians of the Gate]] and the Wharf Watch
both perform customs investigations, and there are
three tariff offices where merchants can pay the taxes
levied on their goods, or where local landowners can
come to pay their taxes to the [[Brelish|Breland]] Crown. After
customs inspections, goods are usually stored in one
of the many warehouses until they can be distributed
throughout the city or transported to the docks. 

Cogsgate is the gateway to the [[Blackbones]].
Ore from [[Zilargo]] and [[Karrnath]] is carted down the
long tunnels into the darkness, and the sulfurous
smell of the [[Cogs]] occasionally lingers the district.
Most of the Cog workers live in this district, and it
can be a rough place.

One new area of tension revolves around the
war between the [[Boromar Clan]] and the criminal
organization known as [[Daask]]. The Boromars have
financial interests in many of the warehouses, and
the monsters of Daask have been striking Boromar
holdings across the city. To date, Cogsgate has been
left largely untouched, but at any time a Daask commando force could emerge from Blackbones to strike against a Boromar holding. 

There is a small House [[Deneith]] outpost in this
district where travelers can arrange for additional
warehouse security, long-term bodyguards, or short-term escorts to the higher levels of the city.

House [[Kundarak]] maintains five high-security warehouses in this district. These warehouses are especially secure, combining a variety of magical [[abjuration]]s with mundane traps. These warehouses cost twice as much to use as other warehouses in Cogsgate, but merchants with a serious interest in security readily pay the price.
This scintillating copper coin sheds dim light in a 5-foot radius. If dropped a distance greater than 5 feet, the coin issues a melodious ringing sound when it hits a surface. Any creature that can hear the chime can determine the distance the coin dropped based on the tone.
Cold fire is a form of [[continual flame]] that occurs
naturally in [[Fernia]]; the flames have the texture of warm putty.
Fernian ashes are created from the wood of rare trees found
only in the [[Sea of Fire]].
[[Human|human]]s have no memory of the [[Age of Demons]]. Even
the ancient [[elves|elf]] were born long after the [[overlord]]s
were bound in [[Khyber]]. But the [[lizardfolk]] were there
when [[fiend]]s sacrificed [[couatl]] on obsidian altars.
Their race is as ancient as the [[giant]]s or the [[dragon]]s
themselves.

During the long uprising, the [[lizardfolk]] of ancient [[Q'barra]] aided the [[couatl]] in their struggle. Toward the end of that war, the couatl planted a seed in the collective unconscious of their lizardfolk allies to ensure that they would always remember the horrors of the past. To this day, when the lizardfolk of Q’barra sleep, they dream of the [[Age of Demons]]. They dream of the battles their ancestors fought. They dream of dragonfire and radiant serpents. And they dream of [[Masvirik]], the [[demon]] [[overlord]] known as the Cold Sun. Unlike the [[Uul Dhakaan]], the shared dreams of the lizardfolk are not a persistent dreamscape in the [[Ocean of Dreams]]; they are pre-programmed memories and lessons implanted by the [[couatl]].

The [[lizardfolk]] of [[Q'barra]] call themselves the
''Masvirik’Uala''. The direct translation of this is the Cold
Sun Federation, but the settlers who interact with the
lizardfolk have long misinterpreted this name. The
Masvirik’Uala aren’t the Federation //of// the Cold Sun—they are the league that stands against it.

Their shared dreams define their culture, and they
stand ready to face the [[overlord]] should he rise again.
They fight the [[Poison Dusk]] whenever their paths
cross. And they watch over the web of light that the
great serpents planted in the earth—the [[dawn shard]]s,
[[dragonshard]]s charged with the light of the [[Silver Flame]].

!! The Cold Sun Federation Today

The [[lizardfolk]] of the Masvirik’Uala are a loose alliance of small tribes. They are hunters and gatherers who split to form new tribes any time their population
grows to a level that cannot be supported by local
resources. Many tribes are nomadic, but those that
live in the areas rich in natural resources have established permanent villages.

The Masvirik’Uala have always kept their distance
from settlers. There were clashes when the settlers
first arrived, but the lizardfolk proved willing to cede
certain regions to the outsiders.

Duke [[Ven ir'Kesslan]] brokered the [[Newthrone]] Accords,
a series of maps establishing the regions the
Masvirik’Uala held dear and would fight to maintain.
The [[lizardfolk]] have no concept of legal documents.
For them, the Accords were simply a statement of fact,
not a binding document. Nonetheless, whenever the
settlers have held to the territories of the Accords,
there has been peace with the lizardfolk.

Now the peace has been broken. Federation lizardfolk are raiding caravans, killing prospectors, and attacking mining camps. Settlers have fought the
[[Poison Dusk]] for decades, but this new wave of violence has shocked them with its brutality. When the [[lizardfolk]] are victorious in battle, they leave no survivors and no structure standing.

Lord [[Khalar Velderan]] of House [[Tharashk]] has condemned
the [[lizardfolk]] as a threat to all the people of [[Q'barra]].
The facts are more complicated. Adventurers who
investigate violent incidents will discover that all
the attacks are tied to [[dragonshard]] mining. Only
shard caravans are attacked. The villages that have
been struck have all been supporting mining work,
whether through House [[Tharashk]] or independent
prospectors.

The most curious aspect is the fate of the shards
themselves. The [[lizardfolk]] break every tool and kill
every settler they find, but they leave behind large
quantities of [[dragonshard]]s. Among those leavings,
there are never any [[dawn shard]]s or [[dusk shard]]s.

The attacks are carried out by nomadic tribes of
lizardfolk. It is difficult to find these raiders in the
deep jungles, though all of the tribes know of the
violence. If questioned, a Masvirik’Uala elder will
acknowledge the attacks and say that the warriors are
“defending the light in the land.” The outsiders are
“stripping the light away and spreading the darkness,
but the [[Cold Sun|Masvirik]] will rise again.” Given that most
outsiders know nothing of the ancient history of the
region, most interpret the rise of the Cold Sun as a
threat tied to the lizardfolk themselves, not realizing
that the Cold Sun is actually what the lizardfolk seek
to stop with their action.

The lizardfolk mean well. They oppose the horror they see in their dreams. But they do not understand the outsiders. In their minds, the miners are one with the [[Poison Dusk]]—servants of [[Masvirik]] who seek to extinguish the light and spread the [[dusk shard]]s. Those who serve the Cold Sun must be eliminated.

Perhaps there is a way to forge an understanding between [[Tharashk]] and the Masvirik’Uala, but this won’t happen unless the prospectors are persuaded to abandon the lucrative trade in [[dusk|dusk shard]] and [[dawn shard]]s. It will take more than [[scale|scales]] superstition to accomplish that. 

!! Masvirik'Uala Culture

Common dreams define the culture of the [[Q'barra]]n
[[lizardfolk]]. The dreams bind the tribes together, but
they have also kept lizardfolk culture stagnant; they
live the same lives as their ancestors and model their
actions on dreams.

The lizardfolk have no written language. Their
most important stories and teachings come to them
every night. The language of the tribes is an unusual
and rather limited dialect of Draconic, and they are
irritatingly concise in conversation. This is because
of the shared dreams. Every lizardfolk has the same
cultural references, and it is impossible for them to understand how an intelligent creature could fail to grasp these things. Thus, a lizardfolk priest will say “that one is Kurall’s Claw” when he means “that one is a traitor who will kill you in your sleep.” The priest doesn’t know how to say it another way, and he doesn’t understand why he’d need to—everyone knows the tale of Kurall’s Claw. Effects such as comprehend languages are of limited use; the communication gap is not a question of translation but of context.

This has defined interaction with the [[lizardfolk]]
ever since [[human]]ity arrived in the region. It has led
to many misunderstandings, so that both lizardfolk
and settlers consider the others to be simpletons.
Player characters have an opportunity to be the first
explorers to bridge this gap and establish a new bond
between lizardfolk and settlers.

Another aspect of the shared dreams can impact
players: the [[Draconic Prophecy]]. The dreams are
records of events, but they also hold messages from
the [[couatl]], who mastered the lore of the Prophecy
long ago. If the player characters have a role in the
Prophecy, the lizardfolk may know of it. Depending
on the characters’ destiny, the lizardfolk may welcome them as heroes or greet them with inexplicable hostility. Though the Prophecy is never certain, this
is an opportunity to set adventurers on a particular
path. The Masvirik’Uala may know that the Stormchild with the Sixfold Scar must find the crystal sword and face the Black Wyrm in the Obsidian
Tower. They don’t know for certain that the outsider
will triumph in this battle with [[Rhashaak]].

Dragonshards play a vital role in [[lizardfolk]] society. Masvirik’Uala lizardfolk wear [[dawn shard]]s as jewelry, and they embed the shards in weapons or
tent poles. Villages deep in the jungle often have pits
of [[dusk shard]]s. Despite the seemingly casual attitude
toward these, lizardfolk place a high value on the
shards when trading or selling them. It is difficult
for them to explain their reasons in terms explorers
understand. Like so many things, to the lizardfolk,
their reasons are common knowledge. Dawn shards
hold the light; dusk shards channel the darkness and
must be kept away from the [[Poison Dusk]].

While the [[lizardfolk]] and the [[dragonborn]] both
oppose the [[Poison Dusk]], they rarely work together.
The dragonborn consider the lizardfolk to be superstitious primitives, while the lizardfolk have the same problems communicating with the dragonborn as
with [[human]]s. Besides that, they still remember that
it was the first failing of the dragonborn that nearly
unleashed [[Masvirik]] ages ago. 

While their appearance often leads adventurers
to assume that theirs is a [[druid]]ic culture, lizardfolk
devotions draw on [[divine power|divine magic]], not [[primal|primal magic]] spirits.
They revere a nameless force of light that holds back
darkness, symbolized by the silhouette of a winged
serpent encircling a stylized, black sun. A student of
religion who observes them long enough may recognize the truth: they are devoted to the [[Silver Flame]].
While it looks more like a
fortress than a place of worship, Coldflame Keep is
the local church devoted to the [[Silver Flame]]. Established during the [[Purge|Silver Crusade]] as a garrison of the church
templars, Coldflame Keep has slowly dwindled as
the hierophants have drawn resources away to the
temples of [[Sovereign Towers]] and [[Pinnacle]]. Today,
the keep is a shadow of its former self. Flamebearer
Mazin Tana ([[human]] [[cleric]]) does his
best to maintain the temple and serve the community. His acolytes consist of two teenagers and one
crippled scribe. 

The garrison was built to house
a hundred soldiers, but currently there are only
eight templars in residence. While these soldiers are supposed
to protect the district from supernatural threats,
Mazin believes that they have been chosen by the
[[Archierophant|Ythana Morr]] to keep an eye on the aging priest—to
make certain that Mazin does not try to interfere
with the powers that control the [[Church|Silver Flame]] in [[Sharn]].
While he is disillusioned with his superiors, Mazin
still believes in the ideals of the Church and does his
best to help those in need. If the party needs the aid
of a true priest of the [[Silver Flame]], Mazin is one of
the few people who can help them.
You speak a one-word command to a creature you can see within 60 feet. If the target cannot resist your magical imperative, they must follow the command. The spell has no effect if the target is [[undead]], if it doesn't understand your language, or if your command is directly harmful to it.

Some typical commands follow, though you might issue a command other than one described here. If the target can't follow your command, the spell ends.

* ''Approach''. The target moves toward you by the shortest and most direct route.
* ''Drop''. The target drops whatever it is holding.
* ''Flee''. The target moves away from you by the fastest available means.
* ''Grovel''. The target drops to the ground and lies face down.
* ''Halt''. The target stops moving.

If you are able to cast rare-tier spells, you can cast this as such to affect up to three creatures with this spell simultaneously.
Pleasantly situated atop [[Breland]]
Spire, the Commons is a large open-air plaza with
a commanding view of the neighboring towers and
lower reaches of the city. Every morning, vendors
wheel their carts up to the Commons and offer a
mouth-watering variety of food from a dozen different cuisines, from [[Karrnath]]i sausage to [[Talentan|Talenta Plains]]
kebabs. The offerings are hardly haute cuisine, but
they are authentic and generally delicious. 
This sealed glass jar is filled with jiggling slime that sheds dim light. The jar can be thrown, and when it is shattered, the compressed [[gelatinous cube]] inside rapidly expands to its full size, engulfing any object or creature within its new volume.
For up to one hour, you understand the literal meaning of any spoken language that you hear. You also understand any written language that you see, but you must be touching the surface on which the words are written.

This spell doesn't decode secret messages in a text or a glyph, such as an arcane sigil, that isn't part of a written language.
This item appears to be a piece of simple silver cutlery,
stored in a leather case. Different types of concealable
cutlery exist, each with a different effect. The DM chooses
the kind of cutlery or determines it randomly. 

While you are holding a piece of cutlery, you can speak its command word to cause it to turn into another item (listed below) for 1 hour or until you return it to its case and end this effect. Once you have used this property for a given piece of cutlery, it can't be used again until the next dawn.

|!Cutlery |!Transformed Item |
|Butter Knife |Torch |
|Dessert Fork |Crowbar |
|Salad Fork |Trident |
|Soup Spoon |Shield |
|Steak Knife |Longsword |
|Tea Spoon |Shovel |

Concealable cutlery can be found individually or in
complete sets. A utility set contains a butter knife, a
dessert fork, and a tea spoon. A warfare set contains a
salad fork, a soup spoon, and a steak knife. 
You can hold this conch to your ear and gain the ability to understand and speak with fish for 10 minutes. You learn about the fish's experiences over the
last day, as well as local places and creatures.

If your DM allows, the fish may also complete a small
task for you, if you can successfully convince it to do so.

Once you have used this property, it can't be used again
until the next dawn. 
A pulse of energy tears ripples through the air, dealing minor
damage over a wide area. The spellcaster chooses a point within 60 feet; each
creature within a 20-foot-radius sphere centered on that point experiences a deafening shockwave.
These large, glowing orbs are a necessary component of the [[lightning rail]] coaches run by House [[Orien]]. Alone, a single conductor stone has no peculiar properties except for glowing with a bright internal light (equivalent to a [[sunrod]]). When two conductor stones are within 5 feet of each other, they create a magical conduit allowing rapid travel through the space between the stones. The orbs repel each other strongly; even the great weight of a lightning rail coach can't force two conductor stones closer together than a few feet. The interaction of the conductor stones creates a visible field of electrical energy (from where the name “lightning rail” comes) that leaps between adjacent stones and also arcs over the top of the body of the coach.

While the lightning rail is the most successful implementation of the magic of conductor stones, it is not the only possible implementation. Entrepreneurs and scoundrels have experimented widely with alternative vehicles designed to run along conductor stone lines. Smaller vehicles incorporating conductor stones can often attain high rates of speed, but are prone to mishap without the great weight of a lightning rail coach counteracting the repulsion effect of the conductor stones.
Conjuration spells involve the transportation of objects and creatures from one location to another. Some spells summon creatures or objects to the caster's side, whereas others allow the caster to teleport to another location. Some conjurations create objects or effects out of nothing. 

!!! <<showspells-school {{!!title}}>>
The spellcaster calls forth an [[elemental]] servant. They choose an area of air, earth, fire, or water that fills a 10-foot diameter sphere within 90 feet. An elemental of that type appears in that space. The elemental is friendly to the caster and obeys their commands for up to one hour, or until the spellcaster dismisses it, at which point it disappears. If, however, the spellcaster's concentration is broken, they lose control of the elemental, and it acts according to its nature until it disappears up to an hour later. 
This strategic board game is played across [[Khorvaire]], but is particularly popular in [[Karrnath]]. It was reputedly invented by [[Karrn the Conqueror]] himself.
Whenever you earn a [[partial success]] or [[failure|bad outcome]] for a roll, you typically suffer some sort of consequence. There are five categories of consequences.

!! Stress or Harm

This consequence represents your increasing fatigue or physical injuries you suffer. See [[stress]] and [[harm]] for more information.

!! Reduced Effect

This consequence represents impaired performance. The PC's action isn't as effective as they'd anticipated. You hit him, but it's only a flesh wound. She accepts the forged invitation, but she'll keep her eye on you throughout the night. You're able to scale the wall, but it's slow going—you're only halfway up. This consequence essentially reduces the effect level of the PC's action by one after all other factors are accounted for.

!! Worse Position

This consequence represents losing control of the situation, putting you in a more dangerous situation. Perhaps you make the leap across to the next rooftop, only to end up dangling by your fingertips. A situation might go from controlled, to risky, to desperate as you get deeper and deeper in trouble.

!! Complication

This consequence represents trouble, mounting danger, or a new threat. The GM might introduce an immediate problem (the room catches fire, you're disarmed, the target evades you and now it's a chase, reinforcements arrive), or, the GM might create or tick a clock for the complication. Maybe there's a clock for the alert level of the guards at the manor, or for the suspicion of the noble guests at the masquerade party. 

!! Lost Opportunity

This consequence represents shifting circumstances. You had an opportunity to achieve your goal with this action, but it slips away. To try again, you need to try something different—usually a new form of action or a change in circumstances. 
Constructs are made, not born. Some are programmed by their creators to follow a simple set of instructions, while others (namely, [[warforged]]) are imbued with sentience and capable of independent thought. [[Golems|golem]] are the iconic constructs. Many creatures native to the plane of [[Daanvi]], such as [[modron]]s, are constructs shaped from the raw material of the plane as embodiments of pure law.

<<list-links-article "[tag{!!title}sort[title]]">>
A flame, equivalent in brightness to a torch, springs forth from an object that you touch. The effect looks like a regular flame, but it creates no heat and doesn't use oxygen. A continual flame can be covered or hidden but not smothered or quenched.
You take control of the air in a 100-foot cube that you can see within 300 feet. Until the spell ends up to 1 hour later, you can blow gusts of wind at any intensity up to gale force, in any direction.

Causing the wind to blow in a horizontal direction can deflect missiles or push creatures or objects away. A downdraft can force flying enemies to the ground, or standing enemies prone. An updraft can increase jump height and soften falling damage.
''District Type:'' Professionals<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrine ([[Kol Korran]], [[Onatar]]), garrison, average lodging (15), upscale food (11), average food (25), exotic trades
(11), upscale trades (15), average trades (40), upscale
services (40), average services (80), upscale residences
(40), average residences (80)<br/>
''First Impression:'' A massive copper arch stretches over
the center of this business district. The streets are filled
with well-to-do citizens and professionals, conducting
business or heading to their homes and offices.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Twelve Pillars]] (north); [[Dalan's Refuge]] (southwest); [[Den'iyas]] (bridge, west); [[Dancing Shadows]] (below)

Copper Arch is a professional district, similar in
most respects to [[Twelve Pillars]]. 

!! Noteworthy Locations

* The [[Three Towers]]. A fortress [[enclave]] of House [[Deneith]]. One tower is a garrison for the [[Blademark|Blademarks Guild]] mercenary forces that police Upper Tavick's Landing. The second is dedicated to house business and training. The third is a private mansion for Deneith heirs. 
* [[Magical Pigments]]. A gallery displaying paintings by local artists.
* [[Transmutation]]. A beauty salon that employs both [[magical|cosmetic transmutation]] and mundane cosmetic techniques. 
* [[Wyredd's Spirits]]. Wyredd deals in fine wines and exotic spirits. Wyredd's has the finest selection in Sharn, but his prices are high. 
Copper [[dragon]]s are incorrigible pranksters, joke tellers, and riddlers that live in hills and rocky uplands. Despite their gregarious and even-tempered natures, they possess a covetous, miserly streak, and can become dangerous when their hoards are threatened.

A copper dragon has brow plates jutting over its eyes, extending back to long horns that grow as a series of overlapping segments. Its backswept cheek ridges and jaw frills give it a pensive look. 

At birth, a copper dragon's scales are a ruddy brown with a metallic tint. As the dragon ages, its scales become more coppery in color, later taking on a green tint as it ages. A copper dragon's pupils fade with age, and the eyes of the oldest copper dragons resemble glowing turquoise orbs.

!! Magic and Breath Weapon

The copper dragon can exhale an acidic spray, as well as a cloud of gas that slows other creatures, forcing them to move as if in slow-motion for up to a minute. As innate spellcasters, adult copper dragons can cast spells such as [[polymorph]], [[invisibility]], [[stinking cloud]], [[greater illusion]], and [[charm]].

{{DragonAgeCategories}}
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Dol Dorn]], [[Olladra]]), average
lodging (14), poor lodging (80), average food (25),
poor food (120), poor trades (40), poor services
(40), poor residences (80)<br/>
''First Impression:'' The streets are full of noise and
laughter, as people stagger into and out of the many
inns and taverns of the district. A large arena occupies the center of Cornerstone, and occasionally a
ragged cheer rises up from the amphitheater.<br/>
''Social Class: ''Lower class<br/>
''Neighbors:'' [[Tavick's Market]] (west); [[Graystone]] (south); [[Holdfast]] (bridge, northwest); [[Wroann's Gate]] (below); [[Pinnacle]] (above)

For those people who want a slightly more respectable
level of entertainment than that offered in [[Dragoneyes]], Cornerstone offers a host of inns and taverns—they may not be the best in [[Sharn]], but prices are cheap
and a few at least have good food and comfortable beds.
The district has a strong interest in sporting events;
quite a few windchases are based in [[Cornerstone]], and
there is always activity at the great arena. While the
large gambling halls are located in [[Dragoneyes]], there
are always people (mostly aligned with the [[Boromar Clan]]) taking bets in taverns and at the arenas, and a
character who wishes to place a few silvers at risk will
have no trouble finding a taker. 

!! Noteworthy Locations

* The [[Cornerstone|Cornerstone (arena)]]. A massive arena that hosts a wide array of sporting events. These include jousts and races, both on foot and through the air. The ''Stone Trees'' is an offshoot of the Cornerstone that serves as the playing field for [[hrazhak]] competitions.
* The [[Tooth and Nail]]. A comfortable tavern devoted to the sport of [[hrazhak]]. Most of the clientele are [[shifter]]s, but anyone willing to talk hrazhak will find friends here. 
“[[Cornerstone]]” is a district in [[Middle Tavick's Landing]]. “''The Cornerstone''” is the
massive arena in that district. The Cornerstone holds a wide variety of sporting events, ranging from foot races to equine jousts and [[skyblade]] matches. When circuses come to town, they often perform in the
Cornerstone arena. The Cornerstone is considerably
more respectable than the [[Hollow Tower]] of [[Hareth's Folly]], and the competitors are generally nobles or celebrities; you can't come in off the street and expect
to participate in a race at the Cornerstone.

The ''Stone Trees'' is a small offshoot arena of the Cornerstone and is the one formal
[[hrazhak]] forum in [[Sharn]]. There is a considerable
[[shifter]] population in the district, and over the centuries these crafters and merchants raised a considerable sum to invest in the arena. While it is far smaller
that the Cornerstone, it has an extremely versatile
design, allowing different configurations of obstacles
to be set up for each match. These obstacles include
unusual metal and stone sculptures designed to mimic
trees—hence the name of the arena.
Cornerstone is the largest of the [[slaad]] cities, located on one of the [[Shifting Islands]] of [[Kythri]]. Its architectural style and precise layout are constantly changing, but it's always
a sprawling city that houses hundreds of thousands of slaadi.
If Cornerstone is held by the Concordance of Iron, it has
vast armies drilling (though their tactics and units constantly
shift). If it's under the influence of the Final Regency, there
are immense temples and countless shrines to the slaadi
interpretation of the [[Sovereigns|Sovereign Host]]. 

The attitude of slaadi toward adventurers depends on the
active culture. The Final Regency may welcome adventurers who
profess devotion to the Sovereigns, provided they don't question
the Regency interpretation. The Confluence of Reality celebrates
extraplanar visitors, desiring their stories and performances.
Meanwhile, the Cornerstone of the Glorious Union of Flesh is
a very dangerous place to visit! Regardless, Cornerstone is the
best place to acquire Kythrian artifacts or magical services.
The Corpse Collectors are the royal [[necromancers|necromancy]] of [[Karrnath]]. Their numbers have greatly diminished since [[Kaius III|Kaius ir'Wynarn III]] pledged to stop creating new [[Karrnathi undead]], but the agency still maintains and trains undead specialist forces such as [[bone knight]]s at their stronghold, [[Fort Bones]].

The commander of the Corpse Collectors is known only as the Kind, a title given to him by Gyrnar Shult (the creator of the [[Odakyr Rites]]) long ago. He directly reports to the Minister of the Dead, Count [[Vedim ir'Omik]]. The Kind is an old man with long gray hair who wears the simple black uniform
and silver raven pin of the Collectors. He remains vigorous despite his age, but he never raises his voice or
shows any sign of anger, and is a devoted [[Seeker|Blood of Vol]]. He isn't especially skilled a combat magic, but he is one of the finest necromantic
ritualists of the modern age.
A land of lush jungles and fertile plains, Corvagura is in
many ways the heart of [[Riedra]]; it has the highest population density of any region in [[Sarlona]], and both the capital city of
[[Durat Tal]] and the primary port, [[Dar Jin]], are located here.
The people of Corvagura once served a tyrannical dynasty
of [[sorcerer]]-kings, but the [[Inspired]] helped overthrow these
dictators. In addition to having the highest population
of the eight provinces, Corvagura also has the greatest
number of monoliths ([[hanbalani|hanbalani alta]]), a fact that undoubtedly
contributes to the fanatical loyalty of the inhabitants.

Many branches of the [[Unity]] are based in the bastions
of Corvagura. A few of the other bastions are dedicated to
research; noteworthy subjects include behavior modification, [[humanoid]] magebreeding (specifically, the breeding of improved [[vessels|Chosen]] for the [[Inspired]]), and [[planar|plane]] theory.

Politically and in terms of population, Corvagura is
the crown province of [[Riedra]]. The inhabitants are deeply
devoted to the Inspired, and the bulk of [[Riedrans]] who
are allowed to interact with foreigners—including most
sailors and merchants—are Corvaguran. 
A [[magewright]] beautician
can perform a range of minor transformations—for a price.

Minor cosmetic [[transmutation]] is quite common; most
professional beauticians can change your hair or eye color.
Unnatural effects are rarer, seen mainly in [[Aundair]] and [[Zilargo]];
metallic hair colors are a recent fad in [[Fairhaven]], and in the
days before [[Galifar]], the nobles of [[Thaliost]] would adopt [[elf]]
features. The effects of cosmetic transmutation typically last
a week, but if you're dealing with a magewright of sufficient
skill, you can extend the effect to one month. In some cities,
you might even find an expert who can make the change
permanent. The more complicated the transmutation, the
more costly—and hard to find—the service becomes.

!! Cosmetic Transmutation Services

|!Type |!1 Week |!1 Month |!Permanent |
|Minor (natural) |1c |2c |5c |
|Minor (unusual) |2c |4c |10c |
|Moderate |4c |8c |20c |
|Major |6c |12c |30c |

//''Minor (Natural).''// Simple transmutation can temporarily
change the color of your hair, skin, or eyes within the standard
parameters for your species.

//''Minor (Unusual).''// If you're seeking unnatural effects—cat's
eyes or moving tattoos—you'll need a highly skilled beautician.

//''Moderate.''// Significant physical transformation allows
you to alter your weight, height, or sex. These substantial
transmutations require an expert in their trade.

//''Major.''// Specialized or exotic physical transformation can
match the appearance of a specific individual or change your
apparent species. While this alters your appearance, you
don't gain the racial traits associated with your selected form.
Those seeking to imitate another's appearance must be wary.
Duplicating the appearance of another person is a crime under
the Code of Galifar—malicious theft of identity—and even those
who can perform the magic won't do so without good reason.

It's always up to the DM to decide what services are
available in any given community, and as with any [[magewright]],
beauticians are often specialized; a hairdresser might be able
to give you permanent silver hair but be unable to change
any other feature. In [[Sharn]], [[Transmutation]] in [[Upper Tavick's Landing]] and The [[Veil of Flesh]] in [[Upper Northedge]] are salons that specialize in cosmetic transmutation. A House [[Jorasco]]
clinic can help with gender transition, shaping muscle tone, and
similar services, while the criminal [[Tyrants]] of [[Tavick's Landing]]
are the masters of exotic physical transformation.
Couatls are benevolent serpentine beings of great intellect and insight. Their brilliantly colored wings and gentle manner speak to their [[celestial]] origins.

Couatls are a race born from [[Siberys]] at the dawn of time. Along with the [[dragon]]s, they battled the [[fiend]]ish [[overlord]]s of [[Khorvaire]] and [[Sarlona]]. Ultimately,
the couatls sacrificed most of their number and combined their souls to form a prison to hold the overlords.
Scholars have theorized that their combined souls eventually became the force that is worshiped by the Church
of the [[Silver Flame]]. The church is ambivalent on the
topic, preaching that regardless of how the Flame was
first kindled, there is a place within the Flame for all
noble souls.

The few couatls that remain on [[Eberron]] are devoted
servants of the light. They are most often found guarding the prison of the ancient [[overlord]]s, and individuals sometimes act directly to aid adventurers who
fight the forces of darkness. 
[[Sharn]]'s seventeen-member [[city council|Sharn Council]] meets at the top of Sun Tower. Surrounded by
a colonnaded gallery and crowned by an observation
deck, the council hall offers some of the most spectacular views in the city. The council meets weekly,
and an elite troop of soldiers (privately employed
by the council) guards the hall during meetings.
When the council is not in session, the hall is a tourist attraction, though aides and lesser bureaucrats
bustle through its lower halls unceasingly. 
The Council of Cardinals supports the [[Keeper of the Flame]] and attends to running the country of [[Thrane]]. In theory, the council is subject to the Keeper of the Flame in the hierarchy of the Church of the [[Silver Flame]]. Given the youth and inexperience of the current Keeper, the council has a relatively free hand, leaving spiritual matters to
the Keeper of the Flame and reserving political matters for itself.

As one might expect, the power of the High Cardinal, the Council of Cardinals, and lesser church officials breeds corruption, but it’s not
widespread. The beneficent ideals of the church
govern the behavior of the majority of church officials, who have only the best interests of [[Thrane]]’s people in mind. Still, other religious figures, High Cardinal [[Krozen]] in particular, seek ever more dictatorial power and view Thrane as their personal domain.

!! Organization

Archbishops serve as governors and mayors throughout [[Thrane]], while bishops and archpriests run individual cathedrals and churches within Thrane and abroad; all ultimately report to the Council. Cardinals rarely conduct ceremonies of their own and have little to do with directly governing affairs in individual cities, delegating such tasks to archbishops. 

Cardinals must be nominated and elected by sitting cardinals, and therefore the overwhelming majority of them come from the ranks of the archbishops. Most of these are from the Order of Ministers, with a notable few coming from the Order of Templars. Only rare individuals rise from the missionary Order of Friars. 

You attempt to interrupt a creature in the process of casting a spell. If the creature is casting a spell of "rare" tier or lower, the spell fails and has no effect.

If you are able to cast legendary-tier spells, you can cast this as such to counter other legendary-tier spells.
Courage is a stimulant that grants a user an alchemical propensity to avoid being frightened; however, long-term use causes paranoia and
can leave someone in a state of catatonic terror. It is made in [[Droaam]] and smuggled into the [[Five Nations]] and beyond.
Courdain is an island in the [[Lhazaar Principalities]], located in [[Turnaway Sound]].
The covadish plant grows on the island of [[Aerenal]]. Its [[necromantic|necromancy]] properties make it a valuable component for enhancing [[spell]]s that channel life energy from either [[Irian]] or [[Mabar]].
This loosely woven cowl is made of pale-yellow cashmere. If the wearer is able to channel [[primal magic]], they can transform into a swarm of bees at will, as a [[rare-tier|spell tier]] [[spell]]. The transformation lasts for up to an hour.
Cragwar sits in the foothills of the [[Blackcaps|Blackcap Mountains]] along
the border between [[Aundair]] and [[Breland]]. During the
[[Last War]], the town fell many times, switching hands
from [[Aundair]] to [[Thrane]], and back to Breland again.
Monsters crawling from the [[Black Pit]], tumbling down
from the mountains, and raiding from the [[Greenhaunt]] keep Cragwar’s soldiers on constant alert.

Since the region is so unstable, Cragwar is more
a military outpost than a town. Traders, adventurers, and crafters do settle here, or at least travel to
the town for commerce. Cragwar presents a united
face to hostile forces, but it’s said that [[Aurum]] agents
infect the place like a cancer, undermining the
military’s authority and risking the town’s defense
for commerce. The wealth of the region has also
attracted at least two members of the Aurum’s Gold
Concord. ''Daeluse d'Kundarak'' ensures the safety
of the Aurum’s interests in the Blackcaps, while a
[[changeling]] named [[Zeed]] has an ambitious plan to
secure a place on the Platinum Concord: starting a
war between [[Breland]] and [[Thrane]] with the ultimate
goal of creating a tiny nation-state in southern Thrane
belonging to the [[Aurum]]. Zeed’s incautious activities
have attracted the attention of the [[King's Citadel]].
Crafted by the [[daelkyr]], the crawling gauntlet appears to be the
forearm of a monstrous [[humanoid]]. When you attune to it, it
surrounds your hand and forearm, fusing to your flesh.

When you make an unarmed strike, you can slash with the
talons on the gauntlet.  Additionally, you can project an ectoplasmic duplicate of the
gauntlet, allowing you to manipulate objects at a distance. While
wearing this gauntlet, you can cast [[mage hand]] at will.
The Crawling Swamp is a large region of wetland in the western [[Shadow Marches]]. It is home to a variety of bizarre sites, such as [[Slug Keep]], the [[Pond of Shadows]], and the [[Aberrant Scar]].
You pull wisps of shadow material from the weave of raw magic
to create a nonliving object of plant-based matter within
30 feet: soft goods, rope, wood, or something similar. You
can also use this spell to create mineral objects such as
stone, crystal, or metal. The object created must be no
larger than a 5-foot cube, and the object must be of a
form and material that you have seen before. The spell takes one minute to cast, and requires a tiny piece of matter of the same type of the item you plan to create.

The duration depends on the object's material. If
the object is composed of multiple materials, use the
shortest duration.

|!Material |!Duration |
|Vegetable matter |1 day |
|Stone or crystal |12 hours |
|Precious metals |1 hour |
|Gems |10 minutes |
|[[Adamantine|adamantine]] or [[mithral]] |1 minute |

Using any material created by this spell as another
spell's material component causes that spell to fail.

If you are able to cast [[legendary-tier|spell tier]] spells, you can cast this as such to make objects up to a 15-foot cube in size.
A creation forge is a spherical chamber that contains a
floating obelisk. This obelisk creates [[warforged]] souls
and places them in newly constructed warforged bodies.
Only [[dragonmarked|Mark of Making]] members of House [[Cannith]] can
create and maintain such devices, and though the [[Treaty of Thronehold]] mandated the destruction of all creation
forges in [[Khorvaire]] after the [[Last War]], at least one creation forge is rumored to exist in the bowels of [[Sharn]]. 
A creature's tier is a general indicator of how powerful or dangerous an average specimen is. 

# ''Tier 1'' creatures include most "natural" creatures of [[Eberron]], including most [[humanoid]]s and [[beast]]s. (Roughly corresponds to D&D 5e's CR 0-½.)
# ''Tier 2'' creatures are extremely dangerous threats to the average non-combatant. This category includes some of the mightiest natural and [[dire beast]]s of the world, including elephants, lions, orca whales, giant scorpions, and [[dinosaur]]s like the [[clawfoot]]. But this category also includes pure [[elemental]]s, [[troll]]s, [[intellect devourer]]s, and most [[ooze]]s. (CR 1-5.)
# ''Tier 3'' creatures can rout a well-trained unit of soldiers single-handedly. These include the [[medusa]], [[mind flayer]], [[deva]], [[chain devil]], [[wyvern]], [[efreeti]], [[giant]], [[treant]], and [[swordtooth titan]]. (CR 6-11.)
# ''Tier 4'' creatures possess power that transcend the wildest possibilities of the natural world. These include the [[vampire]], [[rakshasa]], adult [[dragon]], [[night hag]], [[planetar]], and [[beholder]]. (CR 12-17.)
# ''Tier 5'' creatures are the stuff of legends. These include the [[solar]], [[kraken]], [[balor]], [[elder tempest]], [[kalaraq]], [[inevitable]], most [[archfey]], and the oldest living [[dragon]]s. (CR 18-23.)
# ''Tier 6'' entities are godlike archbeings of unfathomable influence. The [[daelkyr]]. The [[overlord]]s. The mightiest [[archfey]] of [[Thelanis]]. The [[Architect]]s of [[Irian]]. The [[Dark Power]]s of [[Mabar]]. (CR 24+.)
''[[Creature Tier|creature tier]]: ''''{{!!tier}}''
The small [[Eldeen|Eldeen Reaches]] town of Cree, located on the shore of [[Lake Galifar]], doubles as both a farming and fishing community. Farms spread out to the
west and north, while fishing vessels ply their trade on the
crystal-blue waters of the lake. 

One notable sailor is Captain Notak Ninefinger who commands the vessel
Smooth Sailing. When Notak and his crew aren’t engaged in
fishing, they can be hired to transport passengers and
cargo across the lake. As such, this Cree vessel can often
be seen in the ports all along the Lake Galifar shore, in
the [[Eldeen Reaches]], [[Aundair]], and [[Breland]].
The Crescent Bay lies between the [[Shadow Marches]] and the [[Demon Wastes]].
!! Criminal Activities

Under the laws of [[Sharn]], crime takes many forms. Any
sort of theft is illegal, including "malicious theft of identity"—the use of shapeshifting abilities or [[illusion]] magic
to impersonate someone with the intent to cause harm.
Assault, murder, and fraud will all land you in hot water.
Other activities walk the edge of legality. Gambling and
prostitution are legal in Sharn, but these industries are
heavily taxed and regulated. Likewise, smuggled goods
include illegal merchandise such as drugs and mystical
explosives, but also heavily taxed goods, such as the
drug known as [[dreamlily]]. 

Although crime occurs throughout [[Sharn]], it is most
apparent in [[Lower Dura]] and the [[Cogs]]. The [[Sharn Watch]] has a minimal presence in these wards, which
are the easiest places to sell stolen goods or to hire
an assassin. Of course, they're also good places to get
robbed or caught up in a street brawl.

Sharn is home to a large number of minor gangs and
independent criminals. Even so, most criminal activities
in the city come under the purview of one of four criminal organizations: the [[Boromar Clan]], [[Daask]], House [[Tarkanan]], and the [[Tyrants]]. Even independents usually
have an arrangement with one of these power groups. If
your character has the criminal background, work with
the DM to determine which of these organizations you're
connected to.

!! Forces of the Law

In [[Precarious]], a [[dwarf]] tries to smuggle a [[portable hole]]
filled with treasures pillaged from [[Xen'drik]] past the
guards of the [[Sharn Watch]].

In Clifftop, a patrol of guards calls on two dueling
barbarians to throw down their weapons; the fierce warriors just snarl and rush at each other once more.

In the court of [[Upper Central]], a magistrate orders the
Justiciar of Aureon to blind the prisoner in preparation
for his sentence of perpetual darkness.

The law is a force to be reckoned with in Sharn. Even
in places where the watch is notoriously ineffective,
those who would break the law still need to be wary of
zealous guards resistant to bribes or threats. 

* The [[Sharn Watch]]
* The [[King's Citadel]]
* The [[Redcloak Battalion]]

!!! Crimes and Punishments

Officers of the watch can levy fines on the spot when they catch culprits, which is the typical way that minor crimes are dealt with. For a serious offense, the perpetrator is taken to a garrison and held until a trial can be arranged. A criminal who is considered to be a serious flight risk will be taken to the most secure facility in Sharn—the [[King's Citadel]] headquarters.

Typically, a prisoner's case comes to the attention
of a local magistrate within <<dr 1d4>> days. The magistrate
reviews the facts of the case and asks the victim to
confirm or deny their role in the crime while under the
influence of a [[zone of truth]] spell. The magistrate will
then propose a punishment to the accused; if the offer is
refused, the case goes to trial.

Punishment for convicted criminals varies, but longterm imprisonment is quite rare. Prisoners who deemed
to be too dangerous to be allowed to roam free are more
likely to be executed than imprisoned. Typically, a long
prison sentence is used only for criminals who can't be
allowed to go free, but whose deaths would have negative diplomatic repercussions.

Fines are the typical form of punishment. The amount
of a fine is generally based on the nature of the crime,
but a magistrate has the right to increase a fine to ensure that it is an effective punishment. For example,
a fine of 2 crowns is crippling to a commoner but can be
inconsequential to an adventurer or a member of the
[[Aurum]], and in such cases it will be increased. Also, the
court can confiscate possessions in lieu of receiving
payments in gold; you might not care about having to
pay a fine of 20c, but having your grandfather's magic
sword confiscated instead might sting. If a criminal
can't afford to pay a fine, the sentence might be changed
to hard labor—or, in the case of adventurers, performing
special services on behalf of the city or the Crown.

Other kinds of punishment include branding (generally in a visible location, warning others of your criminal
actions), exile, or several magical measures: an ongoing
curse, a period of induced blindness, and so on. A repeat
offender might be declared an outlaw, which status is
often indicated by a brand. An outlaw is stripped of the
protection of the law, and anyone can take any action
against them without fear of legal retribution. 

!! Criminal Organizations

<<list-links-article "[tag[criminal organization]search[Sharn]sort[title]]">>

!! Street Gangs

<<list-links-article "[tag[gang]search[Sharn]sort[title]]">>
<<list-links-article "[tag{!!title}sort[title]]">>
This wide, heavy cuff of blackened iron can only be removed by the person who put it on. It appears to be a simple cuff; however, when the command word is spoken, the cuff suddenly weighs 500 lbs, forcing the wearer to the ground until the command word is spoken again. If spoken by the wearer, the command word has no effect.
The Crimson Covenant is a circle of the oldest and most powerful [[undead]] champions of the [[Blood of Vol]], some of whom were guiding the Seekers before [[Erandis Vol|Lady Illmarrow]] even knew the faith existed. They dwell in the catacombs beneath [[Atur]] in [[Karrnath]], and their existence is only known to a select few.

The [[necromantic|necromancy]] rites that created these ancient [[vampire]]s, [[oathbound|mummy]], and [[lich]]es were adapted from [[Aereni]] techniques; it was never as sophisticated as the techniques used by the [[Bloodsails]] or the line of Vol. As a result, these ancient undead are beginning to deteriorate, both physically and spiritually, and must be protected and tended by Abactor [[Malevanor]] and the other priests of the [[Crimson Monastery]] in [[Atur]].

[[Lady Illmarrow]] covertly influences the Crimson Covenant through handpicked agents she has sent to infiltrate the circle, trying to shape it to her agenda. In this way, she has prevented the Covenant from taking direct action against the Order of the [[Emerald Claw]]. 

Named members of the Crimson Covenant include:

* ''Duran'': The most ancient member of the Crimson Covenant, Duran was its first [[lich]]; but while his will is strong, his enchantments are unable to maintain his body and he exists now as a demilich, a floating skull with ritually crafted soul gems in his eye sockets.
* the ''Silent Knight'': a death knight who spends much of her time meditating on the pain and shame of her tragic life. She does not speak and can extend an aura of magical silence at will.
* ''Lady Dusk''

Some champions of the Covenant were destroyed in the [[Last War]].
The [[Blood of Vol]] might not have the influence it once did, but the [[crown|Kaius ir'Wynarn III]]’s distancing from the faith did not sway the bulk of [[Atur]]’s
citizens. The Crimson Monastery perches above the
city, a sprawling complex spanning several acres and
serving as the heart of the faith. Inside is a maze of worship halls, ritual chambers,
shrines and vaults, cells, and residences. Buried deep,
beyond the prying eyes of the common worshipers, dwell the elder [[undead]] of the [[Crimson Covenant]] in the catacombs beneath the city.

The high priest of the Crimson Monastery is Abactor Hass [[Malevanor]].
The Crimson River in [[Q'barra]] is a distributary of [[Torva River]], branching off near the [[dragonborn]] settlement of [[Ka'rhashan]] and flowing into [[Tempest Strait]].
Before the [[Mourning]], a spring in the eastern part
of [[Cyre]] fed the Rushing River as it traced a short but
fertile path south to [[Kraken Bay]]. The Rushing River is
now as dry and barren as the rest of the [[Mournland]],
and the location of the spring is marked by the Crimson Water, a stagnant lake of blood-red water.

The shores of the Crimson Water are littered with the bones and corpses of animals and foolish travelers that have strayed into the [[Mournland]] and sought to slake their thirst with a drink from the lake. Its depths hold the ruined [[Cyran|Cyre]] town of Eastwood Springs, which once served as a resort town for the
leisured classes of [[Cyre]]. But even [[Ikar's Salvage]] has not dared mount an expedition into the toxic waters to recover any treasures that may lie within
the ruins.

Despite its toxic waters, however, the lake does support life—of a sort. Water [[elemental]]s, their forms the same deep red as the Crimson Water, have been seen around the lake, particularly on the southern shore. Their purpose and origin are unknown.
The Crooked Mirror is a quiet, unremarkable inn, notable for the number
of [[changeling]]s and [[shifter]]s among its clientele. In
fact, the inn serves as a front for the [[Tyrants]], and
anyone who wants to do business with the Tyrants
can find someone to talk to here. Any [[changeling]]
receives a bonus to attempts to gather information while in
the Crooked Mirror.

A shrine dedicated to the [[Keeper]] is hidden in
the basement of the Crooked Mirror, and many of
the regular customers participate in secret ceremonies to this deity. The [[doppelganger]] Zaz maintains the shrine. While
Zaz gets along well with the [[Tyrants]], her true loyalty
lies with the [[Cabinet of Faces]], the mysterious cult of
the [[Traveler]] hidden in the shadows of [[Khorvaire]].
She generally helps the Tyrants, but she often sets
her own bizarre schemes in motion.

The owners and staff of the Crooked Mirror appear
to change on a weekly basis—one week the innkeeper is
a cheerful male [[dwarf]] named Mrogab, the next week
she's a surly female [[half-orc]] named Traaka. In fact,
the staff consists of two [[doppelganger]]s (not counting
Zaz) and six [[changeling]]s. These eight take turns playing various roles at the inn and performing work for
the [[Tyrants]]; they enjoy creating elaborate dramas with
these roles, and each trip to the Crooked Mirror should
involve colorful new personalities. While the on-duty
staff generally assumes the forms of other races, most
of the doppelganger or changeling clientele maintain
their natural forms while at the inn. 
Crown Island is an island in the [[Lhazaar Principalities]].
The high walls of Crownhome, the hereditary home of [[Karrnath]]’s royal
family and the dwelling of King [[Kaius ir'Wynarn III]], rise atop King’s Hill in the Highcourt Ward of [[Korth]]. The structure is more a military base than a palace. With over a thousand soldiers stationed here and backed by siege engines and other defenses,
Crownhome embodies the nation’s preoccupation
with battle.
In this grand foundry, tended by [[shadar-kai]] and guarded by
newly forged [[marut]]s, the [[immortal]] spirit known as the Smith of Souls refines the essence of faded spirits into [[husksteel]].
From these lingering scraps of memory and emotion, she forges the armor and weapons of the shadar-kai, and creates
the maruts from the husks of brave souls. She also creates
smaller and stranger items from husksteel.

The Smith wears a mask of black steel and an apron of
dragonhide. When forging [[marut]]s, she takes the form of a
[[giant]], and when crafting tiny trinkets, a [[gnome]]. It's possible
that she collects the memories of mortal artisans, and can
replicate their works at her forge.
Developed during the [[Last War]] in [[Thrane]], this small order of adepts and
[[artificer]]s crafts [[magic item]]s drawing on the power of the [[Silver Flame]].
Most [[demon]]s of [[Shavarath]] serve the Legion of Cruelty. They torture civilians, have
no concern for collateral damage or their own losses, and make
little effort to hold territory. Their focus is purely on inflicting
maximum damage on foes and their own region alike. The
Century of the Salted Earth devastates the regions they fight in,
while the Century of Terror creates hideous displays with the
corpses of their victims and delights in psychological warfare.
The Legion of Cruelty slaughters [[devil]]s and [[angel]]s with equal
glee, and is despised by [[Justice]] and [[Tyranny]] alike.

All manner of demons can be found in the Legion of Cruelty;
their form reflects their military role, and many wear battered
armor, steel scales, or are simply coated in fresh blood.
[[Barlgura|barlgura]]s and [[hezrou]]s are brutal shock troops. [[Chasme|chasme]]s and
[[vrock]]s flood the skies, while [[goristro]]s are living siege weapons.
[[Marilith|marilith]]s and [[balor]]s command centuries, while cohorts may
be led by even greater demonic beings.

Many within the Century of Terror wear the flayed skins of their foes and
assert that the [[Mockery]] is part of Cruelty Command.
! The Lost Moon

''Color:'' (not visible)<br/>
''Associated [[Dragonmark|dragonmark]]:'' (none) <br/>
''Associated Plane:'' [[Dal Quor]]

This moon is believed to have been destroyed by the [[Cul'sir]] Dominion during the [[Age of Giants]], using an [[eldritch machine]] described as a "vast altar of obsidian and brass". In so doing, the [[giant]]s completed a ritual that permanently severed the [[plane]] of [[Dal Quor]] from the Material Plane, erasing all [[manifest zone]]s to the plane and preventing it from becoming coterminous ever again.
A stretch of land east of the town
of [[Ghalt]], the Crying Fields saw battle after bloody battle
as [[Thrane]] and [[Aundair]] fought for control of what is now
southern Aundair. Today, no one farms these fields, no
animals graze upon the crimson-tinged grass. The place
has a forlorn, melancholy atmosphere, as though a thick
and cloying fog hangs over it. On nights when the primary
moon of the month rises full, the sounds of battle can be
heard rolling across the empty expanse, and some claim
that the dead soldiers even appear to continue their endless
struggle for the land.

The name of the area comes from the sound the wind
makes when it blows from [[Lake Galifar]] and crosses into
Thrane. That’s when sounds of anguish and despair claim
the fields. Low and distant during the day, the cries grow
louder and more distinct at night.
This crystal sphere is typically about 6 inches in diameter. While touching it, you can cast the [[scrying]] spell with it.

<<<
{{scrying}}
<<<
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (248), average
residences (32)<br/>
''First Impression:'' Manors and mansions surround
penthouse towers, the sheer size of these estates hinting at the wealth of the residents within. Walls and
bridges are covered with thick panels of glass and
[[crysteel]], causing a brilliant kaleidoscope of color
when sunlight strikes the towers.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Oak Towers]] (northwest); [[Pinnacle]] (bridge, southeast); [[Silvergate]] (bridge, south); [[Korranath]] (Korran-Thiven) (bridge, southwest); [[Holdfast]] (below)

While many of the most influential citizens of [[Sharn]]
prefer to live in [[Upper Central]], closer to the center of
government and trade, Crystal Bridge is home to many
of Sharn's wealthiest denizens. A number of [[dragonmark]]ed heirs maintain private residences in Crystal Bridge or [[Oak Towers]], along with [[Brelish|Breland]] aristocrats
and merchant princes. Crystal Towers is a quiet,
peaceful district, and many of its inhabitants employ
private guards to ensure that it remains peaceful. 

!! Notable Inhabitants of Crystal Bridge

* [[Haras Kant]]. A wealthy aristocrat and member of the [[Aurum]].
* [[Ilia Merith]]. A philanthroper and patron of the arts.
[[Riedra]]n architecture often
incorporates a form of [[crysteel]]. When properly treated
and charged with energy from a [[monolith|hanbalani alta]], a structure
containing that material sheds colorful light. A bastion
city can be a remarkably beautiful sight at night. In a village, buildings are not actually constructed of crysteel,
but beacons are set at key points to provide illumination.
[[Riedran communities|Riedrans]] have two grids of light—key regions
remain lit at all times, but other areas (such as living
quarters) are shut off after curfew. Light is a gift of the
[[Inspired]]; they provide it, and they take it away. 
''Date: '' [[9 Olarune|Khorvaire calendar]]

During the [[Last War]], saboteurs caused a floating tower
to fall into [[Lower Dura]]. This devastation can still be
seen today in the district now known as [[Fallen]]. On 9
Olarune, people gather to remember those who were
lost that day. Many of them carry on a tradition of crafting elaborate ice sculptures and throwing them into the [[Dagger River]]. 
Crystals of Denion is a magic emporium that buys and sells
[[magic item]]s of considerable value. Most of Denion's
goods are related to [[charm|enchantment]] effects or enhancing one's charisma. He also has a variety of extremely expensive magical art; while fascinating and beautiful, these
have no practical value for adventurers. 
The [[Inspired]] lords of [[Riedra]]
supervise the mining of a crystalline substance that can
be alloyed with iron to form Riedran crysteel. Crysteel
makes excellent weapons, and the crystalline component
makes them resonate with [[psionic|psionics]] power. 
This cube is about an inch across. Each face has a distinct marking on it that can be pressed. When you press one of the cube's faces, a barrier of invisible force springs into existence, forming a cube 15 feet on a side. The barrier is centered on you, moves with you, and lasts for 1 minute, until you deactivate it or it is deactivated by a magical effect such as [[disintegrate]] or [[passwall]].

The barrier allows nothing to pass through. You can allow certain objects (such as walls, floors, and ceilings) to pass through, as well as certain categories of matter or phenomena (e.g. gases, nonliving matter, living matter, or [[spell]] effects).

If your movement causes the barrier to come into contact with a solid object that can't pass through the cube, you can't move any closer to that object as long as the barrier remains.

You can create this barrier five times per day before it must be magically recharged.
This bracelet is made of stained braided leather with a brass buckle. While wearing it, the wearer leaves behind no footprints, fingerprints, scent trails, or other signs that could be used to track them.
These two golden bracelets are designed to be worn by two people. While worn, each person is always aware of the other's exact location and well-being.
This plain steel breastplate is studded with dents and holes from arrowheads. Once donned, the armor can only be removed by magical means, such as the [[remove curse]] spell. All projectiles that pass within 15 feet of the wearer, such as arrows, rocks, and magical missiles, curve in midair to hit the wearer.
//No creature could match the Titan King Cul'sir in power or greed. His strength was immeasurable. He knew one thousand spells and held the treasures of a continent in his vaults, and yet he still hungered for more. He held the elves in his thrall, yet some were sly enough to slip through his fingers and find refuge in the wilds.//
<div align="right">—excerpt from the [[Tairnadal]] legend of Vadallia and Cardaen</div>

Cul'sir was the mightiest titan of the [[Age of Giants]], and united the titans of [[Xen'drik]] into the single largest civilization of the age, the ''Cul'sir Dominion''. These mighty ancestors of modern [[giant]]s sought to dominate all reality, exploring the [[plane]]s as well as [[Eberron]].

It was Cul'sir and his empire that warred with the [[quori]] of [[Dal Quor]], culminating in the giants' destruction of the moon [[Crya]] and severing the [[plane]]'s direct connection to [[Eberron]].
* A paradise exists within the world, a vale bathed in the light of the Inner Sun. Earn your passage with the blood of worthy foes.
* Our existence is a chrysalis state, preparing us for transcendent immortality within the bowels of the [[gibbering mouther]].
* The [[Lord of Eyes|Belashyrra]] sees all secrets. Its gaze elevates the worthy and slays the unbeliever. Drive doubt from your heart, and you will see reality through new eyes.

The Cults of the Dragon Below are wildly diverse. The
tenets above describe the beliefs of three different
cults. [[Warlocks|warlock]] draw power from [[demon]] [[overlord]]s, and
[[daelkyr]] cultists serve [[mind flayer]]s and [[beholder]]s. Others embrace deep convictions that others see as madness. Outsiders use the term "Cult of the Dragon Below"
as a blanket term to describe these disparate beliefs,
but the cultists don't use this name or see themselves as
part of a greater whole. 

Cults of the Dragon Below are based on madness or
power. A cult that seeks power chooses to serve a dark
force because of the gifts they receive from it. A cabal of
scholars might serve the demon [[overlord]] [[Sul Khatesh]]
in exchange for secrets of magic. In the [[Mror Holds]],
dwarf [[clans|Mror clan]] bargain with [[Dyrrn]] the Corrupter to gain
[[symbiont]]s and sinister gifts. The [[Shadow Marches]] contain cults devoted to the [[daelkyr]] [[Belashyrra]] and [[Kyrzin]]. Membership in such a cult is voluntary, and spellcasters are more likely to be [[warlock]]s or [[wizard]]s than [[cleric]]s;
their power comes from bargaining, not from faith.

Cults driven by madness have a warped view of reality. A cultist might believe [[aberration]]s are a higher form of life and that the [[daelkyr]] will elevate mortals.
Other cultists may not recognize the true nature of the
beings they serve. A cult of [[Rak Tulkhesh]] might truly
believe their lord will bring peace to the world, even if
that peace must begin with bloody war. Joining such
a cult isn't a choice, it's something you fall into due to
madness. New cults can spring up anywhere, as seeds
of madness take root and spread.

Cults of the Dragon Below often appear as antagonists. However, your character could be a member of a relatively benign cult. You might have been raised in a
cult but broke free from its influence. If your character
was or is part of a cult, work with your GM to develop
the details of your sect. 

!! Symbol

Many cultists carry pieces of volcanic glass or small
Khyber [[dragonshard]]s, but the cults have
no unified symbol. Individual cults develop a symbol
based on their fiendish patron or mad visions. Eyes, tentacles, and broken weapons are all common themes. 

!! Rites

Cult rituals are intense and often violent, including blood sacrifice and ritual combat. Many cultists consume unnatural substances, seeking a closer communion to [[aberration]]s. They perform rituals in Undercommon, though most cultists don't have a full
understanding of the language. 

!! Temples

Cults meet underground, whether in caverns or sewers.
Rural cults seek out places twisted by the powers of the
plane of [[Xoriat]] or [[Khyber]]. 

!! Examples of Cults of the Dragon Below

<<list-links-article "[tag{!!title}sort[title]]">>
While all citizens of [[Droaam]] serve the [[Daughters of Sora Kell]],
each region is independently governed by a [[warlord]] in the
name of the Daughters, and beneath them, chibs rule local
communities. All citizens are expected to serve their nation
when called upon, and to do whatever is asked of them. In
exchange for loyalty and service, they receive sustenance, shelter,
and pride—driven in part by the knowledge that they are defying
the arrogant nations of the east. The people of Droaam are
encouraged to believe that they are part of something glorious,
something that has yet to be fully formed. “Today may be difficult,
and tomorrow may be harder still. But look what we've done in
one decade, and imagine what we'll achieve in the next!”

Within Droaam, some citizens have concrete, defined jobs—miners, masons, soldiers. Others are part of a general labor pool and may change jobs daily. This is especially true in the great cities, which are constantly expanding. However, Droaam
isn't yet a highly organized bureaucracy, and it's easy to slip
through the cracks if you choose to. Within the major cities,
many citizens pursue their own businesses. Those who appear
to be indolent or who cause trouble are swept up by a press
gang, but people displaying industry and contributing to their
city are largely ignored. Ultimately, Droaam is still a frontier;
the nation is only ten years old, its cities are still being built,
and there's much change yet to come.

While many outsiders may think Droaam's system sounds
oppressive, most of its citizens are sincerely committed to their
new nation. Their lives before the Daughters were brutal and
ugly. Now they have all the [[grist]] that they can eat, a roof and a bed in the local hall, and most of all, a sense of purpose. A [[goblin]] may spend their day in
the mines, but they know they're building a great city, not just
serving the crude whims of a crass [[ogre]] chief. Additionally, many
citizens are truly in awe of the [[Daughters of Sora Kell]], a careful
balance between fear and wonder—the practical fear of [[Sora Maenya]] and her [[Fist|Maenya's Fist]], and the dreams inspired by the words of
[[Sora Katra]]. The people of Droaam know that the Daughters of
Sora Kell are legends, that they possess untold powers, and that
[[Sora Teraza]] knows what the future holds. Most truly believe that
Droaam has a grand destiny, that they'll defy the expectations
of the world, and that together, they'll build something glorious.

!! Language

Droaam has several exotic languages, from the chattering of the
[[Znir Pact]] [[gnoll]]s to the [[medusa]]s that communicate with each
other through the hissing and weaving of their snakes. However, this region was once dominated by the Empire of [[Dhakaan]] and Goblin has long been the common language of trade. Almost every Droaamite speaks, or at least understands, Goblin. Some communities of Gaa'ran [[orc]]s only speak a dialect of the ancient orcish language, which has vanished elsewhere on [[Khorvaire]].

Common is used as a trade language, and in modern times,
many creatures speak it in addition to Goblin. Even before the
arrival of the [[Daughters|Daughters of Sora Kell]], the people of the eastern Barrens
often knew a little Common from interacting with Brelish
settlers and the Westwind Riders. Today, the Daughters are
encouraging the spread of Common, and have even begun
providing regular classes in the language in [[Graywall]] and the
[[Great Crag]], as understanding Common is useful for commerce
and for creatures who could serve as [[Tharashk]] mercenaries.
Ultimately, it's up to the DM to decide if a particular creature
should speak Common—and if so, just how much it speaks. It's
possible that an NPC may only know a few specific phrases
in Common, or that a player character will have to work a little harder to convey their meaning to a creature that understands little of the language.

Literacy is common in the more civilized regions of Droaam.
[[Medusa|medusa]]s, [[tiefling]]s, and [[changeling]]s are generally literate, as is
anyone who works as a merchant or envoy. But at the moment,
much of the general populace is illiterate, in contrast to the [[Five Nations]], where education has long been considered a basic right.

While Droaamites speak Goblin, they aren't "dar" like the
[[Dhakaani|Heirs of Dhakaan]]; they have no interest
in //muut// or //atcha//, and don't use many other words integral to
Dhakaani culture. Notably, they don't use the terms //chaat'oor//
or //gath'dar// to refer to [[human]]s and their kin. Instead, they use
//aravaat//—easterner—to refer to people of the Five Nations, and
more generally, to refer to [[human]]s, [[halfling]]s, [[dwarves|dwarf]], [[elves|elf]],
and similar species. Most Droaamites don't bother to learn the
names of the different nations of [[Khorvaire]]. The West is the
[[Shadow Marches]], home to [[Tharashk]] and the former home of
[[Sora Katra]]. The North is the [[Towering Wood]], former home of
[[Sora Maenya]]. Everything else is the East, and that's all most
people really care to know about it.

!! Cruel World

Mercy and compassion are alien concepts in [[Droaam]], neither
expected nor offered. There's little difference between justice
and revenge, and if you want either, you'll likely have to seize it.
The world is split into predators and prey—and it's always better
to be the predator. Surviving to the end of a day is a victory,
and having shelter and food should be celebrated, not taken
for granted. The people of Droaam are steadfast allies to those
they count as friends, and fight to protect the things they love.
But they care nothing about the fate of strangers: if protecting a
friend means causing suffering to a stranger, so be it.

Bear this in mind when creating characters from Droaam. If
you are cruel to strangers, it's because you believe the world to
be a cruel place. You may pursue noble goals and be the most
reliable friend anyone could wish for, but you were born in a
harsh world, and it's the only life you've known.

This cruel world is changing. The Daughters dangle the
dream of a better world; [[Katra|Sora Katra]] urges Droaamites to think of
all of their comrades as family. Serve the [[Daughters|Daughters of Sora Kell]] and you'll
have food and shelter. But that's all balanced by the fact that if
you challenge them, they will crush you without mercy. And to
most Droaamites, that's a perfectly reasonable arrangement. 

!! Droaam's Economy

Droaam has no established currency; the standard reward for
daily labor is sustenance and shelter. Most Droaamites rely
on barter for goods, skilled labor, or luxuries. However, most
merchants in major cities accept the coins of the East, as
well as two secondary “currencies.” Miners often trade using
slivers, small chunks of precious metal or gemstone shards.
It's also common to barter and gamble with bounty-marked
teeth. The [[Daughters of Sora Kell]] (through the chibs) offer
a bounty on certain dangerous animals, paid by the tooth. A
Goblin symbol identifying the animal it's from is carved on
each tooth, but most merchants won't accept teeth unless they
personally recognize the tooth—so you can't just carve “[[wyvern]]”
on wolf teeth. While the DM could treat bounty-marked teeth as
another form of coinage—”the old goblin offers three [[displacer beast]] teeth, worth 10 silver”—adventurers who kill a dangerous [[monstrosity]] might wonder what the bounty is for their teeth. However, the tooth currency is based on the value the Daughters have placed on each bounty, and not every creature has a golden mouth. Some dangerous creatures might have a high value while others are worthless. The bounty is a way to encourage the elimination of threats, and if a creature doesn't threaten the people of Droaam—or is perhaps even an ally—there won't be a bounty on its teeth.

While bartering can be more time-consuming than dealing in
coins, it's also an opportunity to introduce interesting adventure
hooks. Perhaps a [[goblin]] merchant can't make change for a
platinum piece, but she offers a scrap of vellum in exchange; it
looks like a piece of a map, and she says it came from below the
city. [[Dhakaan]]i relics, odd remnants of the [[daelkyr]] war, an object
pawned by a [[Brelish|Breland]] deserter—any of these could be worth little
to the one offering it, but priceless to those who receive it.

Droaam's main exports—brokered through House [[Tharashk]]—are [[byeshk]] and other ores from the mountains, [[Eberron shard|dragonshard]]s from the plains, and the mercenary services of its people. But it's also the source of unsavory goods that are often illegal in the [[Five Nations]]. [[Poison|poison]] is a simple example, but there are other more exotic substances, such as [[dragon's blood]], [[courage]], and [[blood gin]]. These are just a few examples, and Droaam is home to many unnatural goods that can't be found anywhere else. It's a source of organs and hides from exotic creatures, which may be critical components for creating a [[magic item]]; if you need the eyes of a [[leucrotta]], the [[Graywall]] marketplace may be your best chance. The markets of Droaam also receive the spoils from bandits and odds and ends from deserters, war criminals, and renegades who come from the [[Five Nations]]. All in all, you never know what you might find in a goblin market!

In describing goods from Droaam, consider the vast range of
styles and quality that can be found throughout the region, some
of which are described on the Droaamish Artisanship table below. The
Barrens raiders had no smiths and fought with simple weapons
of wood and stone, or with equipment supplied by [[Aundair]] or
[[Karrnath]]. However, the [[Daughters|Daughters of Sora Kell]] have been working to improve the situation, and [[gnoll]] and [[medusa]] artisans can be found
working in many of the more diverse cities. And the [[Venomous Demesne]] is a mystically advanced society; while they lack the
industrial capacity of House [[Cannith]], they're skilled in producing
magecrafted treasures beyond those of the Five Nations. Most
[[magic item]]s used by Droaamites come from the [[Demesne|Venomous Demesne]].

| !Droaamish Artisanship |<|
| !<<dr d8>> |!Style |
| 1 |''Barrens Primitive.'' The work of [[ogre]]s and [[orc]]s, primitive and with no consistent style. Materials are stone, wood, and bone. |
| 2 |''Znir Gnoll.'' Created by the artisans of the [[Znir Pact]]. Ugly to human eyes, but functional and very reliable. Excellent use of wood and leather; limited metalworking. |
| 3 |[[Cazhaak Draal]]. Made by skilled [[medusa]] artisans. More elegant than Znir or Barrens work, with smooth curves and engraved patterns. Reasonable metalwork, but they also work with stonewood, an exceptionally hard wood from the Stonelands. |
| 4 |[[Maenya's Fist]]. Crafted for the elite soldiers of [[Sora Maenya]]. These include heavy armor and metal weapons. The metalwork is excellent; the style is brutalist in form, intended to intimidate. |
| 5 |[[Venomous Demesne]]. Magecrafted with superior arcane science. Fine metals and ceramics are common, and tools have colorful materials and enamels. Even simple items may have common magical properties. |
| 6 |''Aravaat.'' Objects from the East—generally the [[Five Nations]]. These may be supplies given to Barrens raiders during the [[Last War]], or brought in by traders or brigands in recent years. |
| 7 |''Patchwork.'' Useful things scavenged and pieced together, a common practice among Droaamites—especially [[gnoll]]s. A [[Dhakaan]]i axe head could be on a haft of [[Znir|Znir Pact]] design, or a suit of armor could be made from pieces of three different suits. |
| 8 |''Ancient Dhakaan.'' Recovered from one of the [[Dhakaan]]i ruins of the region. These goods are extremely ancient and may be well worn, but remain functional. |

!! Religion

Droaam is a tapestry of many cultures with diverse beliefs.
The [[minotaur]]s revere a being known as the Horned Prince,
but each clan has its own private name for their patron. The
[[harpies|harpy]] say they sing with the [[Fury]]'s voice, but believe the Fury
was Eberron's cry of pain when she gave birth to the world. The
[[changeling]]s of [[Lost]] believe themselves to be the chosen people of the [[Traveler]]. The [[gnoll]]s of the [[Znir Pact]] refuse to bow to any
god or [[fiend]], while the [[warlock]] lords of the [[Venomous Demesne]]
believe that there is no difference between gods or fiends; there
are only powers that can be bound or bargained with.

Despite this vast diversity, there is broad acknowledgment
of the [[Dark Six]] throughout the region. While each different
subculture has its own favored deities and personal twists,
most people know the basic principles of the ''Cazhaak Creed''—an
interpretation of the [[Sovereigns and Six|Sovereign Host]] codified by the [[medusa]]s
of [[Cazhaak Draal]]. Every multicultural city in Droaam has a host
of shrines and idols tied to the lesser paths, but the true temple
is one of the [[Shadow]], most likely tended by a medusa priest.

The Cazhaak Creed acknowledges that the [[Sovereigns|Sovereign Host]]
exist, but portrays them as tyrants who make demands of
their worshipers while giving nothing. By contrast, the [[Dark Six]] support freedom and fair exchange. Under the creed, the [[Shadow]] is the patron of all those considered “monsters” by the people of the East. [[Aureon]] and the Nine hoarded their power,
whereas the [[Shadow]] gave its children wondrous gifts: the
[[medusa]]'s gaze, the [[troll]]'s regeneration, the [[ogre]]'s strength. As
such, the Shadow is the deity most generally invoked by those
seeking divine guidance or intervention.

Overall, the Cazhaak Creed assigns the same values to the
Dark Six as does the [[Pyrinean Creed]] of the [[Five Nations]], but
it sees these concepts as virtues. The [[Shadow]] is the Sovereign
of ambition and helps you find your path to power, even if
that means stepping on others on the way. The [[Fury]] is the
Sovereign of instinct and if you embrace your emotions, she'll
guide you through them; she's also the Sovereign of revenge,
which is merely the other side of justice's coin. The [[Mockery]]
shows the path to victory in battle, even if that requires you to
embrace treachery or fear; in [[Droaam]], courage and honor take
a back seat to victory and survival. The [[Devourer]] wields the
power of the wilds; he winnows out the weak, but those who
survive his tests grow strong. Priests of the [[Keeper]] perform
funerary rites, which vary by species—from the [[medusa]]s that
petrify their infirm so they never die, to the [[troll]]s and [[ogre]]s that
eat their dead. The priests also act as healers, for disease and
infection are tools of the Keeper, and a priest can remove them
for a price. The Keeper is the Sovereign of wealth and greed,
and his priests are always willing to help a petitioner propose
a bargain. The [[Traveler]] is rarely worshiped directly by any but
the [[changeling]]s, but it is always acknowledged.

All these are echoed in Droaam in many minor ways. For
example, revels are ecstatic celebrations devoted to the [[Fury]],
where participants are encouraged to abandon all restraint and
embrace their emotions. In battle, many Droaamites dedicate
a kill to the [[Keeper]], hoping to earn favor by adding souls to the
Sovereign's hoard; likewise, it's customary to sacrifice part of an
unexpected windfall to the Keeper so he doesn't grow jealous.

Droaamites are very indulgent of the beliefs of others, despite
(or because of) the many different faiths and practices. The [[Znir|Znir Pact]]
[[gnoll]]s despise [[demon]]s, but don't interfere with the practices of
the [[minotaur]]s or [[tiefling]]s. [[Harpies|harpy]] don't argue with [[medusa]]s
over the nature of the [[Fury]]; they know the true answer, and
that's sufficient. Everybody generally honors the [[Shadow]], even
if that means different things to different people. This principle
generally applies to easterners as well. Droaamites think
worshiping the [[Sovereign Host]] is foolish, but aren't upset if you
invoke [[Aureon]], and don't care what [[kalashtar]] or [[elves|elf]] believe.

There's one exception to the religious tolerance of Droaam—the Church of the [[Silver Flame]]. The Church considers it their mission to defend the innocent from supernatural threats, and many of the inhabitants of Droaam are considered
“supernatural threats.” The Silver Flame has led many raids
and quests into the Barrens, and the [[Dark Pack]] won't soon
forget the [[Lycanthropic Purge|Silver Crusade]]. Anyone who openly wears
symbols of the Silver Flame receives, at best, a hostile reaction
from most Droaamites, and it's wise to never wander off alone.

!! Cuisine

Why did it take so long for the people of the Barrens to build
great cities? In part, this was because they couldn't feed the
population of such a city. Many of Droaam's inhabitants are
carnivorous, and those who aren't lacked the discipline for the
large-scale agriculture required to feed large populations like
those found today in [[Graywall]] or the [[Great Crag]]. This simple
issue of food kept the population of the Barrens in check.

While the [[Daughters of Sora Kell]] enforce their rule with
[[Katra's Voice]] and [[Maenya's Fist]], they also buy loyalty with food.
The Daughters of Sora Kell promise that anyone who serves
them will have shelter and sustenance. They have lived up to
their promise, providing a seemingly endless supply of food.
The staple is a ground meat called [[grist]].

For those with slivers or teeth to spare, there are many more
options. Meat is a staple of Droaamish cuisine, and most like it
nearly raw; in fact, many [[ogre]]s and [[troll]]s prefer to eat their
meals live. Some food can be downright dangerous for [[human]]s;
for example, trolls like to chew dried [[carrion crawler]] tentacles,
which have a dramatic numbing effect on most creatures. Some
dishes are served with a tiny living [[ooze]], which Droaamites
believe aids with digestion. Wherever you go, the cuisine reflects
the exotic beasts of the region. Steamed [[chuul]] is much beloved
on the coastlines, while spicy [[displacer beast]] is popular inland.

!! Medicine

The chirugeons of Droaam employ methods that
are more gruesome than those of House [[Jorasco]], but these
techniques are nonetheless effective. Broodworms are a form
of maggot whose secretions help to both anesthetize a patient
and cleanse infected wounds; tiny [[gelatinous cube]]s are also
used as an unusual anesthetic. While it's not yet in wide use,
the [[Daughters|Daughters of Sora Kell]] have been experimenting with //troll's blood//, a
salve with remarkable healing properties that may in fact be
exactly what it proclaims to be. Droaam is a harsh land, and
most of the time when people suffer the answer is “suck it up,”
but the Daughters have pledged to make a better world in days
to come. If they manage to perfect and mass-produce troll's blood, it could revolutionize public health. 

!! Entertainment

The people of the East know of the [[harpy]] as
a monster whose voice can lure innocents to their death. But
a gifted “songbird” can produce a far wider range of effects
than just the irresistible lure. The song of a talented harpy can
inspire hope or despair, instill joy or bring tears to the eyes
of listeners. Harpies call the start of each work shift, drawing
workers to their tasks. Every grist mill has a songbird whose
magical voice soothes weary workers at the end of a shift. As
harpies can project with supernatural volume, songbirds also
call out the hour and serve as town criers, relaying important
news across a community. 

[[Changeling|changeling]] entertainers use their shapeshifting aesthetically,
creating exotic or ever-changing patterns across their skin.
Skindancing is a changeling art that blends physical motion
with transformation, and it can be a remarkable experience.
!! Fashion

Clothes tell a story, and [[Mror|Mror Holds]] [[dwarves|dwarf]] love to tell tales with
them—of clan and family, faith, and personality. As with most
Mror possessions, the quality of clothing comes first. Because
of this, dwarves from lesser families may only have a single set of clothing, but these are durable and well made. Though their
basic outfits may be few, Mror place great stock in accessories,
and a Mror outfit typically has elements that can be reversed,
shifted, or removed. Brooches have important cultural
significance, and can depict family crests, the seal of the ruling
clan, the symbol of a [[Sovereign|Sovereign Host]] whose favor is sought, or even
moods; some brooches mean “leave me alone” or “looking for
company.” Other forms of jewelry—rings, chains, bracelets—are commonly worn by dwarves of both genders; this is an
opportunity to show wealth, but decorative ornaments of iron
are also worn by common folk. The //dultar//—blood blade—is
a dagger worn both as a utilitarian tool and as a statement of
allegiance; each of the ruling clans has a distinct style of dultar.
Any Mror dwarf can immediately identify another dwarf's [[clan|Mror clan]]
from their dultar.

Many Mror clans favor a martial aspect to their attire,
especially in the wake of [[Dol Udar|Mror History]]. However, not everyone
wants to wear heavy steel all day, and the Mror generally use
light alloys and thin layers of metal to craft their armor. Many
Mror wear lightweight decorative armor that evokes the general flavor of a heavier breastplate—though anyone proficient in medium or heavy armor
immediately recognizes the decorative nature of it.

Facial hair is common among the Mror, but styles vary by
clan and family. Some families prefer neatly trimmed beards.
Many clans weave beads into beards, with the design of the
bead invoking the favor of a [[Sovereign|Sovereign Host]] or honoring a [[clan|Mror clan]]. Hair dye is often used as a form of personal expression.

Clans that have embraced the use of [[symbiont]]s—notably
[[Soldorak]], [[Toranath]], and [[Narathun]]—have developed many
exotic fashions over the last century. For such dwarves,
wearing symbiont clothing or accessories is a sign of courage
and power, much as a hunter might wear the hides of animals
they've defeated. Living clothing typically has a texture similar
to leather, though chitin plating or hornlike protrusions are
possible. Patterns or colors may shift to reflect the mood of
the wearer, and a living cloak may ripple or billow of its own
accord. Living clothing is self-cleaning and mending, and
feeds on the excretions (primarily sweat) of the host. Narathun
currently has the finest artisan-breeders working with living
clothing, and styles are constantly evolving.

!! Cuisine

Mror dwarves have exceptional constitutions and are resistant
to poison, and thanks to these traits, they enjoy cuisine that
others might avoid. The dwarves live in high mountains and
subterranean settlements; while some of their meats and
vegetables are familiar to the people of the [[Five Nations]], they
also use a wide variety of mushrooms and moss. Red pudding
is a form of peaceful [[ooze]] raised as livestock and used in a
variety of dishes. Mror stew can sicken creatures with more
delicate stomachs, but it's entirely harmless to any creature
resistant to poison damage, and many [[stout]] [[halfling]]s of the
[[Talenta Plains]] enjoy Mror cuisine.

Alcohol is also a form of poison, and Mror spirits have to be
exceptionally strong for sturdy dwarves to enjoy their mind-altering properties. Mror brewers often use mushrooms to produce alcohol, and also produce mushroom-based beverages with light hallucinogenic effects. The drinks of the [[Five Nations]]
are extremely weak by Mror standards, and some consider
the ability to brew personal supplies to be a basic survival tool
when traveling in foreign lands. And when outsiders visit the
Mror, their hosts are careful to keep these travelers from buying
drinks that could kill them.

!! Religion

Mror talespinners maintain that the [[dwarves|dwarf]] are the original
chosen people of the [[Sovereigns|Sovereign Host]], especially [[Kol Korran]] and
[[Onatar]]. It's a curious coincidence that //kol// is the Dwarvish word
for “commerce,” while //dol// means “war,” and the talespinners
say the [[Traveler]] stole the names of the Sovereigns from the
dwarves during the Exile. The priests of [[Krona Peak]] say that
[[Kol Korran]] came to the hero [[Mroranon]] and promised the
dwarves wealth if they remembered his name and followed his
path, while the talespinners of Doldarunhold swear that the
hero [[Doldarun]] was the son of [[Dol Dorn]] and [[Dol Arrah]]. The
records of the [[Library of Korranberg]] show that [[Zil|Zilargo]] missionaries
were active in the [[Ironroots|Ironroot Mountains]] in the centuries before [[Bal Dulor|Mror History]], and some sages assert that these tales may have been the work
of clever missionaries. Whatever the truth, the Mror already
had shrines to the Sovereigns when young [[Karrn|Karrn ir'Wynarn]] led his
forces to conquer the holds.

While the Mror broadly acknowledge all of the Sovereigns,
[[Kol Korran]] and [[Onatar]] are the most beloved; [[Boldrei]] and
[[Olladra]] are also often invoked. Clan [[Doldarun]], [[Mroranon]], and
[[Soranath]] are especially devout, while [[Droranath]], [[Soldorak]], and
[[Toldorath|Toldorath and Tordannon]] are the most pragmatic. The [[Blood of Vol]] and the [[Dark Six]] have small followings in [[Narathun]].
The [[Tashana Tundra]] [[shifter]]s are divided into three
great nations, the [[Qiku]] tribes of central Tashana; the
coastal [[Saartuk]] people, and the more warlike [[Chuniigi]] in the north. Although intertribal skirmishes and raids
are not uncommon, the elders of all three nations work
hard to maintain the peace of recent generations.

Whereas the [[shifter]]s of [[Khorvaire]] tend to value self-reliance and personal freedom, the [[Qiku]] and [[Saartuk]]
shifters place much more importance on the community.
Allegiance is to the tribe, the family unit, and the nation—in that order. The harshness of life in the Tundra has dictated this be so—rugged individualism in the Tundra is
not advised. Going it alone, to a Tashana shifter, is dangerous, stupid, and spiritually misguided.

Tundra shifters do not struggle against their bestial
nature, but rather embrace it as a sign of their oneness
with all living things. Shifting is a profoundly exhilarating and joyful experience, even when the aim is aggression. Tashanan shifters have a remarkable ability to accept
violence and death as part of the natural order. If it's
necessary to tear an enemy to pieces, a tundra shifter does
so with great passion.

Tundra shifters who choose to explore the wider world
might be doing so at the bequest of the community. Such
braves gather ideas and knowledge before returning to
the tribes, seeking to make the nation stronger. Because
Tashana shifters place a premium on community, such a
character is likely to be fiercely loyal to his companions.
Possessions mean little to shifters aside from their utility. Although they understand the concept of currency, hoarding coins and gems is a strange practice to them.

Shifters from the northern [[Chuniigi]] tribes have a
simpler, more aggressive viewpoint. While the community
concept is still very strong, these are desperate times for the
Chuniigi. A tribe might raid another tribe to supplement its
hunt, and intratribal conflict can pit factions and families
against one another. 

!! Five Things Every Tashana Shifter Knows

# ''The Way of the Brothers:'' A practical code at heart, The [[Way of the Brothers]] is imperative in the harsh lands of the Tundra. This code has only strengthened in recent generations as Tundra shifters have learned the value of cooperation and peaceable relations.
# ''How to Live off the Land:'' Even in unfamiliar climes and surrounds, tundra shifters persevere. All Tundra shifters have high ranks in the Survival skill, which is crucial in their home environment.
# ''Flee the Planar Breaches:'' In the Tundra, [[planar breaches|reality storm]] are particularly wild and unpredictable. Most of them drift over the landscape like small weather fronts. The unnatural sensation of planar leakage within these zones is profoundly painful and upsetting for tundra shifters, who feel a spiritual bond with the land.
# ''The Betrayal of the Southern Shifters:'' Tundra shifters' feelings for their [[martial Riedran cousins|Taskaan Legion]] fall somewhere between loathing and pity, depending on the individual. Most shifters neither know nor care about the particulars of the [[Riedra]]n nation, but they feel their distant relatives who serve as Riedran enforcers have sold their souls to the corrupt [[human]]s. Attempts in the past to "liberate" their brothers from their human handlers have all ended tragically—the Riedran shifter like what they do. To shifters today, they are lost causes, and a tundra shifter might kill a Riedran shifter out of pity as much as anything.
# ''How to Play Music:'' Tashana shifter tribal music is at once an art form, a style of meditation, and a powerful source of magic. All adult shifters craft their first instrument—usually a bone pipe or sealskin drum—as a puberty rite, and this act, along with one's first hunt, signifies passage into adulthood. The Tashanans have developed ingenious collapsible drums made of bone and hide, and virtually every Tundra shifter keeps drums or pipe with her at all times.

!! Tashana Names and Speech

Tundra shifter names reflect the importance that the culture puts on the group or tribe. All names are hyphenated,
with the first word signifying the individual's tribe, and
the second word the individual's name. The second name
is usually one that commemorates a coinciding event on the
day of birth, chosen by the mother or the tribal shaman.
Both names are usually shortened versions of longer words.
Tel-Marq, then, would be Marqussek of the tribe Telaani.
In formal situations, the long-form name is used (Telaani-Marqussek). Shifter infants are usually named at birth.

''Masculine Names:'' Akiaq, Akrillok, Atanek, Biisatowaq,
Chugiaq, Chultin, Dequinii, Ikiaq, Ipitok, Itigiak, Kasqae,
Keeluq, Kut'uk, Makitt, Marqussek, Massaq, Nanuq, Noahtak,
Pakaq, Qaniis, Qigiq, Sinaaq, Taqu, Tok, Tonraq, Umiak.

''Feminine Names:'' Anana, Arnaa, Buniiq, Desna, Esqa,
Iqala, Immu, Issuqa, Iya, Kaya, Kilae, Kimka, Kinaqaa,
Kiramii, Mikii, Miksaqaa, Nanii, Ninaqoja, Paniqa, Piaqii,
Saqari, Sesii, Sikuu, Tiquani, Ululii.

''Tribal Names:'' Agalak , Ahnakik , Annakuk ,
Chikuq, Ekchuaq, Hey, Iglogaq, Illiivaq, Iping, Kakrayak,
Kingudlerq, Kulutiq, Mantok, Massapok, Naartoq, Nanik,
Nukiliq, Nutaak, Oonayak, Palak, Peqartoq, Putyuq,
Saqani, Tuluqarak, Yaqone. 

!!! Phrases

Although all tundra shifters speak Riedra,
remnants of an ancient dialect linger in their idioms
and sayings. 

* "//Banded we live!//" Often used as a good-bye, this saying underscores the emphasis shifter culture puts on the group. It is traditionally spoken in unison at the end of any tribal meeting or gathering.
* "//No tomorrow!//" Used sometimes as a battle cry, this simple phrase is also common as a quiet utterance that a shifter might whisper to herself in times of worry or danger. It captures the Tashanan ideal of not letting distractions or worries about the future interfere with the pressing needs and reality of the moment.
* "//The wolf is always waiting.//" A reminder to stay alert and vigilant at all times. Also used to express remorse or grief in times of crisis or death.
* "//A sister to my brother is my sister, too.//" One of many Tashanan sayings that reveal a deep sense of compassion—a shifter might say this after a hunting kill, or the death of a worthy enemy.
* "//Tear at the throat, and be done.//" Something of a counterpoint to the above, this proverb encourages maximum violence immediately when confronted by danger. It's also muttered when undertaking an unpleasant task.
* "//Qok!//" The all-purpose expletive of the shifters, pronounced "coke." It can be used as a adjective (Harness the qokking dogs!), a noun (What the qok is that?), or a verb (Qok this!).

!! Tashanan Religion

Eschewing technological and industrial advancements,
the majority of Tashana shifters choose instead a path of
simplicity and union with their natural surroundings.
Although much of this choice is strictly a practical matter, it
is also a defining spiritual aspect of the shifters of Tashana.
Where a foreigner might see the Tundra way of life as primitive, the native sees it as pure and spiritually powerful.

The central nations of the [[Qiku]] and the [[Saartuk]]
have enjoyed relative peace for many generations, and
as their communities continue to grow and prosper, the
shifter mind has turned inward to more spiritual matters.
They are no longer driven by a struggle to survive, and
now their shamanistic traditions grow more advanced
with every generation. This advancement is evidenced by
the shifters' sophisticated use of medicinal and magical [[lichens|Tashana lichen paste]] native to the Tundra. 

!! Tashanan Style

!!! Art

Currently in vogue among a small circle of influential collectors in [[Khorvaire]] ([[Zilargo]] in particular),
Tashanan art is surprisingly sophisticated and powerful for such a "primitive" culture. "An unmatched sophistication of simplicity," says [[Morgrave|Morgrave University]] art scholar Mentarion Palinostrum.

Most prized are animal sculptures made of ivory,
whalebone, antler, and stone, often found as ornamental
parts of utilitarian objects. These figurines reveal a highly
developed aesthetic style, with a meticulous exactness of
anatomy and proportion. Tashanan paintings employ
natural oils and pigments with hide canvases, and display
complex techniques that are the envy of many a Khorvairian art student. The popular dreamscape style features dense and surreal landscapes of the natural world with
an overlay of strange shapes, colors and images. 

!!! Architecture

Virtually all Tashana [[shifter]]s were at least semi-nomadic
until only a few generations ago. Now, many tribes of the
[[Qiku]] and [[Saartuk]] nations have established permanent
settlements and a nascent architectural tradition. In the
central plains, sprawling villages built in and among the
strange rock mounds combine stonework and tunneling
with traditional shelters of seal or caribou skins. This
dreamscape style features odd, otherworldly totems and
ornamentations. In the coastal settlements of [[Winterstead]] and [[Whitetooth]], increased trade has resulted in a
riot of improvised architectural styles.

The nomadic and semi-nomadic tribes still employ
collapsible tents of seal or caribou skins, supported by
frames of bone and driftwood. Larger structures typically have raised sleeping platforms and a simple flue to release smoke. It's thought that the [[Chuniigi]] tribes of
the far north maintain several hidden ice fortresses and
storehouses carved directly into glacial formations.

!!! Cuisine

The [[Tundra|Tashana Tundra]] is not the place for cultured cuisine, but in
terms of resourcefulness and ingenuity, Tashanans must
be admired. In coastal and lake areas, the diet consists
primarily of fish, waterfowl, and sea mammals, with some
varieties of harvested seaweed. Inland, meat is provided
by the vast herds of caribou, supplemented by fox, bear,
and the occasional mammoth in the far north. Many
tribes also harvest various types of lichen and algae that
cling to the glacial rocks of the plains. Tashanans are
renowned for finding utility in every possible part of the
kill—examples are foxsnout soup and the infamous [[Chuniigi]] blubbercake. Some larger southern tribes employ a
limited system of agriculture for winter grains. 

!!! Fashion

Materials and clothing among the Tashanans are almost
entirely animal-based. Men and women both are likely
to wear trousers and parkas of polar bear hide, with great
fur-lined hoods. Boots are made of caribou or seal skin.
Dressing in layers is the rule, since the weather of the
Tundra is famously unpredictable. The hareskin socks
and gloves of the Tashana are greatly prized for their
warmth and comfort. Clothing is typically stitched with
narwhal or caribou sinew. 
Some [[magic item]]s bear curses that bedevil their users, sometimes long after a user has stopped using an item. Most methods of identifying items fail to reveal such a curse, although lore might hint at it. Attunement to a cursed item can't be ended voluntarily unless the curse is broken first, such as with the [[remove curse]] spell.

<<list-links-article "[tag{!!title}sort[title]]">>
''Capital:'' [[Metrol]] (destroyed) <br/>
''Previous Hallmarks:'' Art, artifice, jewelry, music, oratory, philosophy <br/>
''Current Hallmarks:'' Destruction, ruins 

Destroyed at the end of the [[Last War]], Cyre now exists
only in the hearts of the refugees scattered across
Khorvaire.

Before the war, Cyre was the seat of the kings and
queens of [[Galifar]]. The wealth of the kingdom flowed
through Cyre, and it was a nexus for commerce and
culture. By tradition, Cyre's Princess [[Mishann ir'Wynarn]] had the
rightful claim to the throne of Galifar. Cyrans take pride
that they alone were in the right in the [[Last War]], but
they unquestionably lost more to the war than any other
nation. As a Cyran, you stand on the moral high ground,
but that may offer little comfort.

Cyrans like to say that their culture represented the
best that Galifar had to offer, which is to say a little bit of
everything. Cyrans value diversity and versatility, both
in talents and thought. Cyre couldn't match [[Karrnath]] in
martial discipline or [[Aundair]] in the arcane arts, but the
flexibility of its forces reflected the nation's ideals.

Although the [[Sovereign Host]] was the dominant faith
of Cyre, the [[Silver Flame]] had a significant following.
Many survivors question their faith in the wake of the
[[Mourning]], but some believe that their anguish at the
loss of their homeland is a divine trial, prompting them
to cling to their faith more than ever.

Queen [[Dannel ir'Wynarn]] was in [[Metrol]] on the Day
of Mourning and is presumed dead. Her son, Prince
[[Oargev ir'Wynarn]], holds court in [[New Cyre]], a massive
refugee camp set up in [[Breland]]. Some refugees support
Oargev and the dream of a restored Cyre, while others
prefer to focus on the future instead of trying to reclaim
the past. As a Cyran, you should decide whether you
hold tight to your national identity, or instead consider
yourself to be an expatriate without a nation. 

!! Interesting Things About Cyre (the Mournland)

* Cyre was the ancestral seat of the [[dragonmarked|dragonmarked house]] House [[Cannith]], the house of [[Making]]. The house maintained arcane workshops across Cyre. Who knows what treasures wait in Cannith vaults for those who brave the dangers of the Mournland?
* While not as flamboyant as [[Aundair]]ians, Cyran fashions involved bright colors and [[glamerweave]]. Some Cyrans have made a point of continuing this custom. Others wear clothing cut in the Cyran style, but entirely in black; this has become known as Mourning wear.
* Stories say communities of [[warforged]] live in the [[Mournland]], including the insurgent called the [[Lord of Blades]]. 

!! Cyran Characters

When creating a character from Cyre, consider the following questions: 

* ''What Have You Lost?'' Did you lose wealth or status? Did you have family or loved ones killed in the Mourning? Did you lose something you could one day recover from the [[Mournland]]—arcane research, an heirloom artifact, or a precious family relic? Consider the impact the disaster has on your background. As a Cyran noble or soldier, your estates have been lost and your army scattered, but you still have the respect of your comrades or peers.
* ''What Do You Hold Onto?'' Do you have a trinket that embodies Cyre for you? Is your wand or weapon an heirloom of your family? As an entertainer or guild artisan, do you preserve a particular Cyran tradition?
* ''What Drives You?'' Are you determined to solve the mystery of the [[Mourning]]? Do you want to help other refugees, or are you concerned only with your personal survival? Is there something you want to recover from the [[Mournland]], or would you prefer to never set foot in Cyre again? Do you hold a grudge against the nations that fought against Cyre in the war, or are you solely concerned with the future? 

!! Cities and Sites

Cyre was devastated by the Mourning. Its ruins have
become grim reminders of the folly of war. Unknown
threats both magical and monstrous haunt the Mournland. 

<<list-links "[tag{!!title}category[location]sort[title]]">>

!! Aftermath of the Last War

No nation won the [[Last War]], but Cyre unquestionably
lost it. Other nations are recovering from the conflict, but Cyre is gone. The lands not destroyed in the [[Mourning]] were lost decades earlier to [[Darguun]] and [[Valenar]].
Cyrans who survived the war must now carve out a new
destiny in the lands of their enemies or in foreign nations beyond what was once the Kingdom of [[Galifar]].

In creating a Cyran character, first determine how you
survived the Mourning. Were you outside Cyre when it
occurred, or did you somehow escape the destruction?
Where did you take shelter? [[Breland]] has taken in refugees and created refugee camps. [[Thrane]] also accepted refugees but has worked to disperse and integrate them
into the general population. Are you grateful or bitter?
Do you have family or friends in refugee camps, or are
you a lone survivor? Other Cyrans sought opportunities
on the frontiers, settling in the jungles of [[Q'barra]] or
seeking a new life in the distant land of [[Xen'drik]].

Many Cyran survivors are soldiers, veterans stationed
on the front lines when the Mourning occurred. If multiple members of your party are Cyrans, you might have
served together during the Last War. Because Cyrans
are so widely dispersed, you can encounter former comrades or friends anywhere in [[Khorvaire]].

Since Cyrans lost their lands, the distinctions between peasant and aristocrat have become moot. Even with a criminal background, you might have been a viscount in Cyre; your background reflects your current standing and the resources you can call upon in
the present. 
While [[Cyre]] now exists only as an idea, having been destroyed in the [[Mourning]], a few years ago it was a powerful nation, and Cyran embassies still
exist in the great courts of [[Khorvaire]]. Some nations
have expelled the Cyran ambassadors—what use is an ambassador without a country? However, [[Breland]] has taken in a large number of Cyran refugees, and
has even allowed the creation of the city of [[New Cyre]]
on its northwestern border. As a result, [[Sharn]] has
allowed the embassy of Cyre to remain open.

The primary function of the Cyran embassy is
to coordinate refugee activities and provide a point
of contact for [[New Cyre]]. The few surviving Cyran
nobles realize the precariousness of their situation.
They have lost the wealth and resources of their
nation, along with the bulk of their military power.
New Cyre only exists because of the generosity of
King [[Boranel|Boranel ir'Wynarn]]—and if the Cyrans have nothing to
offer or are perceived as a threat, that generosity
could eventually fade. The embassy staff spends
much of its time among the refugees in [[Lower Tavick's Landing]], recording the identities and skills of Cyran refugees and trying to find positions for
them within the city.  

Refugees and people with strong family ties to
[[Cyre]] are placed under a lot of pressure to help restore
the old kingdom, or at least to help it continue to
exist as a ghost. Refugees are expected to donate up to 20%
of their income to the embassy toward the recreation
of Cyre. This includes adventurers, although the
ambassador has no way to measure the income of
an adventurer or real power to punish them, save by
laying shame on their family. Cyran adventurers are
frequently asked to perform services on behalf of
New Cyre. This typically involves recovering treasures from the [[Mournland]], searching for clues about the origin of the Day of [[Mourning]], or assisting other
powerful people with whom the Cyrans are trying
to curry favor.

However, there are those among the surviving
nobles who feel that their proud nation should not
exist as a memory or as a gift from [[Breland]]. They plan
to seize new land, whether from Breland, [[Darguun]],
[[Valenar]] or some other nation entirely. This would
require powerful magic artifacts—perhaps ancient
weapons hidden in [[Xen'drik]]—or dangerous dealings
with the [[Lords of Dust]], the [[Inspired]], or the Order of
the [[Emerald Claw]]. A Cyran character may be drawn
into these plots knowingly or unwittingly—and they
must decide just how much they are willing to risk for
their country.

The Cyran ambassador to Sharn is Lord ''Jairan ir’Dain'' (human). Jairan still plays the role of the proud noble, attending social functions in his fine clothes, but he lost his fortune on the Day of [[Mourning]] and his [[glamerweave]] doublets are becoming increasingly threadbare. Jairan is an optimist, and he believes that somehow if he keeps doing his job [[Cyre]] will be restored—that [[New Cyre]] can peacefully grow, and perhaps reclaim
the blasted [[Mournland]].

The Cyran spymaster ''Tyrala'' (human) is Jairan’s mirror image. She is obsessed with the survival of Cyre and will use any means necessary to achieve that goal, however questionable they may be. Jairan may ask a Cyran character to perform an altruistic deed; Tyrala’s requests are often morally ambiguous, though they may have
more concrete results. Tyrala firmly believes that
one of the other nations was behind the destruction
of Cyre, and she is determined to find out who did it
and how, and to take a bitter vengeance. She uses this
as a lever against a Cyran character—doesn’t he want
revenge for the hundreds of thousands of his people
who were killed? Doesn’t he want to prevent this
from ever happening again? The embassy can draw
on the discretionary funds held in the [[Kundarak Bank|Kundarak Bank of Sharn]], but it has little to offer—its primary currency
is loyalty to the lost nation.

There are a few other notable Cyran NPCs scattered throughout the city. 

* ''Doras'' is a village reeve who was visiting a cousin in [[Smoky Towers]] on the Day of Mourning. Today he remains in Smoky Towers as an insurgent, urging people with Cyran blood to come to the aid of their ancestral homeland. The [[Guardians of the Gate]] and the [[Citadel|King's Citadel]] both keep a close watch on Doras, but he has yet to be arrested. 
* ''Cala Narain'' was a captain in the Queen’s Forward Blades, a scouting unit. Currently, she is the highest-ranking Cyran military officer in Sharn, and she has been trying to organize the scattered soldiers among the many refugees.
* ''Holt'' is a [[warforged]] bodyguard who usually travels with Lord ir’Dain or Tyrala when they leave the embassy. 
The Cyre River in [[Khorvaire]] flows from [[Lake Cyre]] into [[Scions Sound]]. It forms part of the border between the [[Mournland]] and [[Karrnath]]/[[Talenta Plains]].
There's a rhythm to Daanvi, a subtle metronome keeping perfect time.
If you act without thinking, you unconsciously move to the beat. The streets may be crowded, but everyone walks at the same pace, every foot striking the ground at the same moment. It takes a conscious effort to break this rhythm, change the pattern, stand out from the crowd. Your instincts push you to fall in line, match the pattern, be part of the great machine.

This is Daanvi, the Perfect Order. It represents the triumph
of law over lawlessness, of discipline over chaos. From the
perfectly structured insect hives to the [[inevitable]] tribunals that
judge every mortal action, this is a triumph of order. On the one
hand, Daanvi shows how structure and discipline can create
enduring systems, and how laws are the backbone of prosperous
civilization. On the other hand, it can crush individuality and
innovation. It shows that laws can serve justice, but they can
also pose an endless series of obstacles, or even be the tools
of tyrants. Daanvi encompasses all of these paths. It shows the
benefits of law and order—and the risks of taking them too far.

!! Universal Properties

The impulse toward order affects all creatures in Daanvi. It's
impossible to knowingly lie while in Daanvi, and the effects
of random chance are reduced. In Daanvi, all things are
inherently reliable—remarkable fortune and bad luck are
equally rare.

* ''//Plane of Truth//''. A creature can't tell a deliberate lie. It can avoid answering questions, or be evasive in its answers, as long as it remains within the boundaries of the truth.
* //''Impeded Illusion.''// Magical [[illusion]]s are attenuated. The duration of illusion spells is halved.
* //''The Eyes of the Law.''// The range and duration of [[divination]] spells are doubled.
* //''No Chance.''// Randomness is diminished. Unlikely events become nearly impossible. Likely events become nearly certain. Once per scene, you can forgo rolling dice on an action and get a low-[[impact]] [[partial success]].
* //''Flowing Time. ''//For every 10 minutes that pass in Daanvi, only 1 minute passes in the Material Plane. So if a creature spends 10 days arguing a case before a Daanvian court, less than a day has passed on Eberron.

!! Denizens

All denizens of Daanvi either embody the concept of law and
order or exist to be bound by it. Most [[modron]]s, [[angel]]s, and
[[devil]]s perform administrative tasks as they serve as cogs in the
grand machinery of their plane. Nearly all of Daanvi's inhabitants
follow an unvarying daily cycle, each denizen limited by its jurisdiction. Some authorities can move freely and enforce laws in multiple layers. But a [[deva]] can't take action in the [[Iron Ward]], even if it feels that an adventurer is suffering injustice, because that ward is under the jurisdiction of the local devils.

The appearance of angels and devils of Daanvi is similar to [[modron]]s and [[inevitable]]s. They might have metallic skin or wings, or even look like living [[construct]]s. These immortals are creatures of absolute law and can't be
compelled to break it or act against their nature or instructions.

Daanvi doesn't have a significant population of mortals, though
there are other [[immortal]]s in Daanvi beyond those explored
by this section, each one representing a facet of the plane; for
example, ant-like formians inhabit numerous layers of their own.

!!! Modrons and Inevitables

[[Modron|modron]]s, Daanvi's most common inhabitants, are embodiments
of pure law, with no bias toward justice or oppression. They do
their assigned tasks and obey every law; nothing more, nothing
less. Monodrones can be found in many layers performing the
most basic tasks. More sophisticated modrons perform endless
administrative tasks and enforce basic laws.

Many modrons and [[inevitable]]s serve specific
tasks within the plane. In particular, an entity known as the
Kolyarut resides beneath the [[Hall of Justice]], with absolute
authority over enforcing the law. The Kolyarut acts through a
legion of host bodies, one of which serves on every [[inevitable]]
tribunal; these beings are also called Kolyarut, though they're
only representatives of the greater force.

!!! Angels

The [[angel]]s of Daanvi represent law in the service of justice and
the greater good. These immortals enforce the laws, but also
do their best to act fairly and to see that justice is done. While
angels have duties to attend to and rarely have time to simply
chat with random mortals, they're typically kind and helpful
when they do have time. They believe with all their being that
law and civilization are the most vital virtues of all, and that the
law can't be set aside for any reason.

[[Deva|deva]]s and other angels of similar power are local authorities.
They can be found as ministers, magistrates, and sages. A deva
may be appointed to serve as a counselor for mortals called
before an [[inevitable]] tribunal. The devas at the [[Infinite Archive]]
serve as sages; [[modron]]s file and record, but the devas study the
data and reflect on it. Meanwhile, powerful [[planetar]]s serve as
high ministers and guardians of important gates and sites.
[[Solar|solar]]s dwell in the [[Panopticon]]. There are thirteen solars,
each assigned to monitor and administer justice within one
of [[Eberron]]'s [[plane]]s (though no solar holds dominion over the
Material Plane). However, there are a host of restrictions on
how and when they may act. Typically, a solar must be invoked
by a legitimate authority within the plane in question—so while
[[Hazariel]], the Solar of [[Syrania]], is usually called in to cast down
radiant idols, [[Azazar]], the Solar of [[Xoriat]], has never yet been
called on by that plane. Until called, they watch; while in the Panopticon, solars can observe anything that occurs in the plane of their dominion. Shortly before the shift of the Dream of the Age that produced [[il-Lashtavar]], [[Tyrala]], the Solar of [[Dal Quor]], went to investigate the actions that resulted in Dal Quor being
thrown off its planar axis; she hasn't been seen since.

!!! Devils

The [[devil]]s of Daanvi represent law in the service of tyranny
and personal gain. In essence, they depict the danger of laws
and how order can become an oppressive force. While the
[[angel]]s and devils of Daanvi despise one another, the strict laws
determining jurisdiction mean that they rarely come into contact
and almost never engage in combat—though it's common for
a devil and an angel to be found in opposite positions arguing
a case before an inevitable tribunal in the [[Hall of Justice]].

Most often, devils are found in layers such as the [[Iron Ward]], where they're cruel enforcers and tyrants. They can be encountered as guardians and sentinels, though they're invariably too harsh when it comes to performing their duties.
Other devils seek to exploit loopholes and use the law to their
advantage, extorting adventurers or otherwise using the law as
a weapon. [[Orthon|orthon]]s and [[erinyes]] apprehend lawbreakers, while [[pit fiend]]s serve as executioners in the [[Hall of Justice]].

!!! Subjects

Every tyrant needs people to oppress, while every utopian
society needs people to enjoy its just laws. The countless
[[manifestation]]s of Daanvi, called subjects, serve this purpose.
They're humanoid, but their shape is indistinct. They provide
the //impression// of a person—someone completely normal and
unremarkable, often of the same species as the viewer—but no
matter how hard anyone tries, it's impossible to actually focus
on them. Conversations with subjects are surface-level at best,
with no distinct personality or goals. Subjects pose no threat
in combat, and are dispersed if they suffer any damage, only
to reform within a few minutes.

!! Layers

Daanvi is home to hundreds of [[layer]]s, and each is a metaphor
for a particular aspect of order or civilization. Time is consistent
across all layers, though in some, denizens work at all hours,
while in others, there are strict regulations about what times
certain activities are allowed. Daanvi has its own calendar, but
denizens can easily translate it to the [[standard calendar|Khorvaire calendar]] of
Galifar (or any other system) when dealing with visiting mortals.

Traveling to Daanvi using [[plane shift]] or similar abilities takes
you to the [[Prime Gate]]. The portals between layers are clearly
labeled and easily found, with angelic guides happy to provide
assistance. Lesser portals are guarded by [[modron]]s, while
major portals may be maintained by a [[horned devil]] or [[planetar]].
Travel passes can be obtained at the Prime Gate, though
violating local ordinances can result in a revoked travel pass.

While some rules—such as the system of gateways and travel
passes—are universal, every layer has its own distinct laws.
Often these are typical—no theft, no assault except in selfdefense. However, layers may have unusual ordinances—no
spellcasting [[illusion]] magic after noon. The scope of laws,
punishment, and enforcement vary considerably based on the
oppressiveness of the layer; is it generally just (administered by
[[angel]]s), even-handed ([[modron]]s), or oppressive ([[devil]]s)? In
gentler layers, lawbreakers receive an instructive warning from
an angel; those in harsher layers aren't so lucky. In some cases,
guardians administer an immediate punishment, as discussed below
in the “Daanvian Judgment” section. More serious offenders
may be taken to the [[Hall of Justice]] to face an [[inevitable]] tribunal.

Some of Daanvi's most noteworthy layers are described
below; other layers each express some form of order of
civilization, though most are of little interest to adventurers.
There are examples of utopian governance, mob justice, and
countless other examples of law at work. The Perfect Grange
is a vast, precisely maintained farm, displaying the virtues of
agricultural discipline. Hive 43 is a formian settlement where
immortal ant-like spirits care for their queen; if that doesn't
strike your fancy, maybe one of the other 42 hives will!

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Daanvian Judgment

What happens when characters break the laws of Daanvi? In
theory, there's an incredibly complex Code of Justice that the
Kolyarut uses to determine the ideal punishment. In practice,
the punishment should fit the crime, but it depends on the
district where the judgment takes place. An [[angel]] upholds the
law but seeks to ensure that the punishment truly is fair; a [[devil]]
may use the threat of a disproportionate punishment (entirely
legitimate by the Code of Justice, of course) to drive extortion.

Physical punishments are possible, from beating to
maiming (such as the loss of an eye or tongue) to execution.
Such punishments are most common in oppressive layers.
Imprisonment is rare, but possible, either in a local cell or the
[[Inescapable Prison]]. Because of the flowing time of Daanvi, a
hundred years in a Daanvi cell is only ten years on Eberron.

Fines are common, not because Daanvi needs revenue,
but because it's easily adjusted to the individual. Fines like
gold or property can be taken immediately, or future earnings
might be garnished; perhaps half of all gold the character
acquires immediately vanishes until the fine has been paid.

Another common punishment is the //judgment tattoo//, a
complex marking placed across the victim's face that can't
be removed by any power short of a [[wish]] spell. Any creature
that speaks a language can magically understand its meaning,
conveyed in a simple concept like MURDERER or THIEF.

Other magical punishments could be imposed. The offender
could experience the effects of [[bestow curse]] for a year or a
lifetime. A liar could be unable to tell a lie for a year (though
they can be evasive in their answers). A convict could be
stripped of a particular talent, taking disadvantage on a specific
skill check during their the sentence. They could be stripped of
fame, and no one will give the victim credit for positive actions,
though they can still receive blame for misdeeds. There are
few limits on what an inevitable tribunal can do, and undoing
such a judgment requires the power of a [[wish]].

!! Planar Manifestations

Here are a few ways Daanvi can affect the Material Plane.

!!! Manifest Zones

[[Manifest zones|manifest zone]] tied to Daanvi—which are relatively uncommon—often share one or more of the plane's universal properties.
Zones with the //Plane of Truth// property are often used as
makeshift courtrooms by local communities, and a number of
the largest courthouses in the [[Five Nations]] are built in such zones. Intelligence agencies are always searching for zones
with the //Eyes of the Law// property. Other zones simply reflect
the unnatural order of the plane—crops innately grow in perfect
rows, or residents find they are more naturally inclined to follow
orders. Unsubstantiated legends tell of [[modron]]s appearing in
manifest zones, attempting to “repair” any local buildings and
redesigning them to match the architecture of the Perfect Order.

!!! Coterminous and Remote

Daanvi has coterminous and remote periods, but unlike those
of other planes, these have no obvious effects. Some sages
believe it may impact the performance of certain rituals or the
creation of [[eldritch machine]]s, and others try to link the rise of
major civilizations to coterminous periods, but any supporting
examples could be entirely coincidental. Daanvi is noteworthy
for its exceptionally long cycle. Traditionally, when Daanvi
becomes coterminous, it remains so for an entire century; one
hundred years after that, it becomes remote for a century.

!!! Daanvian Artifacts

Daanvi does two things remarkably well: watch people and
punish them. Adventurers could come into possession of an
exceptional [[crystal ball]] that's been stolen from the [[Panopticon]],
or a set of [[dimensional shackles]] lost by an [[orthon]] bounty
hunter. Another way that people on the Material Plane can
interact with Daanvi is through an //unbreakable contract//. In
the [[Hall of Justice]], any two creatures can negotiate a contract
before a Kolyarut. The terms are inscribed on an enchanted
sheet of gold (worth 500 crowns) and bound to an [[inevitable]], which
acts to enforce the contract. On [[Eberron]], a powerful conjurer
could use [[planar ally]] or a similar spell to summon a Kolyarut to
set a contract (though they must provide the gold).

!! Daanvian Stories

Daanvi rarely intervenes in daily life, and people don't often
think of it due to its lack of dramatic coterminous and remote
cycles. Except for those who live near manifest zones, it
doesn't intrude on people's lives. The main way Daanvi impacts
adventures is if the party needs to get something from the plane
itself—they might need knowledge contained in the [[Infinite Archive]], or to know something that can only be seen from the
[[Panopticon]]. However, they'll have to have a solid case to get
past the [[Prime Gate]]... or be prepared to bribe a [[devil]].

//''The Wynarn Report.''// After an ambush gone wrong, the
adventurers find themselves in possession of a file stolen from
the [[Infinite Archive]]—an indestructible journal containing deep
and dangerous knowledge about someone very important. A
king? The baron of a [[dragonmarked house]]? This could be
ruinous if it falls into the wrong hands, and it's possible that the
Archive will send someone—or something—to recover it. Since
it can't be destroyed, what will they do with it?

//''The Trial.''// After an adventuring mishap on another plane—perhaps in the [[Immeasurable Market]], as [[Syrania]] is most likely to
invoke Daanvi's justice—the adventurers are collected by a [[solar]]
and must account for their actions before an [[inevitable]] tribunal.

//''The Convict.''// A longtime ally of the adventurers always
wears a mask. During a battle, the mask is knocked aside,
revealing a //judgment tattoo// that signifies LIAR. Is there a
reasonable explanation for this?

//''The Contract.''// The adventurers are negotiating a contract
they don't intend to uphold, but the other party has a surprise;
using a scroll of [[planar ally]], a Kolyarut [[inevitable]] is called to
establish an unbreakable contract. Can the adventurers find a
way around this? Will they accept the contract's terms, or face
the wrath of the inevitable and judgment in Daanvi?
Formed by monstrous immigrants from [[Droaam]], Daask
has been building its power in the [[Khyber's Gate]] and
[[Malleon's Gate]] districts of [[Sharn]] for the last decade. It
is most infamous for its monstrous enforcers, but the organization also draws members from the destitute populace of Sharn—largely [[goblin]]s and [[shifter]]s, but also [[human]]s, [[dwarves|dwarf]], and any other [[humanoid]] who feels that
the current system has failed them. Daask makes its
money through acts of violence, from mugging to armed
robbery to outright pillaging. The group has diversified
in recent years, building an extortion racket—threatening violence if tribute isn't paid—and entering into the drug trade, selling both [[dreamlily]] and a mysterious substance called [[dragon's blood]].

From the outside, Daask appears to be interested
solely in fomenting violence and chaos. The monstrous
nature of its members reinforces this impression; most
people consider the members of Daask to be savage
beasts. The truth is more complicated. The [[Droaam]]ites
who make up the core of Daask aren't merely criminals;
they are elite soldiers of Droaam working for [[Sora Katra]], and part of an operation that is taking root in larger cities across [[Khorvaire]]. The seemingly random attacks
by Daask are part of a larger plan that, if it succeeds,
will eventually give Sora Katra a foothold in the heart of
Khorvaire.

Over the last two years, the Daask cell in [[Sharn]]
has been waging a slowly escalating war against the
holdings of the [[Boromar Clan]]. The Boromars were surprised by the violence of these attacks and have suffered significant losses. Daask prefers guerrilla tactics, using
only as many combatants as necessary to get a job done,
never staying in one place too long, and quickly retreating back to their turf. Though the Boromars still control much of criminal activity in the middle and upper parts
of Sharn, Daask is gaining ground in the [[lower level|lower ward]] of
the city and controls crime in the [[Cogs]]. 

!! Daask Operations

Violence and intimidation are Daask's most used tools. Rather than using bribery, Daask manipulates the [[Sharn Watch]] through displays of force and brutal reprisals against officers who dare to stand in the way. Coupled with the fact that Daask primarily targets businesses with ties to the [[Boromars|Boromar Clan]], this means that many of the Watch officers of the [[lower ward]]s will step aside and allow a Daask raid to run its course.

As Daask has seized territory from the [[Boromar Clan]], it has also begun taking over a few of the clan's traditional businesses. In addition to [[dreamlily]], Daask sells a
highly addictive drug called [[dragon's blood]]. Daask has another, perhaps surprising area of operation: religion. The organization has brought priests of
the [[Dark Six]] to [[Sharn]] and has restored a ruined [[temple|Temple of the Six]]
to the Dark Six in [[Khyber's Gate]]. Followers of the Dark Six have few other opportunities to practice their faith, and providing this new facility for them has made many allies for Daask across the city. 

!! Daask NPCs

Daask's lower ranks are made up of [[goblinoid]]s, [[human]]s,
[[shifter]]s, and other [[humanoid]]s recruited from the population of [[Sharn]]. The [[Droaam]]ish soldiers that make up the core of the organization include [[changeling]]s,
[[gnoll]]s, [[harpies|harpy]], [[ogre]]s, [[minotaur]]s, [[medusa]]s, [[troll]]s, and
other monstrous beings. [[Basilisk|basilisk]]s, [[cockatrice]]s, [[death dog]]s, [[displacer beast]]s, and similar monsters are kept by Daask, though these creatures are usually used only within the [[Cogs]].

Some of Daask's most important members are these
individuals:

* [[Sora Katra]] is the ultimate leader of Daask, but as one of the [[Daughters of Sora Kell]], she remains in [[Droaam]]. The hag stays in contact with all of her main subordinates by magic and keeps a detailed ledger of the group's activities.
* [[Cavallah]] is a disciplined female [[oni]] and the current leader of the Daask cell in [[Sharn]]. She is the mastermind of the organization's machinations against the [[Boromar Clan]], a scholar obsessed with studying Sharn's manifest zone, and a devoted servant of [[Sora Katra]]. The oni wears a [[hag eye]] that enables Sora Katra to both see and hear what occurs in her presence.
* [[Harash]], a male [[medusa]], is Cavallah's right hand. He is a specialist in diplomacy and intimidation whom Cavallah trusts to monitor the members of Daask and maintain morale.
* [[Ash]] is a female [[human]] priest of the [[Shadow]]. As the most powerful and beloved of Daask's priests, she runs the [[Temple of the Six]]. Some worry that Ash plans to challenge Cavallah for leadership, which could cause a rift in the organization's membership.
* The [[gnoll]] [[Keshta]] commands a small unit of elite [[gnoll]] commandos. Disciplined and ruthless, these soldiers are often called upon to carry out retaliatory strikes against those who defy Daask.
* [[Zaeran]], an [[elf]] [[werewolf|lycanthrope]], is a recent arrival to [[Sharn]]. He's one of the sons of the [[Droaam]]ish warlord [[Zaeurl]]. Zaeran has come to the city with a small group of wererats and werewolves, and has an agenda known only to himself and Sora Katra. 

!!! Daask Contacts

| !<<dr d6>> |!Contact |
| 1 |[[Whyhyr]] ([[gnoll]]), a talented tracker, loves a good hunt and finding people who don't want to be found. |
| 2 |[[Ralscar Shal]] ([[goblin]]) is a fence and information broker, who is happy to be paid in gold or secrets. |
| 3 |[[Kar Bloodhorn]] ([[minotaur]]) is an enforcer who leads raiding parties in [[Callestan]]. Kai is rough and loud but well liked in the organization. |
| 4 |[[Snopli]] ([[kobold]]) is a [[sorcerer]] with talent in fire magic, who specializes in arson and assault. |
| 5 |[[Cask]] ([[changeling]]), an [[artificer]] and [[alchemist]], supplies Daask with drugs and explosives and likes devising new concoctions and finding people to test them on. |
| 6 |[[Teller]] ([[human]]) is one of the few humans with a position of influence in Daask. A grifter, Teller serves as a spy in the upper levels of the city where monsters aren't able to move around freely. |

!! Cog Hubs

Daask members congregate in safe houses that are hard to find and easy to defend or escape from. The most popular gathering location is a Cog hub. The dark, twisting halls of these underworld hot spots are familiar to
Daask members and confusing to their enemies. A Cog
hub's tight passages have plenty of choke points, forcing
one-on-one confrontations in which Daask's powerful
monsters often have the advantage. Daask also uses
Cog hubs to stash bodies, drugs, or prisoners.

Trying to find a Daask hub in the Cogs is an adventure
in itself. Most members are understandably tight-lipped
about the location of their meeting and hiding places.
Once the characters know a hub's location, they still
must navigate the mazelike Cogs to find the place. 

The table below offers reasons why your characters might need to visit such a location. In addition, the characters could meet with a Daask patron in a Cog hub.

| !<<dr d10>> |!Cog Hub Adventure Goal |
| 1 |Obtain samples of [[dragon's blood]] hidden in the Cog hub. |
| 2 |Infiltrate a Daask meeting to discover the next [[Boromar Clan]] holding they plan to target. |
| 3 |Capture a Daask [[worg]] and replace it with a worg loyal to the [[Boromar Clan]]. |
| 4 |Sniff out a traitor among Daask lieutenants. |
| 5 |Escape the Cog hub after being captured by Daask forces. |
| 6 |Kick out squatters to get the Cog hub ready to serve as a Daask safe house. |
| 7 |Assault Daask members meeting in the Cog hub to disrupt the organization. |
| 8 |Defend a Daask Cog hub from a [[Boromar Clan]] attack. |
| 9 |Rescue an injured Daask soldier hidden inside a Cog hub that has been taken over by the [[Boromar Clan]]. |
| 10 |Place a lethal trap in a Cog hub, to be triggered the next time Daask forces enter the place. |

!! Daask Villains

If Daask villains want something, they take it, and they destroy anything that gets in their way. Though some members of the organization are brutes, many are more cunning than they appear. Often what seems to be random violence might be motivated by something other than greed and cruelty.

Examples of Daask villains appear on the table below. 

| !<<dr d6>> |!Daask Villain |
| 1 |Several harpies travel to the [[upper ward]]s and use their luring songs to make rich people fall to their deaths. The harpies pick the corpses for valuables. |
| 2 |A pack of [[gnoll]]s rampages through the [[lower ward]]s, killing any [[halfling]]s they come across. The gnolls take the halflings' ears as trophies. |
| 3 |A [[shifter]] priest of the [[Devourer]] wants to crash [[Skyway]] by performing a ritual to create a cataclysmic storm. Sacrifices to the Devourer fuels the ritual. |
| 4 |A [[changeling]] agent of Daask seeks to frame the [[Tyrants]] for attacks on the [[Boromar Clan]], driving a wedge between the two organizations. |
| 5 |A [[wererat|lycanthrope]] priest of the [[Mockery]] starts a cult in [[Lower Dura]], teaching its followers the arts of assassination. |
| 6 |A [[gargoyle]] sharpshooter continually finds new vantage points in the upper wards from where it can assassinate targets in the middle and lower wards. |

!! Daask Campaign Themes

On the surface, Daask appear to be nothing more complicated than a gang of violent monsters wreaking havoc in the worst parts of the city. If you want, this can be the only role they play in a campaign: a ready source of sudden violence. Low-level characters might work with the [[Sharn Watch]] or the [[Boromar Clan]] to curtail Daask muggings and raid [[dreamlily]] houses. This crusade against Daask will escalate as the adventurers become more powerful; Daask will unleash ever more powerful monsters, and its forces might start targeting the adventurer's allies and loved ones. Those attacks won't
end until the adventurers delve deep into the [[Cogs]] and
defeat [[Cavallah]] herself.

Another option is to delve deeper into the motives of
Daask, to explore the idea that these monsters aren't as
savage as they appear. The elite members of Daask are spies, soldiers, and saboteurs using their criminal activities as a cover for their true agenda. What is [[Sora Katra]]
really trying to accomplish in [[Sharn]]? This question ties
to how you decide to use the [[Daughters of Sora Kell]] Do the Daughters simply want to ravage their enemies? Or, guided by the oracular visions of [[Sora Teraza]], are they actually working toward some greater good? For instance, Daask agents could break into the vaults and workshops of [[dragonmarked house]]s and discover secret projects forbidden by the [[Treaty of Thronehold]]. They could clash with spies of foreign powers in Sharn, or pursue ancient artifacts in the ruins below the city to keep them out of others' hands. 

[[Dreamlily|dreamlily]] is relatively safe; [[dragon's blood]] is not. Its effects are intentionally unpredictable, and you can take this idea wherever you like. Could drinking dragon's blood cause someone to develop a [[dragonmark]]? Could it turn addicts into crazed, draconic creatures? Is Daask simply selling it to make money, or is the drug's introduction part of a grander plan? Neither the [[Boromar Clan]] or the [[dragonmarked house]]s have been able to learn anything important about dragon's blood.

Daask can also serve as a group patron for a party
of adventurers. The table below provides objectives for adventurers
working with the organization.

| !<<dr d6>> |!Daask Assignment |
| 1 |Convince several new businesses in the [[lower ward]]s to pay protection fees to Daask. |
| 2 |Cause as much death and destruction as possible inside a Boromar-owned establishment. |
| 3 |Guard a priest of the [[Dark Six]] as he preaches the word of the [[Mockery]] on the street. |
| 4 |Assassinate a member of the [[Boromar Clan]]. |
| 5 |Convince a [[dragonmarked noble|dragonmarked house]] to offer the house's services to Daask for free. |
| 6 |Mug someone to steal a [[magic item]] in their possession. |

!! Daask Adventure Hooks

The table below presents ideas for
additional adventures themed around Daask.

| !<<dr d4>> |!Adventure Hook |
| 1 |Daask harpies raid a [[Skyway]] mansion and tear the place apart looking for a [[Boromar Clan]] member. |
| 2 |People who take [[dragon's blood]] begin turning to stone, and no one can figure out why. |
| 3 |[[Cavallah]] announces a contest within the organization, promising a valuable [[magic item]] to whichever Daask soldier kills the most members of the [[Boromar Clan]]. |
| 4 |[[Ash]] challenges [[Cavallah]] for control of Daask, creating a schism that erupts into a violent gang war. |
//A thin, gray-haired [[gnome]] looks down from atop a 12-foot tall pillar of densewood. She wears a plain hooded robe, and her wrinkled skin is tanned a deep brown. Her dark eyes sparkle as she watches and smiles.//

Daca is a mysterious gnome who has been sitting atop [[Daca's Watch]] for 120 years, occasionally shouting advice to people who seemed troubled or distressed. She is able to communicate with any creature that speaks a language. She does not appear to need food or water. Most residents believe she has been touched by the goddess [[Boldrei]], though Daca claims not to be a priestess.

She is constantly surrounded by a calming aura, which is a mind-affecting, supernatural compulsion that discourages violence in her vicinity. No one has ever attempted this, but if a person were to attempt to strike Daca with a weapon, the weapon would shatter in a flash of light, leaving Daca unharmed.
[[High Hope]] contains an unusual
shrine to Boldrei, a monument that has come to be
known as Daca's Watch. A thick, 12-foot pillar of
[[densewood]], this structure was supposed to hold a statue
of some priest or martyr, but funding for the project
evaporated, and the pillar stood empty for many years.
One day, a [[gnome]] named [[Daca]] climbed up to the top
and sat down. From this high perch, she watched and
studied the people, occasionally shouting advice to
people who seemed troubled or distressed.

That was 120 years ago. Daca still sits on her
post, watching over her neighbors. While she has no
oracular powers, she is very familiar with the people
of High Hope and has a great deal of common sense.
The inhabitants of the district often come to her
for advice or when a mediator is required, and she served as an emotional pillar of the community over
the course of the [[Last War]].

While she has no religious training and does
not profess to be a priestess of [[Boldrei]], most of the
locals believe that she has been touched by the goddess and consider her to be a holy woman. They are
not alone in this; a handful of priests from other
districts regularly visit High Hope to discuss events
in [[Sharn]] with Daca. 
The daelkyr are the lords of madness and the emissaries of [[Xoriat]], who invaded [[Eberron]] with a host of [[mind flayer]]s, [[beholder]]s, and other foul [[aberration]]s. Wherever they walked, the daelkyr reshaped the world in their image, sowing madness and creating monsters. They fused [[goblin]]s together to create the gibbering [[dolgrim]]s
and crafted the blind [[dolgaunt]]s from [[hobgoblin]] stock.

The [[goblinoid]] champions of [[Dhakaan]] fought fiercely. But in the end, it was the [[orc]] [[Gatekeeper|Gatekeepers]] [[druid]]s who closed the portals to [[Xoriat]] and drove the daelkyr into
[[Khyber]]. The Gatekeepers crafted seals to hold both the
power of Xoriat and the daelkyr at bay, and as long as
those seals remain intact, the lords of madness can't
rise from the depths. Today, those seals are thousands
of years old and the Gatekeepers are all but forgotten.
[[Mind flayers|mind flayer]] scheme in the sewers of [[Sharn]], and cultists
beseech [[beholder]] priests for the blessings of [[Belashyrra]], the Lord of Eyes. And in the shadows of Khyber, the
daelkyr are waiting. 

<<<
''The Six Daelkyr''<br/>
Six daelkyr are known on Eberron through their cults and
legends, but other daelkyr surely
lurk in the depths of Khyber. 

* [[Avassh]]
* [[Belashyrra]]
* [[Dyrrn]]
* [[Kyrzin]]
* [[Orlassk]]
* [[Valaara]]

<<<

//''Held Loosely in Space.''// The daelkyr have lairs within
[[Khyber]], but these are no mere caverns. Each daelkyr's
domain is a demiplane reflecting the twisted vision of its
master. These realms are connected to the surface by
tunnels and chasms, but they defy conventional geography. Passages to [[Belashyrra]]'s domain can be found in
the [[Shadow Marches]], but tunnels also connect its realm
to [[Xen'drik]]. Adventurers can potentially cross great distances quickly by passing through a daelkyr's domain.

//''Unfathomable Evil.''// The daelkyr are utterly alien,
and their physical forms can't be fully perceived by
mortals. Viewers perceive the same general impression
of a daelkyr, but the details vary in ways that can't be
controlled. For example, [[Belashyrra]] might appear as a
female [[human]] surrounded by floating eyes to some
viewers, while other viewers see a haggard male [[elf]]. 

!! Spawn of the Daelkyr

Most of the [[aberration]]s on [[Eberron]] are the creations of
the daelkyr. The daelkyr are masters of flesh-shaping,
and they altered existing life forms—often beyond recognition—to create soldiers for their wars against the
peoples of [[Khorvaire]].

When a character faces a creature twisted by the
daelkyr—an [[aberration]] or another creature bearing a
daelkyr's corruption—consider rolling on the Daelkyr
Modifications table to add strange cosmetic details to
the creature.

| !<<dr d10>> |!Daelkyr Modification |
| 1 |The creature is fused with another creature or object. |
| 2 |The creature has additional eyes, or its existing eyes are replaced with the eyes of a different creature. |
| 3 |The creature produces eerie music instead of speech. |
| 4 |The creature's skin has an un usual texture or color. |
| 5 |The creature's hair is replaced by spines or tentacles. |
| 6 |The creature's flesh is transparent. |
| 7 |The creature has extra limbs. |
| 8 |The creature is bioluminescent. |
| 9 |The creature has an additional head. |
| 10 |The creature sheds its skin every 60 days. |

!!! Beholders

[[Beholder|beholder]]s served as the living artillery of the daelkyr
forces, shattering [[hobgoblin]] armies with their deadly
eye rays. When the [[Gatekeepers]] drove back and imprisoned the daelkyr, most of the beholders were driven into
[[Khyber]] along with their creators.

Today, beholders are solitary, egocentric creatures.
Some have remained among the daelkyr and [[dolgaunt]]s, while others have
accumulated their own followings among the [[Cults of the Dragon Below]]. A few have abandoned the path of
aggression in favor of solitary philosophy and reflection.
A beholder philosopher might manipulate events in a [[humanoid]] city not to gain power or wealth, but to stimulate and then study a particular social or economic situation. 

!!! Doppelgangers

The daelkyr [[Dyrrn]] the Corruptor enhanced the latent
psychic abilities of [[changeling]]s to develop [[doppelganger]]s, while implanting a desire to cause chaos in the communities around them—even when there's no benefit in
it for the doppelganger. Some doppelgangers, driven by
visions from the daelkyr, can be found working with the
[[Cults of the Dragon Below]] or fighting alongside [[aberration]]s in [[Khyber]]. Others operate alone.

!!! Lycanthropes
Many people believe that [[shifter]]s are descended from
[[lycanthrope]]s, but shifter [[druid]]s often assert the opposite—that the abilities of the shifters are a gift from [[Eberron]] or [[Lamannia]], but the gift was corrupted by the
daelkyr to create the curse of lycanthropy.

Whatever the origin of lycanthropy, in the ninth century YK, the power of the curse surged dramatically, and all [[lycanthrope]]s were drawn toward evil. The
Church of the [[Silver Flame]] engaged in a long [[crusade|Silver Crusade]] to defend civilization from this brutal scourge, eventually
all but eradicating lycanthropy from the [[Five Nations]].
The lycanthropes that survived hid in dark places, deep
within the woods of the [[Eldeen Reaches]] and [[Droaam]].

The common people of [[Khorvaire]] still see [[lycanthrope]]s as a dire threat. Most folks don't understand that good-aligned lycanthropes exist.

!!! Mind Flayers

The [[illithid|mind flayer]]s of Eberron are the creations of the daelkyr
[[Dyrrn]] the Corruptor. Most [[mind flayer]]s on Eberron
dwell in [[Khyber]] with their daelkyr masters, commanding cities of [[dolgaunt]]s and [[dolgrim]]s. A few can be found on the surface, working with the [[Cults of the Dragon Below]] or pursuing their own enigmatic goals. The mind
flayers often seem to pursue reopening the gates to [[Xoriat]] with more urgency than the daelkyr themselves do.
The immortal daelkyr can afford to wait for another ten
thousand years; the illithids aren't so patient. 
This dagger has a saw-toothed edge and a black pearl nested in its pommel. A creature attuned to it can perceive its surroundings without the use of sight out to a range of 30 feet.
This ebony dagger doesn't make noise when it hits or cuts something. 
The Dagger River is the enormous river that leads into the [[Thunder Sea]] in the south, through the Hilt, a large natural harbor that serves the city of [[Sharn]], and originates near the town of [[Woodhelm]] in the [[Dragonwood]].
''District Type:'' Garrison<br/>
''Buildings:'' Garrison buildings (2), training ground,
temple ([[Dol Dorn]]), average lodging (20), poor lodging (4), upscale food (8), average food (15), poor food
(15), upscale trades (15), average trades (33), poor
trades (28), average services (40), average residences
(160), poor residences (40)<br/>
''First Impression:'' This may be the cleanest and
quietest district in [[Dura]]. The walls of the towers are
heavily reinforced, as if to withstand siege weaponry.
The streets are filled with guards of the [[Watch|Sharn Watch]], both
patrols and off-duty guards; it looks like a bad place
to start a fight.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Overlook]] (northwest); [[Redstone]] (northeast); [[Highhold]] (south); [[Ivy Towers]] (bridge, southeast); [[Stormhold]] (below)

[[Dura]] is easily the most dangerous quarter of the
[[city|Sharn]], and during the [[Last War]] riots and other forms
of unrest were a constant concern. Plus, the [[Race of Eight Winds]] usually results in various forms of
crime and vandalism. As a result, Daggerwatch has
the largest concentration of the [[City Watch|Sharn Watch]] in Sharn.
Many low-ranking city officials, including judges
and tax collectors, make their homes in Daggerwatch
and rely on the presence of the Watch to protect them
from vengeful citizens. 

!! Noteworthy Locations

* [[Daggerwatch Garrison]]. The eponymous garrison in the district is the home to over 600 members of the [[Sharn Watch]].
* The [[Gold & White]]. This tavern offers fare of comfortable quality at modest prices. It caters to members of the [[Sharn Watch]] and [[Brelish|Breland]] veterans, but others will receive a cold welcome.
* [[Talain Garrison]]. This fortress houses both the [[Sharn Watch]] and the elite [[Redcloak Battalion]].
The eponymous garrison in the [[district|Daggerwatch]] is the home to over 600 members
of the [[Sharn Watch]]. In addition to the regular officers of the Watch, Daggerwatch Garrison houses the
[[Goldwings]] and includes facilities for maintaining
the unit's 25 [[hippogriff]]s.

This garrison is led by Commander [[Lian Halamar]].
The Daggerwood is a forest in southern [[Breland]] that overlooks the [[Straits of Shargon]].
Captain Daja Brel commands the [[Guardians of the Gate]]. Daja firmly believes that
the Guardians are all that stands between order
and chaos in [[Sharn]], and she acts with unbridled
force if she believes a group or an individual threatens the city. 
Dal Quor is both impossibly distant and remarkably close. Tens of thousands of years ago, the [[giant]]s of [[Xen'drik]] shattered the ties between [[Dal Quor]] and the Material Plane. Since then, it's been permanently remote, and no naturally occurring [[manifest zone]] to Dal Quor has been discovered. Not even [[plane shift]] or astral travel can allow direct contact with the Region of Dreams. And yet, it's also the closest of the
planes—to visit, just close your eyes.
Dreaming is a form of spiritual travel, as
your mortal consciousness is drawn to Dal Quor.

Dal Quor is the realm of dreams, a place of imagination
where memory and emotion can shape reality. The stories of
[[Thelanis]] bring people together in a shared tale; by contrast, the
dreams of Dal Quor are unique, individual, and fleeting. They're
defined by our experiences and desires, and we rarely remember
them when they're over. Dreams allows us to sift through
our subconscious, and they are ours alone—or at least, they
//should// be... if they aren't manipulated by an outside force. The
denizens of Dal Quor reflect the secondary theme of the plane,
and—for now, at least—that theme is nightmares. The [[quori]] prey
on mortal dreams, twisting them to produce the emotions they
crave. This doesn't mean all dreams are nightmares—but when a
quori takes an interest in your dream, it'll usually become one.

!! Universal Properties

Dal Quor is a place where impossible things are possible and
the surroundings can change in the blink of an eye. What
differentiates it from [[Kythri]] and [[Xoriat]] is that these changes
are drawn from the minds of dreamers, both from the mortal
subconscious and the ancient dreams of [[il-Lashtavar]] itself.
Even when you're exploring someone else's dreams, your
desires and memories can infect the landscape. The table below provides ideas for how a dream could change.

| !<<dr d8>> |!Shifting Dream Event |
| 1 |A familiar melody can be heard throughout the area. Ask a player to describe the song. |
| 2 |A word appears on the wall. Is it a clue, or just mysterious? |
| 3 |A familiar NPC—a trusted ally or despised villain—enters. |
| 4 |A creature's weapon, armor, or other equipment takes on an irrational new appearance—perhaps a giant banana. This has no effect on its statistics, and the effect ends in 1 minute. |
| 5 |A creature now appears to be a child or a creature of another race. This has no effect on their abilities, and the effect ends in 1 minute. |
| 6 |A creature's beloved pet—perhaps from their childhood—appears in the scene. |
| 7 |There's a dramatic—and possibly surreal—shift in the weather or apparent time of day. |
| 8 |A creature gains the ability to fly as fast as they can normally walk. This lasts for 1 minute. |

* //''Extremely Morphic.''// The environment of Dal Quor can shift at any moment. These changes are generally drawn from the mind of the current dreamer, but at the DM's discretion, the thoughts of adventurers might impact another creature's dream that they're currently experiencing.
* //''Extended Illusion.''// The duration of [[illusion]] spells is doubled.
* //''Flowing Time.''// For every 10 minutes that pass in Dal Quor, only 1 minute passes on the Material Plane. While sleeping for 8 hours, a creature could spend 3 days in Dal Quor.

!! The Turning of the Age

The layers of Dal Quor are shaped by dreaming minds. The
[[quori]] believe the heart of Dal Quor is itself the dream of an
immense, ancient spirit, and that they themselves are simply
part of its dream. They call this the //Quor Tarai//—the Dream of
the Age. But there's a catch: every dream ends when the dreamer
wakes up. Forty thousand years ago, the [[giant]]s of [[Xen'drik]] fought
a war with Dal Quor—but none of the current quori remember
this war or anything that happened before it. They believe this is
because the Quor Tarai came to an end. Dal Quor woke from its
dream, then immediately returned to its slumber and began to
dream again... but it was a //new// dream, with entirely new quori.

The quori call this transition the Turning of the Age. They
don't know how many times it's happened before, and they know
nothing about the quori of the previous age. But they believe that
each incarnation of the Quor Tarai has its own distinct flavor.
The present Quor Tarai is [[il-Lashtavar]], the Great Darkness that
Dreams. It's malevolent and cruel, and that's reflected by the
quori it's created. But a handful of quori didn't fit in this dream.
These are the quori that became the [[kalashtar]], who consider
themselves harbingers of transformation. The kalashtar believe
that the next incarnation of the Quor Tarai will be an age of
hope and compassion; they call it [[il-Yannah|Path of Light]], the Great Light.

So all quori know that one day, Dal Quor will wake from its
dream, and when it does, all existing quori will be destroyed.
This drives the conflict between the [[kalashtar]] and the
[[Dreaming Dark]]. The kalashtar believe their devotions and
meditation slowly turn the wheel toward a dream of light.
Meanwhile, the agents of the Dreaming Dark believe they can
permanently anchor the Quor Tarai in the current age, if only
they can control enough mortal dreams—a process begun
with [[Sarlona]]. It's up to the DM to decide if the kalashtar can
usher in a new age over the course of the campaign, or if the
Dreaming Dark will maintain the status quo. If the Turning of
the Age occurs, all existing quori will be destroyed and reborn;
no one knows what this will do to the kalashtar or foreign
creations like the [[Uul Dhakaan]].

!! Denizens

The [[quori]], children of il-Lashtavar, are the most numerous
of the native spirits of Dal Quor. But quori aren't the only
creatures dreamers can encounter in the Region of Dreams.

!!! Dreamers

At any given moment, there are millions of dreaming minds
creating islands in Dal Quor. [[Human|human]]s, [[orc]]s, [[giant]]s, [[dragon]]s—any creature that dreams can be found in this plane. 

A rare few dreamers are lucid and in full control of their
actions, due to either training or magic; these are capable of
leaving their own dreams and moving between the plane's
dream islands and layers. However, the vast majority of
dreamers aren't lucid. They're driven by their subconscious,
and react based on instinct and deep desires; they likely won't remember the events of a dream clearly. Either way, when a dreamer dies in their dream, they wake up; however, this death can still have consequences, as described in the "Dying in Dreams" section of the [[Dreaming Dark]] page.

!!! Figments and Drifters

When you have a dream and you meet your old drill sergeant,
it's not actually your old drill sergeant, and it's (probably) not
a [[quori]]. It's simply a figment, manifested from the void by Dal
Quor. When you wake up—or even just leave the scene—this
[[manifestation]] vanishes, absorbed back into the essence of the
plane. A figment can be anything—a friend of yours, a [[zombie]]
version of that friend, a [[demon]], a [[dragon]]—but the catch is that
it's drawn from the mind of the local dreamer. When you dream
about your old drill sergeant, they can't tell you a secret you don't
already know, because they're part of you. On the other hand, if
you're in someone else's dream—or if a quori has taken control of
your dream—then the figments can surprise you, because their
capabilities and knowledge are drawn from someone else's mind.

A figment could use the statistics of the creature it represents,
or it might be limited, as the dreamer doesn't know what it's
actually capable of. Conversely, a figment goblin could have the
statistics of an ogre—in this dream, that's one tough goblin.

Occasionally, a remarkable figment develops the ability to
persist beyond the dream that created it—becoming a truly
sentient spirit instead of a simple manifestation. Such figments
might be useful guides or allies for mortal dreamers, or become
predators that travel from dream to dream and prey on mortal
fears. Such free-willed figments are called drifters.

!!! The Quori

The [[quori]] themselves are figments—figments of il-Lashtavar,
the current Dream of the Age. However, these figments are
immortal, and don't disappear when a mortal's dream ends;
if they're destroyed, they're simply reborn within the heart of
il-Lashtavar. Like other figments, they come into existence
knowing the role they are supposed to play: they are shapers of
nightmares. Each type of quori feeds on a particular emotion;
[[tsucora]] quori craft terrifying nightmares so they can feast on
mortal fear, while the [[du'ulora]] thrive on anger.

When a quori enters a dream, it can create new figments,
alter the story's script, or change its own appearance (though its
statistics remain the same). If the invading quori is killed within
the dream, the story reverts to the original script, so most quori
prefer to remain in the background while shaping a dream;
however, some are arrogant and can't resist playing a starring
role. The quori don't create //every// nightmare; there are millions
of dreamers, while the quori number only in the thousands. But
the nightmares they personally create are works of art.

In the first days of il-Lashtavar, the quori had no purpose aside
from preying on mortal dreams. Now they believe they're fighting
for their survival, and they use their abilities to manipulate
mortals and the waking world. But always remember that the
quori began as crafters of nightmares, and consider how each
quori's favorite emotion may color its actions.

!!! Interlopers

Some creatures in Dal Quor are neither figments nor mortal
dreamers. [[Night hag|night hag]]s freely come and go, collecting nightmares
for their own purposes. Here are some other interlopers.

//''The Fey of the Fading Dream.''// [[Taer Lian Doresh]] is a [[feyspire]] that exists between Dal Quor and the Material Plane. The [[eladrin]] of this feyspire can freely pass to both planes, and are perhaps the only mortal beings who can do so.

//''The Draconic Eidolon.''// Many [[dragon]]s of [[Argonnessen]]
believe they can attain immortality after death, passing through
[[Dolurrh]] and becoming divine beings. However, some aren't
willing to take that chance; using an [[eldritch machine]] hidden
deep in Argonnessen, the most powerful can perform a ritual
that tethers their spirits to a psychic anchor in Dal Quor. This
Draconic Eidolon, a monument in the [[Ocean of Dreams]], holds
the souls of dragons long dead instead of releasing them
to Dolurrh. The dragons no longer exist physically; like the
[[Undying Court]], they're a union of spirits, possessing greater
power together than they would individually. They can't leave
the Eidolon, but possess vast knowledge—secrets of history,
insight into the [[Prophecy|Draconic Prophecy]], and knowledge of epic magic. They
have much to offer, but what do adventurers have that the
dreams of dead dragons might want?

!! Layers

Dal Quor doesn't have [[layer]]s like other [[plane]]s. Instead, it can be
seen as a vast ocean. When a mortal dreams, they fall into that
ocean and create an “island”: a dream pocket, shaped by their
memories and desires. When they wake, this island disappears.
So at any given moment, Dal Quor contains millions of islands,
but none last for long. A passive dreamer can't leave their own
island, but a lucid dreamer can find ways to travel between them.
Typically this involves portals, doors within a dream that have a
psychic connection to the destination—but it's also possible to
break through the psychic border of an island, to fly to another
island on a ship of dreams or an imaginary winged beast.

These flickering islands orbit the stable [[core|il-Lashtavar]] of the realm, the
dark heart of the Quor Tarai. In addition to the regions discussed
below, there may be other permanent islands in the [[Ocean of Dreams]], following the example of the [[Uul Dhakaan]] and the
Draconic Eidolon. Who created the island, and what sustains it?

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Ever since the [[Age of Giants]], it's been nearly impossible to
physically interact with Dal Quor from the Material Plane. This
forces the [[quori]] tied to the [[kalashtar]] and the [[Inspired]] to act
through mortal agents. The only denizens of Dal Quor that can
easily enter the world are the [[fey]] of the Fading Dream. Otherwise, the primary way that Dal Quor manifests in the world is through dreams. The plane is always remote; undoing this damage would be an epicquest, potentially returning the thirteenth moon to the sky. But even at a distance, Dal Quor can affect the waking world.

!!! Manifest Zones

The metaphysical damage caused in the conflict between Dal
Quor and the [[giant]]s of [[Xen'drik]] broke the ties between [[Eberron]]
and Dal Quor. There are no naturally occurring [[manifest zone]]s
to Dal Quor, and even [[plane shift]] won't allow travel there.
However, though //natural// manifest zones don't exist, anything
is possible with an [[eldritch machine]], whether in the hands of
the [[Dreaming Dark]] pursuing subtle conquest, or simply an
eccentric [[artificer]] seeking the advancement of arcane science.

!!! Quori Artifacts

While it's rare to encounter objects on Eberron that come from
Dal Quor, the [[Inspired]] of [[Sarlona]] create objects using [[quori]]
techniques. The primary substance used in quori objects is a
form of solidified emotion called [[sentira]]. Quori [[magic item]]s generally enhance telepathy or other psychic effects.

!! Quori Stories

Some story ideas relating to the [[Dreaming Dark]] can be found on that page. Here are a few additional ideas.

//''Familiar Figments, Figment Familiars.''// The adventurers
discover their dreams all share the same figure, appearing
regularly to each of them. It could be humanoid (a childhood
friend, an old mentor), a shapechanging raven, or a talking
purple cat. It was once merely a figment of one of their
dreams, but it's become a drifter, able to move between
dreams. It could offer advice, carry messages to characters
when they're separated from friends, or warn of things it's
seen in the dreams of their enemies.

//''The Treacherous Whisper.''// A single fortress in the [[Uul Dhakaan]] has become infected by a [[daelkyr]] curse, turning the
figments within it into [[aberration]]s. Can this be contained and
cleansed before it spreads and destroys the dream itself?

//''The Fortress of the Fading Dream.''// [[Taer Lian Doresh]] exists
on the edge of Dal Quor, where mortals and quori meet face to
face. The [[tsucora]] Astaleth has recently turned to the [[Path of Light]] and is hiding within the fortress; if she leaves, she'll be consumed by [[il-Lashtavar]]. Can adventurers find a way to save the rebel quori? Why is the leader Shan Lian Doresh allowing
her to shelter in his hall?
[[Middle Tavick's Landing]] is a center for trade and commerce, catering to adventurers, commoners, and merchants bringing cargoes in on the [[Orien]] [[lightning rail]] or by trade
caravan. Dalaina Ironhand ([[dwarf]]) is a plain-spoken woman who represents the merchants of the ward. She is a hard-nosed negotiator with no sense of humor and no interest in anything beyond the bottom line. She always drives for the best bargain for her people—whatever form that bargain may take—but she has no taste for underhanded intrigue. As a result, she opposes the schemes of the “[[Boromar|Boromar Clan]] Block”—[[Bestan ir'Tonn]], [[Caskar Halavik]], [[Thurik Davandi]], and [[Ilyra Boromar]]—whenever possible. 
''District Type:'' Wealthy residential<br/>
''Buildings: ''Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The opulence of this neighborhood is overwhelming. The streets are lined with marble statues of famous inhabitants of [[Sharn]], and fountains of illusion throw shimmering columns of rainbow light into the air. While not quite as luxurious as the homes of [[Ocean View]], the mansions of Dalan's Refuge are large and quite impressive.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Ocean View]] (southwest); [[Copper Arch]] (north); [[Platinate]] (bridge, northwest); [[Deathsgate]] (below)

Dalan's Refuge is rather unremarkable, notable only
for the wealth of its inhabitants, the number of pretentious monuments it contains, and the fact that a would-be resident only needs to acquire 25 signatures before
purchasing property in the district. It is filled with
impressive mansions, along with a few smaller houses
belonging to successful merchants, barristers, and
politicians who haven't quite made it to the top yet. 
''District Type:'' Inn district<br/>
''Buildings:'' Temple ([[Boldrei]]), shrine ([[Silver Flame]]),
average lodging (50), poor lodging (180), average food
(35), poor food (140), average trades (35), poor trades
(105), average services (35), poor services (105)<br/>
''First Impression:'' Tourists, travelers, and merchants
fill the streets of this enormous district. Inns and taverns stretch as far as the eye can see. The quality is not
exceptional, but there is no shortage of places to stay.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Graystone]] (north); [[Deathsgate]] (southwest); [[Smoky Towers]] (bridge, west); [[High Walls]] (below); [[Copper Arch]] (above)

Dancing Shadows provides food, lodging, and basic
services to the many people who arrive in [[Sharn]]
every day. None of the inns or taverns are especially
remarkable; in this case quality is more significant
than quantity. Adventurers tend to stay in [[Deathsgate]], while the wealthy often go to [[Silvergate]] in
[[Upper Tavick's Landing]]. Dancing Shadows caters to
the commoners and traveling merchants who simply
need a place to stay at a reasonable price. 
The [[dao]] are [[genie]]s of elemental earth who crafted the [[City of Brass]] and the [[azer]]s who maintain it, and continue to craft grand and remarkable wonders in their native [[plane]] of [[Fernia]].

Each dao has a particular specialty, a unique style of art or artifice. While they can
craft artifacts that would be the envy of any mortal [[artificer]],
their techniques can't be easily replicated. Their work has an
element of arcane science, but much of what they do involves
channeling the essence of [[Fernia]] itself; a dao who settles in
the Material Plane will find its talents more limited.

The dao are more stoic than the fiery [[efreet|efreeti]], and don't throw
extravagant parties. But they still engage in intense social
competition with one another, striving to craft the most glorious
creations. This doesn't necessarily mean their work is the
most powerful; rather, it's about creating things that are most
desired. The dao don't need gold, so the efreet usually pay them
in barter, which creates a bizarre secondary market. The efreeti
Raqashtar might offer a squad of elite salamander warriors in
exchange for a wondrous crown; the dao has no use for them,
but it knows that the efreeti [[Azhalar]] is collecting soldiers, so...

Adventurers may seek out dao because of what they can do,
but dao can also be interesting patrons. A dao may need some
rare substance to complete its latest work, but it can only be
obtained on the Material Plane—so it turns to adventurers
to obtain it. Or a dao could even use a group of mortals as a
focus group, seeking opinions on its latest work.

Here are a few notable dao:

* [[Naja Ash]]
* [[Sar Saeran]]
* [[Brass]]
Dar Darath is a bastion city in [[Nulakesh]], [[Riedra]], on the shores of [[Rhialuun]].
Dar Ilash is a bastion city in [[Pyrine]], [[Riedra]]. It holds the headquarters of the [[Healing Hand]].
''Country:'' [[Riedra]]<br/>
''Government:'' The [[Unity]]<br/>
''Local Ruler:'' Eidolon [[Tureya]]<br/>
''Population:'' 1,960,000

Dar Jin rises up from the waters of the [[Barren Sea]],
and stretches along the coast. The city's massive walls
are smooth red stone with wide lines of blue crystal are
embedded in the surface, and these labyrinthine patterns
glow with an inner light. The towers that rise up above
are whorled and rounded, and seem to have been blown
from colored glass.

Dar Jin is the greatest port of [[Riedra]]. It is the terminus of the [[Xen'drik]] trade route, and much of the industry of the city is devoted to processing the goods
from that land. Trade goods are organized and stored in
preparation for transport across the nation, and crystal foundries transform shards into [[crysteel]] and other
useful forms. 

The walls of the city extend for miles, and the slender
towers stretch hundreds of feet into the air. The harbor is
filled with ships, and the docks are thronged with people.
But the [[people|Riedrans]] of Dar Jin go about their business silently,
speaking only when it is absolutely necessary.

Throughout the history of [[Riedra]], all trade has been
conducted on foreign soil. In 1300 Unity (998 YK),
that curtain was lifted. Today, merchants can petition
[[Inspired]] ambassadors for the right to dock in the harbor
of Dar Jin. 

Lady [[Tureya]] is the Eidolon of Dar Jin. Thousands of lesser [[Inspired]] and [[Chosen]] labor beneath her. 

!! Wards of Dar Jin

Dar Jin is larger than any city in [[Khorvaire]]. It is composed
of five circular wards, each a metropolis in its own right.
Four of the wards are almost identical. The streets are
paved with smooth black cobblestones, interspersed with
squares of clear [[crysteel]]. When darkness falls, the crysteel
blocks [[glow with a soft light|crystal illumination]]. Workhouses, dormitories,
and storehouses are made of blocks of black and white
stone; crysteel panels serve as skylights during the day
and glowing lanterns at night. Most buildings are curved
or whorled; hard angles are few and far between. The city
is beautiful in its way, but is extremely repetitive—every
dormitory looks exactly the same. 

The fifth ward is dominated by the [[Jhodra]], or foreign quarter, a cordoned-off section of the harbor ward. The Jhodra alone is larger than many cities of [[Khorvaire]].

!! Notable People

Most of the [[Riedran|Riedrans]] inhabitants of Dar Jin are commoners who specialize in a particular trade. These people are devoted to their work and to the
[[Inspired]], and they avoid conversation with foreigners.
A few of the more important inhabitants of the city are
listed below.

* Lady [[Tureya]]
* Lord [[Sulakhal]] of the Silver Shield
* [[Gusan]] of the [[Dream Merchants]]
* [[Rhuun]] of the [[Broken Throne]]
* Captain [[Tulaar]] of the [[Taskaan Legion]]
This bastion city in [[Riedra]] sits on the edge of the [[Shanjueed Jungle]] in the southern tip of [[Corvagura]]. It is the closest bastion city to the land of [[Adar]].

Along with [[Dul Catun]] and [[Dar Ulatesh]], Dar Mirn is one of the centers of the [[Chosen]] shadow lines.
This large city in [[Riedra]] is the seat of the [[Edgewalkers]]. Dar Mun is located
between four separate [[wild zone]]s; two are tied to [[Shavarath]], one to [[Daanvi]], and one to [[Dolurrh]]. Despite the "Dar" prefix, meaning "Port", the city
is an inland community; the [[Riedrans]] view it as a "world port." 

In addition to holding garrisons and training facilities for
Edgewalkers, Dar Mun has one of the
finest arcane libraries and workshops
in [[Riedra]]. A permanent psionic teleportation circle links the bastion to [[Durat Tal]]. The [[Inspired]] conduct most of their planar research in Dar Mun, and PCs could be sent to steal data from the bastion or to sabotage an [[eldritch machine]] being
constructed there. 
''Country:'' [[Riedra]]<br/>
''Government:'' The [[Unity]]; Eidolon [[Surasek]]<br/>
''Local Ruler:'' Lord [[Baalnakosh]]<br/>
''Population:'' 97,000

Dar Myan is a bastion in [[Corvagura]]. Built on the
floodplain of the [[Koralanda River]], it is a center of distribution and agriculture, as well as the home of important
[[Inspired]]. It has training facilities for both the [[Dreaming Dark]] and the [[Thousand Eyes]]. A major military installation also calls Dar Myan home, providing training
for soldiers of the [[Savage Legion|Taskaan Legion]] and other military
branches. The [[monoliths|hanbalani alta]] of Dar Myan play an important
role in powering the bastion and could be a target of any
anti-Inspired operation inside the city.

Dar Myan is shaped like a bulbous cloverleaf and riddled
with channels and canals. A fortress for the [[Inspired]],
surrounded by wide waterways crossed only by drawbridges, occupies the center of the city. 

Lord [[Baalnakosh]] of the [[Bountiful Horn]] ([[hashalaq]] [[Inspired]] [[psion]]) rules Dar Myan and oversees its important functions. He is
aided by hundreds of [[Chosen]] and served by thousands
of servants, agents, and troops. 

This city's description can be used as a template for other [[Riedra]]n bastion cities.

!! Notable Features

!!! Wall and Gate

Dar Myan's wall is about 80 feet
thick. The sides and top are honeycombed with military
posts, storage facilities, and barracks. Bulges in the wall
form larger command posts and troop rallying points.
The command posts, set every 500 feet in the wall, are
the only places where the wall can be entered at ground
level inside Dar Myan.

Dar Myan's gates are immense, swiveling slabs of
stone and [[sentira]] that can be closed and locked by the
effort of a few soldiers using the machinery within the
towers flanking the gateway.

!!! Gate Monolith

At the gate, this imposing edifice stands as a tribute to the might of the [[Inspired]] and the industriousness of Dar Myan's people. The [[monolith|hanbalani alta]]
here powers nothing—it is held in reserve to defend the
eastern walls of the bastion. 

!!! Trades District

In this district of the bastion, people
practice crafts to supply their fellow citizens, as well as
[[Riedra]]'s military and nobility, with needed finished
goods. Priests of the [[Path of Inspiration]] live among and
guide the common folk. Raw materials are barged in from
the river to the channel here and unloaded at warehouses.
No barge traffic passes the first bridge on the channel.
Excess production is shipped out the same way. 

!!! People's Monolith

In the center of the trades district stands the People's Monolith. This [[hanbalan|hanbalani alta]] powers the conveniences of city life and is a broadcast center for the [[Soothing Voice]] in the eastern reaches of the city. The people of the trades district are allowed to come here for spiritual inspiration, and all of them
gather here for the annual Feast of Founding, during which the monolith is disconnected from the power grid and used to gather energy for the city's [[Inspired]] overseers. Similar monoliths exist in the city's other districts.
Each has a raised platform, a spacious hall underneath
for public functions and meals, and pools of purified
water churned by small fountains. These pools also serve
as public wells, though some areas of the trades district
actually have running water.

!!! Military District

Across the channel from the
trades district is a military district where soldiers train
and live. The common folk who provide the military's
mundane needs also work and dwell there. Bridges into
this district are heavily guarded and regularly patrolled.
Only those who have proper identification and essential
business enter this zone. Across the channel from where
barges unload in the trades district is a similar facility
for military supply and troop deployment. Comparable
sections of the city near the central fortress provide shelter for lesser nobility, centers of learning, and training
grounds for the elite agents of the [[Thousand Eyes]] and the
[[Dreaming Dark]], although few beyond the [[Inspired]] know
the true nature of the Dreaming Dark facility. 

!!! Honor's Monolith

Honor's Monolith is a power
center for the military district and a center for spirituality among the soldiery. Soldiers gather here for
speeches from their Inspired leaders and to march
with pride and respect to the People's Monolith. Furthermore, the open area around the monolith is used
for special training and troop inspection. The pools
here serve the same function as those near the People's
Monolith, but one can serve secondarily as a facility for
training in aquatic combat. 

!!! Fortress Palace

The central fortress of Dar Myan
houses the living quarters of Lord [[Baalnakosh]] and his
staff. Within the compound are facilities for all the
needs of the [[Inspired]] ruler, as well as a [[monolith|hanbalani alta]] for his
personal use. Baalnakosh's palace is kept comfortable
throughout the year by the power of the monolith, but the
[[hashalaq]] sometimes uses the hanbalan for other purposes.
The wall around the fortress has two gates—east into the
military district and north into the [[Chosen]] district.

!! Notable People

The people of Dar Myan are normal [[Riedrans]] for the
most part, but some stand out. 

* [[Naldhuna]]
* [[Orakhun]]
* [[Jhaasha]]
* [[Clade]]

!! Encounters

Response to intrusion is fast and brutal. At the first sign
of trouble, military forces mobilize and the citizens lock
down their quarters and workshops. But the city's roads and alleys are easy to hide in, and the troops tend to go to
obvious trouble spots (such as a nonfunctioning [[monolith|hanbalani alta]]). Dar Myan's people are likely to fear anyone brave
and capable enough to take out a monolith, but they are
unwilling to aid intruders.

Stealth, speed, and evasion are the best approaches.
Hiding within the city is a possibility, but when the situation calms after a raid, [[Baalnakosh]] has his troops do a
systematic search of the bastion.

Within Dar Myan, intruders may encounter [[Bastion Guard]]s, eventually gaining the attention of specialist squads of [[psi warrior]]s or [[psion]]s (always [[Chosen]] or [[Inspired]], usually [[tsoreva]] or [[tsucora]]). A standing force of [[Taskaan|Taskaan Legion]] [[shifter]]s is also available. Finally, a troop of soldiers of the [[Sleeping Sword]] is largely made up of [[Chosen]] and [[Inspired]] [[psi warrior]]s and
[[soul knives|soulknife]]. Such units are usually led by a [[tsucora dreamblade|tsucora]]. 

!! Development

The channels and canals of Dar Myan are its weak
points—the arrogance of the [[Inspired]] is another. A
clever assault squad could breach the bastion at the river
and come in by way of the channel. Then it's a matter
of assaulting the proper points in the city to complete a
mission's objective. 

Curfew occurs at two hours after sundown every
day. Lights are shut down then, and any person caught
on the streets is subject to arrest and punishment. Even
so, illicit activities do take place in the dark of Dar
Myan's nights.
The [[Inspired]] lords of [[Riedra]] are just as
interested in the resources of [[Xen'drik]] as the people of
[[Khorvaire]]. Dar Qat is a Riedran port, a fortress built
from glittering [[crysteel]] (grown crystal as strong as steel)
and dwarfed by a nearby monolith believed to serve as
a psychic anchor for the city. Outsiders are rarely welcome within the walls of Dar Qat. 
Dar Reth is a bastion city in [[Nulakesh]], [[Riedra]].
While there is little cultural contact
between [[Riedra]] and [[Khorvaire]], a considerable
amount of trade flows across the [[Barren Sea]]. Most
[[Riedrans]] distrust the people of Khorvaire, and over
the years a number of Riedran merchants have purchased their own warehouses in [[Precarious]], staffed
with Riedran laborers and bookkeepers. Over the
last century, a small Riedran community has taken
root in Precarious; the inhabitants call in Dar San
(“Far Port” in the Common tongue). Though they
live in squalor, the Riedrans are a proud people, and
the lowliest laborer considers himself to be the equal
of a duke of Khorvaire.

Among themselves, the [[Riedrans]] observe a strict
social hierarchy. When one of the [[Inspired]] comes to
Dar San, he or she is treated like an emperor. While
the Riedrans generally hold the people of Khorvaire in contempt, they have an irrational hatred of the [[kalashtar]] and [[Adarans]]. The neighborhood has
established its own militia—though some might call
it a street gang—and any kalashtar or Adaran who comes to the neighborhood gets just one chance to
leave peacefully.

Riedrans do not drink alcohol, nor do they use
[[dreamlily]] or other narcotics; they view such behavior
as an example of the corruption that grips Khorvaire.

Dar San features a number of businesses catering to the Riedran community, including the two exotic trades listed in the district description. These
include:

* ''Kasharath'', a restaurant serving Riedran cuisine
* a grocery stocked with Riedran foods and goods
* a shrine to the [[Inspired]]

Prominent citizens include Lanharath, who represents the merchant consortium that
owns the warehouses; Hasalakesh, a tailor specializing in Riedran
clothing; and Kantarashtai, Dar San's resident healer. Lanharath
typically serves as the leader of the community,
but the true power rests with the [[Inspired]] warrior
[[Hamatash]]. Hamatash maintains a low profile, but he is the
disposable tool of the [[Dreaming Dark]]—if the Dark
needs to take some action without revealing the existence of their sleeper agents, they use Hamatash and the Riedran militia.
Dar Terash is a bastion city in [[Nulakesh]], [[Riedra]].
The western gate of [[Riedra]] is the seat of trade across the
[[Sea of Rage]]. A foreign quarter has recently been established, although it is smaller than its [[counterpart|Jhodra]] in [[Dar Jin]]. Dar Ulatesh is a stronghold for the [[Harmonious Sail]],
but there are shadier elements here as well (this is a good
place to contact the [[Dream Merchants]]). In addition, the
city is a training ground for the [[Dreaming Dark]], and it
is home to a number of the [[shadow lines|Chosen]]. Dar Ulatesh is
ruled by the [[Inspired]] Lord Ulatorn ([[usvapna]]
[[Inspired]] telepath), a minister of the [[Iron Gate]]. 

Along with [[Dul Catun]] and [[Dar Mirn]], Dar Ulatesh is one of the centers of the [[Chosen]] shadow lines.
Dar Vuleer is a bastion city in [[Dor Maleer]], [[Riedra]], on the shores of [[Kelneluun]].
''Capital:'' [[Rhukaan Draal]]<br/>
''Hallmarks:'' Dungeons, [[goblinoid]] mercenaries, ruins 

[[Goblins|goblin]] and their [[kin|goblinoid]] have always been part of [[Khorvaire]]. Their ancient [[empire|Dhakaan]] spread across the lands now
held by other nations, and goblin foundations still stand
underneath many [[human]] cities. This empire collapsed
into savagery, and when humans arrived from [[Sarlona]],
they drove the goblins from their ancestral lands. Thus,
goblins have long been a disenfranchised people, living in the shadows of newer nations or in wild lands
shunned by humans.

The land now called Darguun was once part of [[Cyre]].
The [[hobgoblin]] clans known as the [[Ghaal'dar]] were based
in the [[Seawall Mountains]], but during the war, the demand for mercenaries drew an ever-increasing number of goblins out of the mountains to fight for Cyre and [[Breland]]. Late in the war, a brilliant hobgoblin named Lhesh
[[Haruuc Shaarat'kor]] recognized that the goblins had become the dominant military power in the region. Uniting
the Ghaal'dar under his banner, Haruuc seized the territory he was supposed to protect. The [[Five Nations]] were
unprepared, and [[Breland]] quickly negotiated an alliance
with Haruuc to secure the border. [[Cyre]] fought the goblins until the Day of [[Mourning]], but the majority of delegates involved in forging the [[Treaty of Thronehold]] chose
to recognize the new nation of Darguun to ensure peace.

Darguun is a young and volatile nation, ruled by Lhesh [[Haruuc Shaarat'kor]]. Haruuc remains a brilliant strategist and tactician, but many wonder whether he can
maintain the web of alliances that hold the Ghaal'dar together, and whether he and his people will be content to abide by the terms of the treaty. Other goblins still hidden in the mountains—the enigmatic [[Heirs of Dhakaan]]—could pose a threat both to the goblins
and the rest of [[Khorvaire]].

Traditionally, the [[Ghaal'dar]] worshiped a form of the
[[Dark Six]]. House [[Deneith]] introduced the [[Sovereign Host]] to the region, and some goblins have embraced this faith, especially the gods [[Dol Dorn]], [[Dol Arrah]],
and [[Balinor]]. 

!! Interesting Things About {{!!title}}

* House [[Deneith]] has a strong presence in Darguun. No one will employ goblin armies in the wake of Haruuc's betrayal, but security forces value smaller units of [[goblinoid]] mercenaries for their ferocity and skills.
* Darguun is a frontier nation. Although recognized by the [[Treaty of Thronehold]], it doesn't abide by the common laws of the treaty nations. Law enforcement is unpredictable, and acts considered criminal in other nations are part of life in Darguun.
* A number of [[bugbear]]-dominated clans known as the [[Marguul]] inhabit southern Darguun. Some of the Marguul refuse to acknowledge the authority of the [[Ghaal'dar]] hobgoblins; these clans are especially dangerous and violent. 
* Lhesh [[Haruuc|Haruuc Shaarat'kor]] united the Ghaal'dar clans and seized control of Darguun nearly three decades ago. If you are a non-goblin from this land, you may have been born in captivity. Were you forced into bondage, or did you adopt Darguul customs and earn a place in their society? 


!! Darguul Characters

Darguun is a logical point of origin for [[goblin]], [[hobgoblin]],
or [[bugbear]] characters. When creating a Ghaal'dar character from Darguun, consider the following:

* ''Constant Struggle.'' Among the Ghaal'dar, you must constantly prove your strength and skill to gain and hold the respect of your kin. Ghaal'dar rarely kill in a casual battle; you might fight to prove a point but kill only when you must.
* ''Loyal to Your Clan.'' Challenge your peers as you like in times of peace, but when blades unsheathe for war, you stand by your clan—or those allies you have bonded with—until death. This loyalty doesn't extend to warriors of other Ghaal'dar clans.
* ''Muut and Atcha.'' Your ancestors once forged an empire even greater than [[Galifar]]. Perhaps you believe that your people can reclaim this lost glory. The Dhakaani were renowned for their martial skill and their discipline. //Muut// roughly translates to "duty"—your duty to your empire, your clan, and your commander. Muut is expected; if you have no muut, you have no place in battle. //Atcha// corresponds to "honor," especially your personal honor gained by virtuous deeds that transcend the expectations of muut. 

!! Cities and Sites

Thirty years ago, this region was part of [[Cyre]]. The goblins converted towns and villages and raised new settlements, but many ruins and abandoned farms remain.
The region is also peppered with dungeons dating back
to the ancient goblin empire; these can be found in the
vast [[Torlaac Moor]] or beneath the [[Khraal]] rainforest. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

Darguun was born in the [[Last War]], and the scars of its
birth are still raw. Most of the Cyran population fled the
goblin uprising, and those who remained were killed
or enslaved. As a result, many burnt-out farms and
abandoned villages have stood empty for decades. The
broken paths of the [[lightning rail]] make travel into the interior difficult, and only the largest cities offer the basic
services common elsewhere in the treaty nations.

Any significant settlement is likely the domain of a
single Ghaal'dar clan. While these clans give their fealty
to Lhesh [[Haruuc|Haruuc Shaarat'kor]], every clan lord holds absolute power
in their town. Some clans are friendly to outsiders and
welcome commerce. Others despise non-goblins. Lhesh
Haruuc has abolished slavery in [[Rhukaan Draal]], but
some of clan lords continue this practice.

Overall, Darguun is a nation that is still finding its
identity—a kingdom that seeks to be more than a seized
territory. The goblins carry the legacy of a mighty empire and stand in the shadow of the nations around
them. Haruuc wants to draw out the best in his people,
to harness their strengths and achieve their potential.
The rest of Khorvaire waits to see if the Ghaal'dar have
the will to remain a nation, and if Darguun can survive
when Haruuc passes away. 
The Dark Pack is an alliance of [[lycanthrope]]s, [[worg]]s,
and other bestial creatures in [[Droaam]] led by an [[elf]] werewolf
named [[Zaeurl]]. The Dark Pack bears a deep hatred for
followers of the [[Silver Flame]]. 

!! History of the Dark Pack

In the wake of the [[Lycanthropic Purge|Silver Crusade]], many [[lycanthrope]]s fled to [[Droaam]]. Most congregated in the [[Watching Wood]] under the leadership of the werewolf [[Zaeurl]]. However, there are a few independent lycanthropes
scattered across the region. At the end of the Purge, the power of the curse of lycanthropy was weakened, and most of these
survivors couldn't spread the curse to others; they could only
pass it to their offspring. Keen to avoid any chance of further
persecution, many of these renegade lycanthropes spent their
lives solely in animal form. Even today, most members of the
Dark Pack are born in animal form and consider it their true
form. The natural lycanthropes of [[Droaam]] have the ability to
speak in beast form, as [[worg]]s do, though this gift isn't passed
on to creatures they afflict with lycanthropy.

In time, [[Zaeurl]] forged an alliance between the renegade
[[lycanthrope]]s and the native worgs of the Watching Wood, and
this bond—the Dark Pack—remains strong to this day. However,
just as there are a small number of lycanthropes with no ties
to the Pack, there are worg packs scattered across Droaam.
Worgs would often ally with Barrens chibs (chieftains), and [[gnoll]]s of
the [[Barrakas]] clan often form bonds to [[worg]] companions. In
general, the people of [[Droaam]] are quite comfortable with the
presence of large predators, and it's polite to say //ta kuur//—You
speak?—to a beast you've never met before.

In recent years, the potency of the lycanthropic curse has returned. All lycanthropes can spread the curse, but the Daughters and Zaeurl both wish to avoid spreading lycanthropy—at least for the moment. The Dark Pack follows strict instructions—//don't bite unless you intend to kill.// As with [[troll]]s, most town guards understand this rule; if your friend picks a fight with a werewolf, sorry, it //has// to kill them after biting them; that's just a matter of public safety. [[Sora Katra]] is studying the curse of lycanthropy and may
develop ways to prevent accidental contagion... or instead,
she might develop a program of carefully managed infection to
create a new corps of lycanthrope soldiers.
The mightiest and most malevolent beings in [[Mabar]] are
known as the Dark Powers. Each embodies a particular
aspect of Mabar and rules a domain of linked [[layer]]s. Some
have been part of Mabar since the beginning of time, while
others have risen from the fragments consumed by the
Endless Night. Most of the Dark Powers are equivalent in
power to [[archfey]] or [[archfiend|overlord]]s, though they're even stronger
in the layer they're bound to, their seat of power. However,
they have a limited ability to act beyond Mabar, and can
only affect the Material Plane through [[warlock]]s or [[undead]]
servants.

!! The Dark Powers

These are the Dark Powers that are known on [[Eberron]], but there are many more in the shadows.

<<list-links-article "[tag{!!title}sort[title]]">>
The Dark River in [[Karrnath]] flows from [[Lake Dark]] into the [[Iceflow River]].
The Dark Sea lies in the virtually unexplored south, in the expanse between [[Argonnessen]] and [[Xen'drik]]. Its boundaries and dangers are little known, and the “dark” of its name refers less to its lack of sunlight in the winter months than to the
cloud of ignorance surrounding it. Sailors claim that certain regions of the Dark Sea have dramatic tides that create strong currents near the coasts, drawing ships in to
be smashed on reefs or rocks near land.
The Dark Six are the shadows of the [[Sovereign Host]].
These dark gods shape the world and are present at all
times, speaking to those willing to hear them. Where
the Sovereigns govern positive forces, the Dark Six are
the source of fears. [[Arawai]] and [[Balinor]] reflect the positive aspects of nature. The devastating storm, the earthquake, the wildfire? These are the work of the [[Devourer]].

The Dark Six and the [[Sovereign Host]] are opposite
sides of the same coin. If you believe in one, you acknowledge the existence of the other. The only question
is whether you fear the Six or revere them. Those who
choose to follow these sinister deities embrace darkness. A barbarian may thank the [[Fury]] for the gift of rage. An assassin walks the path of the [[Mockery]], while a
[[warlock]]'s pact may be a gift of the [[Shadow]].

The Dark Six inspire worship in different ways among
diverse cultures. Temples to the Dark Six appear in
[[Droaam]], along with wild revels driven by the [[Fury]]. The
Dark Six aren't worshiped openly elsewhere in [[Khorvaire]]; the gods' shrines are hidden, and it's more common to find a cult devoted to a single member of the Six
than a temple dedicated to the entire pantheon. 

!! The Six

These common names and attributes describe the Dark
Six as they are known in [[Khorvaire]]:

* The [[Devourer]] is the Sovereign of Wave and Whelm.
* The [[Fury]] is the Sovereign of Rage and Ruin.
* The [[Keeper]] is the Sovereign of Death and Decay.
* The [[Mockery]] is the Sovereign of Betrayal and Bloodshed.
* The [[Shadow]] is the Sovereign of Magic and Mayhem.
* The [[Traveler]] is the Sovereign of Chaos and Change.

!! Symbol

The Hexagram represents the entire pantheon of the
Dark Six, and each has their own symbol. However, since the Six
aren't worshiped openly in most of [[Khorvaire]], each sect chooses a unique symbol based on the nature of their
god. Followers of the [[Devourer]] might carry a shark's tooth or a piece of wood scorched in a wildfire. A [[Keeper]]
cult might use the nine-sided coin of [[Kol Korran]] with
the face disfigured. A particular sect uses these symbols
consistently, if not obviously. 

!! Rites

The Dark Six are a mirror of the [[Sovereign Host]] and
their worship uses similar rituals, including formal rituals conducted in song.

Each of the Six has their own rites. Followers of
the [[Fury]] engage in wild revels. Cults of the [[Devourer]]
gather around enormous bonfires. Cults of the [[Mockery]] conduct ritual combats or gather to torture captured enemies. 

!! Temples

Temples and shrines of the Dark Six hide behind disguises. A cult of the [[Mockery]] might gather in a slaughterhouse, while a shrine to the [[Shadow]] remains concealed in the deep stacks of a library. Dedicated temples
are built from dark stone, with six doors and the Hexagram engraved in the floor. 
Magical darkness spreads from a point you choose within 60 feet to fill a 15-foot-radius sphere for up to 10 minutes. The darkness spreads around corners. A creature with darkvision can't see through this darkness, and nonmagical light can't illuminate it.

If the point you choose is on an object you are holding or one that isn't being worn or carried, the darkness emanates from the object and moves with it. Completely covering the source of the darkness with an opaque object, such as a bowl or a helm, blocks the darkness.

If any of this spell's area overlaps with an area of light created by a cantrip (such as [[light]]), the spell that created the light is dispelled.
Darkweave fabric has strands of shadow
interwoven with black threads to produce a coarse but
beautiful cloth. A character wearing darkweave clothing has an advantage when hiding in low-light conditions.
Political pressure from
rival nations forced [[Aundair]] to recognize the [[Eldeen Reaches]] in the [[Treaty of Thronehold]], but few Aundairians are so willing to forgive the Reachers for what they see as a betrayal.
Foremost among those clamoring for a western war is
Lord Darro ir'Lain, the [[Queen|Aurala ir'Wynarn]]’s second warlord and
commander of the [[Knights Arcane]]. He has a detailed
plan to invade and conquer the Eldeen Reaches,
wresting the rich lands from the treacherous [[Wardens of the Wood]]. Many officials think the idea is folly, since [[Aundair]] is in no shape to mount a hostile
campaign, but Lord Darro is relentless. He agitates
for war, gathering support from nobles by making
promises he likely can’t keep. Lord Darro courts the
[[minister of magic|Adal ir'Wynarn]] at [[Arcanix]], believing that with the
aid of the minister—who is also the queen’s brother—he can force the queen to support his plan to invade and conquer the Reaches.
On the southern slopes of the [[Starpeaks]], east of
the [[Trumpet Mountains]], stands the once mighty community of Daskaran. Long ago, during the pre-[[Galifar]] kingdom of [[Daskara]], Daskaran was a vital trade center, but a disastrous fire swept through the city, reducing most of it to rubble. With few supplies left to enable them to survive the winter, the locals descended the foothills to winter in the south. They never returned.

Three centuries later, Daskaran still hasn’t recovered—old stone buildings, many scorched still, line the neat roads, shadowed by the white-needled pines blanketing the hills. Large temples dedicated to [[Dol Arrah]] and the [[Silver Flame]] flank a courtyard
dominated by a statue of [[Tira Miron]] astride a horse, with sword raised. As the sun marches across the heavens, the shadow cast from the sword marks the hours of the day.
//The walls of the chamber were studded with skulls. They were the only source of light in the vast cavern, a hundred skulls glowing like coals in a fading fire. Daine remembered the stories he'd heard as a child, how Sora Maenya would trap the souls of those she devoured. He saw a child's skull peering from a crack in the wall and cursed the gods that would allow such horrors to exist.//

//"Sweet, she was." The voice was the rasp of steel against the whetstone, soft and harsh.//

//A grove of darkwood oaks stood in the center of the cavern. Now Daine saw the three women standing amidst the trees. The speaker was tall and dark, her limbs as gnarled as the dead trees around her, her leather jerkin the color of dried blood. Her companion was an elf-maiden with snow-white skin and glittering blue eyes, a cascade of midnight hair framing her perfect features; though he knew it was an illusion, Daine still felt his heart skip a beat. A third figure watched from the shadows, red eyes peering from the deep hood of her gray robe.//

//"Greetings, traveler," the elf-maid said, and her voice was honey and song. "You have traveled far to reach this place. Wolf and worg, briar and bog, a path long and hard."//

//"Doomed and done," the giantess growled.//

//"Just begun," the graycloak whispered.//

//Daine dropped to one knee. "My ladies," he began, but the elf-maid stopped him with a raised hand. Her features slowly shifted. Now she was human, with eyes like emeralds and hair the color of fire.//

//"We know your purpose, child. My sister speaks of you often. You seek the Blade of Dol Azur. And we can grant your desire. But first you must fulfill ours."//

!

Every child in [[Aundair]] is raised on tales of the terrible [[Sora Maenya]], and any [[Brelish|Breland]] bard can sing a dozen songs about the fools who thought to match wits with [[Sora Katya]]. Few people believed these myths, and no one expected these [[hag]]s to emerge at the head of an army of war [[troll]]s and skullcrusher [[ogre]]s—a power unseen in the west since the time of [[Dhakaan]]. Within a decade the hags established control over the lands beneath the [[Byeshk Mountains]], bringing order to the region for the first time in seven thousand years.

Many questions linger over this newborn nation of [[Droaam]]. For centuries the hags were content to lurk in waste, wood, and swamp. What caused them to leave their haunts and claim a kingdom? Do they intend to extend their control beyond the [[Graywall Mountains]] and claim [[human]] subjects, or is a nation of monsters all that they desire? Is a nation their only desire, or is it only the first step in a far greater scheme?

Individually, the Daughters of Sora Kell are three of the most powerful beings on [[Khorvaire]]. [[Sora Maenya]] and [[Sora Katya]] are monsters of legend, and this should be taken into account when dealing with them. They have faced and defeated the champions of centuries past and will not be easily impressed or intimidated. Through [[Sora Teraza]], they already know much about the adventurers before they ever encounter them; a DM should make full use of this knowledge.

There are many ways to involve the Daughters in a campaign, and many of them don't involve fighting with the player characters. Sora Teraza is one of the most gifted oracles of the age, and the party may need her mystical insights. Sora Katya is engaged in schemes stretching across Khorvaire, and the party may get caught up in the machinations of [[Daask]] or [[House Tharashk]]'s dealings with the [[hag]]. The hags possess many forgotten secrets and ancient treasures plucked from the depths of the [[Demon Wastes]] and the ruins of the [[Dhakaan]]i Empire. They are often willing to bargain with adventurers, trading treasures for services or making potentially deadly wagers. The tales of Sora Katya are full of seeming triumphs that turn to disaster. Through Sora Teraza, the Daughters know much of the future, so that a seeming victory over them may have long-term consequences the adventurers didn't anticipate and which can transform what seemed like success into a hollow victory or worse. Perhaps the Blade of Dol Azur will allow you to kill Haskalask the Black, but perhaps that's just what the Daughters want.

The Daughters' mother was Sora Kell, one of thirteen immortal night hags said
to have been created by [[Eberron and Khyber|Progenitor Dragons]] at the dawn of
time. Each had a different father; in some stories these were
[[fiend]]s, in others, [[giant]]s. Regardless, they possess inherited
power, which has only increased over centuries of schemes
and adventures. While the Daughters are usually spoken of
together, each is a legend in her own right; they each have their
own goals and distinct personality, and each one can offer
different hooks for story or adventure. 

!! The Three Sisters

[[Sora Katra]], the Voice of Droaam<br/>
[[Sora Maenya]], the Fist of Droaam<br/>
[[Sora Teraza]], the Dream of Droaam<br/>
''District Type:'' Professionals<br/>
''Buildings:'' Temples ([[Olladra]] and [[Onatar]]), shrine
([[Boldrei]]), average lodging (15), upscale food (11),
average food (25), exotic trades (11), upscale trades
(15), average trades (40), upscale services (40), average services (80), upscale residences (40), average
residences (80)<br/>
''First Impression:'' Small businesses cluster in
towers surrounded by residential areas, and look
little different than the homes around them.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Ambassador Towers]] (northeast); [[Dragon Towers]] (south); [[Sword Point]] (southeast); [[Vallia Towers]] (below); [[Mithral Tower]] (above)

Dava Gate is a quiet district where professional
services outnumber trades. Architects and cartographers, barristers and sages, healers and fortunetellers all coexist in Dava Gate's small business
parks. These clusters of professionals are sometimes
themed by the type of service offered—for example,
one floor of Calsin Tower includes a number of
services devoted to animals: an animal trainer, a
kennel, a mews, a stable, and a veterinarian.
The [[Upper Menthis]] representative on the [[city council|Sharn Council]] is [[Thurik Davandi]], an accomplished tailor specializing in [[glamerweave]] garments.
He also secretly supplies [[darkweave]] clothing to the
[[Boromar Clan]], and his goods are at least partly to
blame for the [[City Watch|Sharn Watch]]'s inability to put a damper
on the Boromar Clan's criminal activities.
The Dawn Empress of the [[Amaranthine City]] of [[Irian]] is the first and greatest of the [[Architect]]s. Her defining principle is growth, the opportunity to reach your full
potential, and all [[layer]]s of her realm reflect this. 

The Dawn Empress is a [[celestial]] figure wreathed in light, though she can
assume the shape of any [[humanoid]] or [[angel]]. She presides over
festivals and tends the needs of her people, but she spends
much of her time focused on the cultivation of her planar seeds.
She occasionally works with mortals, typically [[warlock]]s; while
she may have missions tied to planar seeds or to clashing
with agents of [[Mabar]], she also gives her agents tasks that are
designed to help them with their own growth and evolution.

The [[Mabar]]an counterpart of the Dawn Empress is the [[Empress of Shadows]].
A dawn shard is special variety of Eberron [[dragonshard]] found only in [[Q'barra]]. Dawn shards are pale orange with crimson threads, and possess remarkable magical qualities. They are worth five times as much as standard [[dragonshard]]s of similar size.

The miners of [[Q'barra]] have yet to discover the source of this unusual power. The truth is that dawn shards are charged with the divine power of the [[Silver Flame]]. As a result, using these dragonshards may result in unexpected effects. 

When planted in the earth throughout the jungle surrounding [[Haka'torvhak]], dawn shards form a "web of light" that helps bind the [[overlord]] [[Masvirik]], the Cold Sun. Together with the [[dusk shard]]s that sequester Masvirik's darkness, the Cold Sun remains bound. 
[[Chervina the Architect|Chervina d'Ghallanda]] maintains a retinue of several hundred masons and other artisans—and enough guards to keep the local monsters and bandits at bay—so that she can build new
House [[Ghallanda]] [[enclave]]s. These Dawn-Builders
never know where they’ll be going next, because
Chervina doesn’t announce the location of her next
project in advance. They might spend their summer
building an enclave in the [[Shadow Marches]], then construct another in the [[Eldeen Reaches]] in the autumn, before heading to the [[Aundair]]–[[Breland]] border to start
an enclave that Chervina says must be finished before
spring. Sometimes Chervina employs mercenaries
from House [[Deneith]] or rangers from House [[Tharashk]]
to keep her Dawn-Builders safe, but often she relies on
House Ghallanda guards or local adventurers.
Dawn's glory is a flower that only grows in [[manifest zone]]s to [[Irian]]. It has euphoric properties and is used to make a drug often called fool's hope or liquid courage. This drug
grants temporary immunity to fear, but with the side effect of
encouraging dangerous and foolhardy behavior; it's strictly
illegal in [[Sharn]], due to the risk of users jumping off bridges.
''Date: '' [[20 Olarune|Khorvaire calendar]]

The nation of [[Cyre]] was destroyed in 994 YK on this
date, known as the Day of [[Mourning]]. Although that
event had an impact on everyone in [[Khorvaire]], this day
of remembrance is especially significant to Cyran survivors. It is a time when Cyrans come together to recall
their lost kingdom. Some tell stories or sing traditional
songs, ensuring that their culture isn't forgotten. Other
survivors still seethe with anger at the enemies who
brought Cyre down, and thus far the holiday has been
marked by a brief upturn in violence.
Dayne Bay off the coast of [[Frostfell]] is named after Lord [[Boroman ir'Dayne]], founder of the [[Wayfinder Foundation]], for his pioneering expedition to the frozen continent decades ago. The bay is part of the [[White Sea]].
The borders of the [[Mournland]] are defined
by a wall of thick, gray mist that rises thousands of feet
into the air and forms a canopy that hides the ruined
realm even from above.

The area covered by the mist is a shadowy, muffled region devoid of life, sunlight, and sound. The wall of mist
ranges in thickness from a few hundred feet to as much
as five miles. Travelers who linger in the mist suffer a
growing sense of claustrophobia and despair. It's easy
to get lost in the impenetrable fog, and some travelers have wandered in circles, unable to find their way either
through the mist or back outside it, until their food or
water ran out or they blundered into the path of some
mutated terror. 

Patches of mist and less oppressive fog dot the interior of the [[Mournland]], but the worst effects of the mist
are confined to the border region.
A death dog is an ugly two-headed hound that roams plains and deserts, especially those close to [[manifest zone]]s to [[Mabar]]. Hate burns in a death dog's heart, and a taste for [[humanoid]] flesh drives it to attack travelers and explorers. Death dog saliva carries a foul disease that causes a victim's flesh to slowly rot off the bone.
A death kiss is a lesser [[beholder]]-kin. Instead of magical eye rays, it has ten long tentacles, each ending in a mouth full of teeth. In coloration and shape it is similar to the beholder that dreamed it into existence, but its hue is more muted.

A death kiss survives solely on ingested blood, which it uses to generate electrical energy inside its body. Paranoid about dying from starvation, it obsessively drains even little creatures such as rats in an effort to stave off this fate for as long as possible. After it drains its prey, it abandons the corpse to scavengers. When underground, it uses its tentacles as feelers, prodding and examining the environment in all directions. Above ground, it usually keeps its tentacles retracted when on the hunt, then lashes out and extends them to their full length to catch opponents off guard.

A death kiss lacks the combat finesse and intelligence of a beholder. It might attempt an unusual maneuver to control its prey (such as flying up while grappling), but in most cases, it attaches one or more of its tentacles to a creature and drains blood until its prey collapses. If it is in a superior position and its opponent poses no threat, it might toy with its food, slowly squeezing and draining the life out of a creature.
You touch a creature and grant it a measure of protection from death. 

For up to eight hours, the first time the target would be incapacitated as a result of taking damage, the target instead only suffers a minor injury, and the spell ends.

If the spell is still in effect when the target is subjected to an effect that would kill it instantaneously, that effect is instead negated against the target, and the spell ends.
Death's Finger is a channel between [[Farlnen]] and [[Stonespur]] in the [[Lhazaar Principalities]]. It connects the [[Bitter Sea]] to the [[Straits of Orthoss]].
When remarkable [[elves|elf]] die, they are preserved beyond
death. Most are tied to [[spirit idol]]s, statuettes that preserve
the soul and prevent its dissolution in [[Dolurrh]]. But others are
raised as deathless, [[undead]] similar to [[Mabar]]an [[oathbound|mummy]] but sustained by positive energy. This can be drawn from [[Irian]] [[manifest zone]]s—such as the one in [[Shae Mordai]]—but it is also generated by love and
devotion. Deathless soldiers guard the catacombs
and temples, and deathless sages and councilors share their
knowledge and wisdom with their descendants. Living elves are protected and served by their deathless ancestors, and in return, they sustain them with their prayers.

Over time, the
deathless can rise to an even greater state, becoming beings of
pure spirit with little need for a body. These spirits, known as
ascendant councilors, reside in the great city of [[Shae Mordai]],
and it is when their spirits join together in a mystical gestalt
that they wield [[divine power|divine magic]].

Many outsiders assume that the ascendant councilors //are//
the [[Undying Court]], and it's true they are the source of its power.
But the Undying Court refers to //all// the undead guardians of
the island, from the soldiers to the [[spirit idol]]s. As an [[Aereni|Aerenal]] elf, you may not expect to become an ascendant councilor—this is a process of
evolution that typically takes thousands of years—but you can
aspire to join the Undying Court after death.

Most Undying soldiers are considered [[creature tier]] 2, but the most powerful deathless—including the ascendant councilors—are tier 3.
The forging of a pact between a [[warlock]] and a patron is no minor occasion—at least not for the warlock. The consequences of breaking that pact can be dire and, in some cases, lethal. A warlock who fails to live up to a bargain with a [[Mabar]]an patron runs the risk of rising from the dead as a deathlock, a foul [[undead]] driven to serve its otherworldly patron from beyond the grave.

An extraordinarily powerful [[necromancer|necromancy]] might also discover the dark methods of creating a deathlock and then bind it to service, acting in this respect as the deathlock's patron.
''District Type:'' Adventurer's quarter<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]]),
shrines ([[Dol Dorn]], [[Olladra]], the [[Mockery]]), average
lodging (25), poor lodging (45), average food (20),
poor food (60), upscale trade (3), average trades (25),
poor trades (60), average services (20), poor services
(60), average residences (20), poor residences (80)<br/>
''First Impression:'' People from all walks of life
and all corners of [[Khorvaire]] can be found in
Deathsgate. Former soldiers and war [[wizard]]s rub
shoulders with explorers and aspiring [[artificer]]s,
and conversations in half a dozen languages can be
heard at any given moment.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Little Barrington]] (southwest); [[Dancing Shadows]] (north); [[City of the Dead]] (east); [[Little Plains]] (bridge, northwest); [[Dragoneyes]] (below); [[Dalan's Refuge]] (above)

Officially, Deathsgate takes its name from its proximity to [[Halden's Tomb|City of the Dead]]; a massive bridge connects the district to the necropolis, and funerary services are
often held in the small temples of the district. But
over the centuries, Deathsgate has become a home for
those who challenge death on a daily basis—explorers,
adventurers, and mercenaries of all stripes. Whether
they are looking for companionship, spellcasting, or
equipment, a party of adventurers should be able to
find what they seek in Deathsgate.

Like its counterpart in [[Upper Dura]], [[Clifftop]],
Deathsgate offers an exceptional range of services,
but these are rarely the best the city has to offer. Many
magic items are available, but the ceiling on prices keeps characters from acquiring exceptionally powerful items. However, the shops of Deathsgate are more
than happy to buy or sell partially used charged items.
The pawnshops generally offer 45% of value for almost
any sort of goods, except those that are obviously stolen.
Occasionally a fence can be found here, though usually
this requires a trip to [[Dragoneyes]] or [[Lower Dura]].

While similar to [[Clifftop]] in many respects,
Deathsgate has a less savory reputation. While the
explorers of Clifftop often seek to gain knowledge or
to help people in need, Deathsgate caters to those who
simply love gold or bloodshed. The people of Deathsgate are not necessarily evil—but they don't care about
the moral consequences of their actions.

A number of [[dragonmarked house]]s maintain
outposts in Deathsgate. House [[Jorasco]] maintains a
large house of healing and does a brisk trade. House
[[Deneith]] has a small [[enclave]] from which it recruits
many of its [[Blademark|Blademarks Guild]] warriors. House [[Sivis]] has an
office of the [[Speakers Guild]], including a message
station, translation services, and a few barristers who
specialize in the many concerns of adventurers. 

Other businesses in Deathsgate include ''Ancient Blades'', a mystical forge that deals in magic arms and armor; ''Dark Words'', a dealer in scrolls; and ''Bottled Silver'', a potion merchant.

!! Noteworthy Locations

* The [[Deathsgate Guild]]. A society where adventurers can hone their skills and seek profitable work. The Deathsgate Guild has a sinister reputation, earned because its members will do anything in pursuit of success. 
* [[Karr'Aashta's Investigations]]. A [[Tharashk]] inquisitive agency that specializes in jobs dealing with the [[Cogs]].
* The [[Guild of Starlight and Shadows]]. The guildhall of one of [[Sharn]]'s most prestigious [[arcane order]]s. A reliable source for arcane spellcasting services. 
* [[Maynard's Menagerie]]. This [[Vadalis]] storefront deals in exotic pets and animal companions, along with barding and other useful gear. 
* [[Redblade's]]. A comfortable tavern catering to the adventurers of the [[Deathsgate Guild]]. Redblade is rumored to have a side business selling [[poison]] and venoms. 
Adventurers who are willing
to take on any job and to do whatever it takes to triumph
might find themselves suited for membership in the
Deathsgate Guild. Named for its proximity to the [[City of the Dead]], the district of [[Deathsgate]] prides itself on
being a haven for those who challenge death on a daily
basis. The guild's founder, [[Kassh "Blackaxe" Droranath|Kassh Droranath]],
doesn't care how his members do their jobs, as long as
they don't fail. 

The Deathsgate Guild enclave includes a small
shrine to the [[Mockery]], a god many of the Deathsgaters secretly revere. However, this shrine is carefully hidden, and new members are vetted before
they are allowed to find out about the shrine. 
This box contains a set of parchment cards. A full deck has 34 cards; a deck found as treasure is usually missing a few cards.

The magic of the deck functions only if cards are drawn at random (you can use an altered deck of playing cards to simulate the deck). You can draw a card at random from the deck and throw it to the ground at a point within 30 feet of you.

An illusion of one or more creatures forms over the thrown card and remains until dispelled. An illusory creature appears real, of the appropriate size, and behaves as if it were a real creature, except that it can do no harm. While you are within 120 feet of the illusory creature and can see it, you can move it magically anywhere within 30 feet of its card. Any physical interaction with the illusory creature reveals it to be an [[illusion]], because objects pass through it. Someone who visually inspects the creature may be able to identify it as illusory. The creature then appears translucent.

The illusion lasts until its card is moved or the illusion is dispelled. When the illusion ends, the image on its card disappears, and that card can't be used again.

|!Playing Card |!Illusion |
|Ace of hearts |[[red dragon]] |
|King of hearts |four knights |
|Queen of hearts |[[succubus or incubus|incubus/succubus]] |
|Jack of hearts |an [[Eldeen|Eldeen Reaches]] [[druid]] |
|Ten of hearts |[[cloud giant]] |
|Nine of hearts |[[ettin]] |
|Eight of hearts |[[bugbear]] |
|Two of hearts |[[goblin]] |
| | |
| | |
|Ace of diamonds |[[beholder]] |
|King of diamonds |[[Arcanix]] archmage and mage apprentice |
|Queen of diamonds |[[night hag]] |
|Jack of diamonds |assassin |
|Ten of diamonds |[[fire giant]] |
|Nine of diamonds |[[oni]] |
|Eight of diamonds |[[gnoll]] |
|Two of diamonds |[[kobold]] |
| | |
| | |
|Ace of spades |[[lich]] |
|King of spades |[[Silver Flame]] [[cleric]] and two acolytes |
|Queen of spades |[[medusa]] |
|Jack of spades |elite soldier |
|Ten of spades |[[frost giant]] |
|Nine of spades |[[troll]] |
|Eight of spades |[[hobgoblin]] |
|Two of spades |[[goblin]] |
| | |
| | |
|Ace of clubs |iron [[golem]] |
|King of clubs |four bandits |
|Queen of clubs |[[erinyes]] |
|Jack of clubs |[[Carrion Tribes]] berserker |
|Ten of clubs |[[hill giant]] |
|Nine of clubs |[[ogre]] |
|Eight of clubs |[[Jhorash'tar]] [[orc]] |
|Two of clubs |[[kobold]] |
| | |
| | |
|Jokers (2) |You (the decks owner) |
Under the foundries of [[Fernia]], tunnels extend down below
the [[Sea of Fire]] into the earth below. These are the domains of
the [[dao]]. Like the foundries above them, each has a distinct style
tied to the sensibilities of the dao who dwells there. Streams
of lava and pools of fire run through the halls, along with veins
of metal and minerals. While not as luxurious as the estates of
the [[efreeti]], these often showcase the wondrous creations of the
dao in residence; adventurers could find a hall whose walls are
decorated with a thousand swords, or a brass garden filled with
cunning [[construct]] songbirds. But some dao are paranoid, and
deep halls can also contain a host of powerful and deadly traps.
This mining operation in the
[[Seawall Mountains]] of northern [[Zilargo]] is a collaboration
between House [[Kundarak]], Clan [[Mroranon]] (possibly
the best miners and smelters in [[Khorvaire]]), House
[[Tharashk]] (which found the site in the first place),
and House [[Sivis]] (which handles relations with the
[[Zilargo]] government). This mine extracts pure platinum from veins more than a mile below the surface.
Clan Mroranon’s smiths make ingots of the platinum
bullion, which House Kundarak uses as internal currency when transferring wealth from a Kundarak bank to a national government or to another Kundarak
bank. Security is omnipresent, both to prevent theft by
surface dwellers and because the miners sometimes
disturb monsters from the depths of [[Khyber]].
Like other [[daelkyr]], [[Valaara]] is bound within a [[demiplane]] in
[[Khyber]]. However, Valaara has bred burrowing worms that chew
through the fabric of reality, carving a web of passages between
her Deepest Hive and the world above. An organization that
discovers the upper layers of these tunnels could use them to
move swiftly across the world, entering a tunnel in the [[Lhazaar Principalities]], traveling five miles, and emerging in [[Sarlona]] or the [[Eldeen Reaches]]. Smugglers or explorers might make use of this wonder, never knowing what lies in the deeper tunnels—until Valaara's minions seize them, or until they are consumed by the psychic influence of the Crawling Queen. While tunnels to the Deepest Hive can appear anywhere that suits the story, they are also less permanent than the ties between [[Eberron]] and
the realms of many other daelkyr. It's possible to collapse a passage and break a connection.

The upper tunnels of Valaara's realm are usually formed
of fused glass-like material, then as explorers delve deeper,
they find the walls formed of chitin and muscle, with insects
swarming across every surface. One might discover pulsing
cocoons, nests of slumbering [[purple worm]]s, or chambers lined
with thousands of glowing eggs. And in the heart is the Deepest
Hive itself, where Valaara weaves its webs and conducts its
sinister experiments.
This suit of lightweight, skin-tight armor is made from tiny blue scales that glitter in the sunlight. The wearer of this armor can swim twice as fast as normal, breathe underwater, see in darkness out to 60 feet, and survive the intense pressure of deep water.
The Deepwood is a forest in the [[Shadow Marches]]. It is split by a tributary of the [[Glum River]].
Some of the gap in House [[Deneith]]’s income since the end of the [[Last War]] has been filled by an explosion in the demand for Deneith’s bodyguards and garrison troops. Trade caravans, mining operations, and ambitious noble families all need protection.
This set of dominoes comes with one-hundred white
pieces and one black piece. The dominoes can be placed
on any surface, even vertical walls and ceilings, and will
stay upright until removed or knocked over by another
domino.

You can speak the set's command word to cause the black piece to fall over, triggering a chain reaction that knocks over any dominoes arranged in a row.
The Demesne of Shadow, originally located in
[[Metrol]], the one-time capital of [[Cyre]], was reestablished
in [[Sharn]] following the Day of [[Mourning]]. This [[Phiarlan]] [[demesne|Demesnes]]
teaches the arts of deception—illusion and puppetry
as well as oratory and acting. A storyteller learns his
tales at the [[Demesne of Memory]], but at the Demesne of
Shadow he learns how to bring them to life.
[[Phiarlan]] tradition divides the arts into five disciplines.
Although Phiarlan [[enclave]]s can include
those who practice any of the disciplines, the most important enclaves are
the five centers known as demesnes
where the greatest artists and teachers
of each discipline can be found.

!! The Demesnes

<<list-links-article "[tag{!!title}sort[title]]">>
The demiplanes of [[Khyber]] are somewhat like the layers of other
[[plane]]s. Each demiplane has limited space, though it could be
as small as a house or as large as a nation. Its borders might be
defined by impassible physical barriers or walls of force, or the
pocket of space could wrap around—if you walk far enough in
one direction, you'll find you've looped back to where you began.

Reaching a demiplane requires a portal. In some cases, travel
also requires rituals or planar conjunctions, and some portals
may be impassable, sealed by the ancient wards of [[dragon]]s
or [[Gatekeeper|Gatekeepers]] [[druid]]s. However, many portals are not only
active, but nearly imperceptible; adventurers walking down
a tunnel may pass through a portal to the [[Ironlands]] without
ever knowing it. Portals are static, remaining in one place, and
as long as one remains open, adventurers can always retrace
their steps to return to it. Demiplanes may have two or more
portals, each leading to anywhere on the Material Plane. The
realm of [[Dyrrn]] the Corruptor has portals beneath the [[Shadow Marches]] and the [[Ironroot Mountains]], while both the [[Kech Shaarat]] [[goblinoid]]s of [[Darguun]] and the [[Ghaash'kala]] [[orc]]s of the [[Demon Wastes]] make use of portals tied to the [[Ironlands]]. As such, demiplanes can allow rapid travel across long distances;
adventurers could enter a demiplane below [[Q'barra]], walk what
seems like only a mile, then emerge from a tunnel into [[Breland]].

Demiplanes have much in common with Eberron's thirteen
[[plane]]s. Natural laws may not apply within, and time, space, or
other elements may behave in unnatural ways. A demiplane
could have some of the properties of another plane, like the
Burning Bright property of [[Fernia]] or the Primordial Matter
property of [[Lamannia]]. But there's no universal theme that
unites all demiplanes; each one is entirely unique. Some sages
say that these demiplanes are Khyber's dreams. Others believe
that demiplanes are unfinished ideas—early drafts of reality or
seeds that never quite became planes.

While demiplanes are usually limited in size, there's no
inherent logic to their construction. It's possible to be a mile
below the surface of Eberron when you discover a valley that
appears to be open to the sky... but it's not the sky of [[Eberron]]!
Unlike the planes, the demiplanes of [[Khyber]] don't contain any
of Eberron's celestial objects—there could be moons, rings,
even suns in the sky, but they'll be entirely unfamiliar.
While there's no common theme that unites all demiplanes,
there are three common categories of demiplane: hearts,
prisons, and shadows.

!! Heart Demiplanes

The [[overlord]]s—[[Rak Tulkhesh]], [[Sul Khatesh]], and others—are
said to be Khyber's first children. They were the first [[fiend]]s to
physically manifest, and each overlord brought forth a host of
lesser fiends. When a fiend dies, its essence returns to [[Khyber]].
Each one is bound to and reincarnated in a particular demiplane
within Khyber—the heart of an overlord. This is one reason the
overlords can't be permanently destroyed; each is part of the
architecture of Khyber itself, and the overlord's form that can be
encountered in Eberron is simply a projection of its essence. To
defeat the overlords, the champions of the [[Age of Demons]] used
the [[Silver Flame]] to bind their immortal essence, preventing
them from returning to their heart demiplane to reform. This
essentially severed the brain from the heart—but the heart
demiplanes still exist. The lesser servants of the overlord—its
[[rakshasa]] and other fiend minions—return to the heart when
they reform, and should an overlord's bonds be broken, it will
recover its full strength in its heart realm.

Heart demiplanes are relatively small, around the size of a
large city. Each reflects the overlord it's tied to in appearance
and properties. Just as the shard-prison of an overlord's spirit
can affect a region, portals to a heart realm often affect the
surrounding area; what's believed to be a manifest zone to
[[Shavarath]] might instead be a portal to the [[Bitter Shield]].
While the overlords aren't consciously present in their hearts,
their essences still permeate them. Heart realms are typically
inhabited by a host of lesser fiends bound to that overlord.
Many have no desire to return to Eberron until their overlords
are free, while others serve in the [[Lords of Dust]], using the
heart as a refuge. A couple hearts are described below, but
there are at least thirty—one for each overlord.

* the [[Bitter Shield]]: [[Rak Tulkhesh]]
* the [[Tower of Shadows]]: [[Sul Khatesh]]
* [[Ashtakala]], the Demon City, which extends into the Material Plane

!! Prison Demiplanes

When something is described as being “trapped in Khyber,” it
usually means it's trapped in a demiplane somewhere in Khyber.
The most infamous prisoners of Khyber are the [[daelkyr]], but
there may well be others—either immortal spirits or mortal
creatures that were trapped in the demiplane by their enemies.
[[Dyrrn]] the Corruptor dwells in the [[Palace of Sinew]], and
[[Belashyrra]] in the [[Citadel of Lidless Eyes]]. [[Valaara]] is bound in
the [[Deepest Hive]]. It's said
that the daelkyr [[Orlassk]] dwells in a fortress carved into a giant
gargoyle that roams the tunnels of Khyber; it could be that
the gargoyle exists in Orlassk's prison realm, or perhaps the
massive creature contains a portal to its prison.

When dealing with a prison demiplane, the DM will have to
decide the limitations of the portals. In the case of the daelkyr
demiplanes, the daelkyr can't leave them, but other creatures
can freely enter or depart. So Dyrrn's minions can swarm out
of the Palace of Sinew, but as long as the [[Gatekeepers]]' [[seals|dimensional seal]]
remain intact, Dyrrn itself cannot leave. The nature of the
binding and the power of the daelkyr is such that they have
shaped their demiplanes in their image, but lesser creatures
could be trapped in more traditional prisons.

!! Shadow Demiplanes

Unlike heart and prison demiplanes, shadow demiplanes serve
no clear purpose. They aren't prisons or fortresses of evil,
but rather, strange reflections of the world. Much like [[Xoriat]],
they often defy natural logic—and this often gives them great
value. Beneath the [[Ironroot Mountains]] in the [[Realm Below]], the
[[dwarves|dwarf]] found a realm where precious stones grow on trees.
In the [[Vale of the Inner Sun]], creatures don't age.

Many sages call these “shadow demiplanes” because many
seem to be shadows of other planes; the [[Abyssal Forest of Khaar]] is a reflection of [[Lamannia]], while the [[Ironlands]] bears some resemblance to [[Shavarath]]. But in fact, demiplanes of Khyber have no ties to the other planes, nor are they touched by
the natural influence of Eberron or the celestial light of [[Siberys]].
Perhaps the concepts woven into these demiplanes are echoes
of Khyber's dreams or hints of what might have been... or
perhaps their resemblance is inexplicable coincidence.

Shadow realms may hold important resources that can be
used or harvested—but these regions always have a malevolent
aspect. [[Fiends|fiend]] are common, and even mortal creatures that
dwell there are sinister. Remaining in a shadow realm for too long is usually an invitation to corruption. There are countless shadow demiplanes, some small and others vast; those
mentioned here are just a few examples. 

* the [[Abyssal Forest of Khaar]]
* the [[Ironlands]]
* the [[Vale of the Inner Sun]]

!! House Orien and Demiplanes

Demiplanes can serve as wormholes to distant locations—a valuable means of transporting people and goods! [[Orien]] has discovered one such passage; its [[enclave]]s in the cities of [[Passage]] (in [[Aundair]]) and [[Varna]] (in the [[Eldeen Reaches]]) are built above portals that connect to a tiny, safe shadow
demiplane. This allows Orien to move between these two
cities within minutes. However, the two cities are already
close and well connected, so this has remained a secret
resource instead of being put to widespread commercial use.

Recently, however, the [[war|Last War]] and the [[Mourning]] have
disrupted many of Orien's trade routes, and the development
of the [[airship]] is threatening the house's dominance of
overland travel. Desperate to regain security, Baron Kwanti
d'Orien is actively searching for new demiplane channels. He
dreams of finding a route providing safe, swift passage across
the Mournland, which could become an Orien commercial
route or even carry a [[lightning rail]]. But Kwanti has no idea just
how dangerous demiplanes can be, and in these efforts, he
could easily open doors that should've been left closed. 
Demons are the embodiment of chaos and evil—engines of destruction barely contained in monstrous form. Possessing no compassion, empathy, or mercy, these [[fiend]]s exist only to destroy. The mightiest of these are the [[overlord]]s, which shaped the world to match their evil whims during the [[Age of Demons]].

While many demons are children of [[Khyber]], native to the [[demiplane]]s, they can also be found in [[Fernia]], [[Dolurrh]], [[Shavarath]], and other [[plane]]s, representing some destructive or savage aspect of those planes.

!! Types of Demon

<<list-links-article "[tag{!!title}sort[title]]">>
''Capital:'' None<br/>
''Hallmarks:'' Fiends, pestilence 

Rivers of lava cut across plains of black sand and volcanic glass. The only vegetation consists of blood-red
moss and a thick layer of shimmering slime. A jagged
rock formation might be a piece of an ancient wall, if you
stretch your imagination.

Tens of thousands of years ago, [[fiend]]s ruled [[Khorvaire]]. The Demon Wastes held the seat of power for
some of the mightiest [[archfiend|overlord]]s, home to cities of
[[rakshasa]]s and [[demon]]s. Most of these foul entities perished or fled long ago, but a few still linger in this place
even as new ones crawl up from the depths of [[Khyber]].
A handful of primordial ruins sustained by dark magic
dot the bleak landscape—ruins that may still be home to
fiends and their treasures.

The [[Shadowcrags]] and [[Icehorn Mountains]] separate the Demon Wastes from the [[Eldeen Reaches]]. A series of canyons known as the [[Labyrinth]]
further separate the Demon Wastes from the rest of
[[Khorvaire]]. Due to ancient warding magic, any creature
that wishes to leave must do so through the Labyrinth.
These passes are guarded by the [[Ghaash'kala]], tribes of
[[orc]]s sworn to contain the evils of the Wastes. Beyond
the Labyrinth, the mortal inhabitants of the Demon
Wastes include a brutal people known as the [[Carrion Tribes]]. Each tribe is devoted to an [[archfiend|overlord]], and they
engage in endless battles against the [[Ghaash'kala]] and
the other Carrion Tribes.

If you're creating a character from the Demon Wastes,
you're likely associated with either the Ghaash'kala or
one of the Carrion Tribes. 


!! Interesting Things About {{!!article}}{{!!title}}

* A variety of [[fiend]]s inhabit the Wastes, including [[devil]]s, [[rakshasa]]s, and [[demon]]s. These creatures are spawned by [[Khyber]], not the Outer Planes.
* The Demon Wastes are riddled with portals to abyssal demiplanes, unearthly realms populated by fiends and other horrors. These inner realms include vast and twisted forests, living oceans, realms of rusted iron, and stranger places. 

!! Ghaash'kala Characters

The [[Ghaash'kala]] are primarily [[orc]]s, but their numbers
include a few [[half-orc]]s and members of other races.
They devote their lives to guarding the [[Labyrinth]] and
containing the evils of the Wastes. When creating a
Ghaash'kala character, consider the following: 

* ''The Binding Flame.'' The Ghaash'kala worship Kalok Shash, the "Binding Flame." Fundamentally the same religion as the [[Silver Flame]], Kalok Shash is a harsh faith that requires all able-bodied folk to fight in the endless war against the forces of darkness.
* ''Sacred Champions.'' As a Ghaash'kala, you are a champion of the Binding Flame. A [[paladin]] sworn to the Oath of Vengeance, a barbarian on the Path of the Zealot, and a [[cleric]] of the Light or War domain all represent a logical path for a Ghaash'kala character. Outlander and hermit are appropriate backgrounds, reflecting your harsh upbringing or religious devotion. 

!! Carrion Tribes

The [[Carrion Tribes]] descend from explorers and refugees twisted by the evil in this realm. Explorers usually encounter these savage folk as enemies, but occasionally a hero emerges from the shadows. When creating a character from the Carrion Tribes, consider the following:

* ''Sworn to an Overlord.'' Your tribe is devoted to an [[archfiend|overlord]]. This can serve as the roots of a [[warlock]]'s pact or the inspiration for a barbarian's rage. Are you still loyal to your dark lord, or did you break free from its influence? Either way, work with the DM to develop the details of your overlord.
* ''Child of a Savage Land.'' You were born into a lawless realm where violence was the only constant. How have you adapted to life on the other side of the [[Labyrinth]]? Are you superstitious, refusing to adapt to this new world, or are you doing your best to learn the ways of this strange realm?
* ''Why Did You Leave?'' You began your life as a servant of darkness. Have you embraced the light? Are you fighting the servants of your former master? Or are you a pawn in a conflict between [[overlord]]s? You might serve an evil force, but the cultists you fight serve even darker powers. 

!! Cities and Sites

Settlements are few and far between in the Demon Wastes. The Carrion Tribes are semi-nomadic, assembling camps in the crumbling ruins of long-forgotten cities built by [[demon]]s in the first days of the world. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>

While wearing this armor, you can cause two incorporeal skeletal wings to sprout from your back for 1 hour or until you choose to end this effect.

Once you have used this property, it can't be used again until the next dawn. 
Demonsong Bay lies off the coast of the [[Demon Wastes]].
The Demonsong Channel passes between the [[Demon Wastes]] in [[Khorvaire]] and [[Tlalusk Island]].
''District Type:'' [[Gnome|gnome]] neighborhood<br/>
''Buildings:'' Temples ([[Aureon]], [[Onatar]]), upscale lodging (5), average lodging (16), upscale food (15), average food (20), exotic trades (10), upscale trades (15),
average trades (25), poor trades (12), upscale services
(15), average services (25), average residences (200)<br/>
''First Impression:'' The buildings here, from quiet and
neat little townhomes to shops and services of all kinds,
are scaled for the district's gnome inhabitants.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Platinate]] (south); [[University District]] (southwest); [[Highest Towers]] (bridge, northwest); [[Skysedge Park]] (bridge, north); [[Twelve Pillars]] (bridge, northeast); [[Copper Arch]] (bridge, east); [[Smoky Towers]] (below)

Den'iyas is known as the [[gnome]] neighborhood of
[[Sharn]], though barely ten percent of the city's gnome
population lives in this district. Few people of other
races call it home, and its gnome residents cleave
to their traditional customs unlike their more
integrated brethren in the rest of the city. There
are usually a dozen subtle power struggles going on
between the major families of Den'iyas, and even
the most innocuous event could be part of some
elaborate intrigue. Information of all types can be
acquired here, but those with secrets must be careful
around the inquisitive gnomes, lest they become the
object of blackmail, curiosity, or deceit.

!! Noteworthy Locations

* [[Davandi Fine Tailoring]]. In addition to being the [[city councilor|Sharn Council]] representing [[Upper Menthis]], the gnome [[Thurik Davandi]] is an accomplished tailor and [[magewright]] who produces the finest [[glamerweave]] clothing available in Sharn. 
* The [[Khavish Theater]]. Established by and for [[gnome]]s, the Khavish has ample seating for small creatures, and its shows make extensive use of illusions. 
''Leader:'' [[Breven d'Deneith]] <br/>
''Headquarters:'' [[Sentinel Tower]] ([[Karrlakton]], [[Karrnath]])<br/>
''Dragonmark:'' [[Mark of Sentinel]]

//Protection is my purpose. I defend the innocent from those who would do them harm. For my siblings, this is a job; for me, it's a calling.//

<div align="right">—Harric d'Deneith, [[Sentinel Marshal|Sentinel Marshals]]</div>

House Deneith was born in [[Karrnath]], and war flows in
its veins. For centuries, the [[Blademarks Guild]] of House
Deneith has governed the mercenary trade. While warriors with the [[Mark of Sentinel]] are among its most elite
forces, House Deneith brokers the services of a wide
range of soldiers, including [[Valenar]] war bands and the
[[goblin|goblinoid]]s of [[Droaam]]. Beyond the battlefield, the [[Defenders Guild]] provides exceptional bodyguards for those
who can afford their services. House Deneith is also
renowned for its [[Sentinel Marshals]], agents who hold
the authority to pursue criminals and enforce the law
across the length of [[Khorvaire]]. The Sentinel Marshals
hold the honor of the house in their hands. Being a Marshal is a privilege, and it comes with high expectations.

Despite its might and the desire of some house members to flex their military muscles, House Deneith has
always maintained absolute neutrality, selling its services to all sides of a conflict. Baron [[Breven d'Deneith]]
shows no inclination of using the massive, [[chimera]]-marked military forces of his house for his own ends,
but he's surrounded by aggressive advisors who would
like to see a Deneith ruling all [[Khorvaire]]. House Deneith is also caught in an escalating rivalry with House [[Tharashk]], as it edges into the mercenary trade. 

!! History of House {{!!title}}

The first humans to exhibit [[dragonmark]]s were members of a militant noble family with ancestral lands in what is now [[Karrnath]]. With the [[Dragonmark of Sentinel|Mark of Sentinel]] bolstering their military prowess, the Deneith family
conquered most of the region; only famine prevented
them from carving out their own kingdom in what is
now western Karrnath. The Deneith homeland was
also the home of [[Karrn the Conqueror]]. Although
he was not a member of the family, House Deneith
pledged fealty to Karrn during his rise to power.
When [[Galifar I|Galifar ir'Wynarn]] united the [[Five Nations]], he charged
the house with the protection of his vast new realm.

!!! The Last War

Most members of House Deneith
are culturally [[Karrnath]]i, but the house refused to
choose sides in the [[Last War]]. Instead, House Deneith
offered mercenaries from its [[Blademarks Guild]] to
all of the [[Five Nations]]. Deneith crafted its contracts
to ensure that Deneith fighters would never cross
swords with other Deneith. One [[Cyran|Cyre]] general was
infuriated when the blademarks under his command
wouldn’t attack a Deneith-guarded garrison. The
Cyrans attacked the blademarks who refused to fight,
but were routed by the combined forces of the blademarks and the Deneith garrison guards.

House Deneith generally remains at arm’s length
from political maneuvering among the other [[dragonmarked house]]s. But since the [[Last War]], it has started to make cautious moves against House [[Cannith]] and
House [[Tharashk]]. The reason is simple: In the latter
days of the war, both made significant inroads against
Deneith’s dominance in the soldiers-for-hire market.
Every [[warforged]] soldier built by House Cannith and
every (sometimes monstrous) mercenary offered by
House Tharashk is direct competition.

!! Guilds and Organizations

<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
Also called a "sentinel shield", this targe is emblazoned with a symbol of an eye. While holding this shield, a creature with the [[Mark of Sentinel]] gains advantage when detecting hidden dangers, or when taking their first action when ambushed or surprised by enemies.
One of the most important products
of the forests of [[Aerenal]], densewood is a strong, hard,
heavy wood similar to iron in its properties.  A densewood item weighs twice as much as the same item made from most common wood, and typically costs twice as much or more.
Known at various times as Greenholt, Newholt, or
Kymar's Folly, this outpost has served as an [[Aundair]]ian settlement, a [[Thrane]] hermitage, and an outpost
of House [[Lyrandar]]. It's fallen three times, and no one
knows exactly how. Each time, its inhabitants have
vanished in a single night, leaving all their possessions
behind. Today it's known as Desolate, and it awaits the
next band of settlers willing to stake their claim. 
For up to 10 minutes, you sense the presence of magic within 30 feet of you. If you sense magic in this way, you can see a faint aura around any visible creature or object in the area that bears magic, and you learn its [[school of magic|spell school]], if any.

The spell can penetrate most barriers, but it is blocked by 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood or dirt.
For up to 1 minute, you can read the thoughts of surrounding creatures. You can focus your mind on any one creature that you can see within 30 feet of you. If the creature you choose has no more than animal intelligence or doesn't speak any language, the creature is unaffected.

You initially learn the surface thoughts of the creature—what is most on its mind in that moment. You can either shift your attention to another creature's thoughts or attempt to probe deeper into the same creature's mind. If you probe deeper, and are successful overcoming the creature's mental safeguards, you gain insight into its reasoning (if any), its emotional state, and something that looms large in its mind (such as something it worries over, loves, or hates). If it succeeds, the spell ends. Either way, the target knows that you are probing into its mind, and unless you shift your attention to another creature's thoughts, the creature can attempt to snuff out your mental probe and end the spell.

Questions verbally directed at the target creature naturally shape the course of its thoughts, so this spell is particularly effective as part of an interrogation.

You can also use this spell to detect the presence of thinking creatures you can't see. When the spell is active, you can search for thoughts within 30 feet of you. The spell can penetrate barriers, but 2 feet of rock, 2 inches of any metal other than lead, or a thin sheet of lead blocks you. You can't detect a creature with no more than animal intelligence or doesn't speak any language.

Once you detect the presence of a creature in this way, you can read its thoughts for the rest of the duration as described above, even if you can't see it, but it must still be within range.
Devas are [[angel]]s that act as divine messengers or agents to the Material Plane or other [[plane]]s. Legend tells of angels that take mortal form for years, lending aid, hope, and courage to goodhearted folk. A deva can take any shape, although it prefers to appear to mortals as an innocuous [[humanoid]] or animal. When circumstances require that it cast off its guise, a typical deva is a beautiful humanoid-like creature with silvery skin. Its hair and eyes gleam with an unearthly luster, and large feathery wings unfurl from its shoulder blades.

Devils personify tyranny. These [[fiend]]s live to conquer, enslave, and oppress. They take perverse delight in exercising authority over the weak, and any creature that defies the authority of a devil faces swift and cruel punishment. 

Devils native to different [[plane]]s express different aspects. 

* The devils of [[Daanvi]] represent law in the service of oppression, tyranny and personal gain.
* In [[Fernia]], devils represent the intentional use of fire as a weapon or to inspire fear.
* The [[ice devil]]s and [[chain devil]]s of [[Risia]] represent bitter isolation, and the ice that entombs and preserves. But these creatures may actually not be true devils, but rather [[manifestation]]s of the mysterious Killing Cold.
* In [[Shavarath]], devils represent disciplined practice of war in pursuit of oppression, and most serve the Legion of [[Tyranny]].

Devils may revere the [[Dark Six]], but like all other creatures, have no direct access to them. Even devils must take their existence on faith.

!! Types of Devil

<<list-links-article "[tag{!!title}sort[title]]">>
Personal identity has no value to Devotion, a [[changeling]] of [[Riedra]]. Service
to the [[Thousand Eyes]] is the center of her existence, and
names, faces, and personalities are simply tools she uses
in this task. Her skills and dedication have earned her
the personal interest of Lady [[Sharadhuna]]. Devotion is
often assigned sensitive missions on behalf of her mistress. She could be sent to observe the PCs and to interact with them in a variety of guises, testing their reactions to
different situations and offers. Should Lady Sharadhuna decide to involve the characters in her rivalry with the [[Dreaming Dark]], Devotion is her emissary. 

Devotion has no single favored form. While she has
a few cover identities she uses in her work, if no specific
face is required, she wears a new one every day, changing
voice and mannerisms to match. Her one defining trait
is her utter loyalty to Lady [[Sharadhuna]], and no offer can
tempt her to turn on her mistress.
The Devourer is the tsunami that overwhelms the tallest
ship, the wildfire that consumes the grandest castle, the
earthquake that levels the most glorious city. He is the vast
and primordial power of nature, a force that will break any
chain and wear down the strongest wall. The Devourer is the
glorious cruelty that drives the predator, the cry of the hawk
and the howl of the wolf. He is all that is wild, savage, and
unknowable. He is the deepest ocean, a force that can be
crossed but never controlled.

Those who fear the Devourer see him as an entirely
destructive force. [[Arawai]] is the patron of agriculture, of
peacefully harvesting nature's bounty. [[Balinor]] is the patron
of the hunt, of civilized folk using bow, spear, and skill to
challenge or tame the mightiest beasts. These deities reflect
the power of civilization to harness and control the natural
world, but the Devourer puts the lie to this, showing that
nature will never be truly tamed.

Those who embrace the Devourer celebrate the glorious
power of the wilds. They revel in the raging storm and
gladly embrace their predatory instincts. They accept that
nature is often bloody and cruel, and don't hesitate to follow
its example. But while it may be harsh, nature is rarely evil.
Priests of the Devourer often urge their parishioners to
follow their instincts, or teach people to live in accord with
nature instead of forcing their will upon it. They may serve
as intermediaries, convincing the Devourer to redirect his
wrath and spare their followers—or to turn his rage against
their enemies.

The Devourer's symbols include a bundle of five sharpened bones, or a [[dragon turtle]].
The Devourer of Dreams
is the ruling entity of the [[Dreaming Dark]]. Between its many duties and
the risk—however slight—that someone on [[Eberron]] could bind it, the
Devourer rarely leaves [[Dal Quor]]. In
its absence, the most influential member of the Circle of Night is the dominator [[Tirashana]].
Home to the finest collection of artifacts from [[Xen'drik]] in
[[Khorvaire]], [[Morgrave University]]'s Dezina Museum
fills many of the mid-levels of Dalannan Tower. Its
collection would be even more impressive were it
not for the strong tendency the University has to sell
valuable artifacts rather than put them on display,
not to mention the steady stream of items routinely
stolen from the museum. More interesting (at least
to some) than the museum's displayed collection are
its vaults, vast rooms below the publicly accessible
areas of the museum that contain unopened crates
of treasures waiting to be cataloged, shelves of artifacts deemed uninteresting, and a few secret rooms holding items too important or dangerous to put on
public display. 
The [[goblinoid]] Empire of Dhakaan was built on a foundation of martial skill. For thousands of years during the [[Age of Monsters]] it dominated [[Khorvaire]], until the coming of the [[daelkyr]]. For all of their skill, the Dhakaani goblinoids could not stand against the might and madness of the Lords of [[Xoriat]]. By the time the [[Gatekeeper|Gatekeepers]] [[druid]]s bound the daelkyr and their servants in the depths of [[Khyber]], the empire was a shadow of its former glory. Over the course of millennia it collapsed into savagery, and by the time [[humanity|human]] arrived on Khorvaire from [[Sarlona]], all that was left of the empire was ruins.

Goblinoids in the time of Dhakaan had an almost supernatural eusocial bond and discipline; their concepts of //muut// (duty) and //atcha// (personal honor) were ingrained into their very beings, and each [[goblin]], [[hobgoblin]], and [[bugbear]] strove to uphold their place in society to the best of their ability. This was largely due to the [[Uul Dhakaan]], the "Dream of the Empire" that all goblinoids shared. Because of this powerful cooperative efficiency, the Dhakaani were able to create marvels of engineering and alchemy that even House [[Cannith]] cannot reproduce today (for example, [[adamantine]] smelting). But when the [[daelkyr]] and their armies of [[aberration]]s invaded Khorvaire, they severed that eusocial bond in a spreading [[madness|Kapaa'vola]]. This loss of oneness quickly led to internal strife, civil war, and collapse of the empire over the course of just a few generations. Today, [[goblinoid]]s are still an organized martial culture as were their ancestors, but //muut// and //atcha// are just words, not instincts that come as naturally as breathing.

There is one exception: the [[Heirs of Dhakaan]]. As the empire crumbled, a few of the greatest generals and leaders took their clans into hiding, determined to preserve the knowledge of the Dhakaani through the darkness they saw coming.

With the rise of [[Darguun]], the clans have finally emerged, with //muut// and //atcha// fully intact. If they united behind a single ruler, the Dhakaani clans could easily unseat the Lhesh [[Haruuc|Haruuc Shaarat'kor]], and if they conquered Darguun, the Dhakaani could pose a threat to the other nations of [[Khorvaire]].

!! Dhakaani Magic Items

The Dhakaani mastered techniques of metallurgy and smithing that
Cannith has yet to learn. They know techniques for refining
and working [[adamantine]] alloys and other exotic metals, and
for binding arcane energies into their creations. In ancient
times, the empire produced many mighty artifacts. DMs will
have to decide whether the [[present-day Dhakaani|Heirs of Dhakaan]] still have
the ability to craft new artifacts, or if their greatest secrets were lost in the collapse of the empire.

The daashor ([[artificer]]s of Dhakaan) value function over fashion. Their tools and
weapons are impeccably designed, but typically austere in
form: blackened adamantine or steel, with emblems of clan
and empire woven unobtrusively into the design. In addition
to adamantine weapons, Dhakaani may produce any sort
of magical arms or armor. While the Dhakaani use
swords, bows, and spears, their champions often field flails,
maces, and mauls. Other Dhakaani magic items are usually
focused on battlefield use. For example, magical banners or
instruments could inspire allies or instill fear in enemies.

The Heirs of Dhakaan seek to recover Dhakaani artifacts and
legendary items, and they'll try to claim these most valuable
items from other creatures through force or diplomacy. While
it may disturb a warrior of Dhakaan to see a human wearing
Dhakaani armor or carrying an adamantine blade from an
imperial forge, they don't need to recover every relic of the
past, and they may allow this to pass without incident.

<<list-links-article "[tag{!!title}tag[magic item]sort[title]]">>
The Diamond Theater is
something new in [[Lower Menthis]]—competition
for the [[Ten Torches]] Theater in [[Torchfire]]. With
its large stage, copious seating (it seats 1,000 comfortably), and renowned artist-in-residence, the
Diamond manages to exude an air of sophistication in a ward all about base entertainment. [[Luca Syara]], the Diamond's resident playwright, is the
hottest thing going in [[Sharn]]'s entertainment world
at present. Many of her plays wrestle seriously with
issues raised by the [[Last War]], exploring themes of
nationalism, shattered idealism, alienation and
grief, and the search for meaning in a war-ravaged
world. For many, such serious, modern plays hold no interest and draw nothing but derision, but even those who hate her still talk about her. Her contract with the Diamond expires in another year, and certain circles buzz constantly with speculation about what [[upper-ward|upper ward]] theater will snatch her up at that point.
Queen Diani ir’Wynarn leads the royal family of [[Thrane]], which serves merely as a
figurehead in the theocracy. She has spent the last few years building a coalition of royalists to help restore power to her family. She has
been careful to conceal her true motives, taking
every effort to keep her meetings with foreign
powers secret. If word of her plots reaches the ears
of High Cardinal [[Krozen]] or the rest of the [[Council of Cardinals]], she might find herself pushed to act before her line is ended for good.
You teleport yourself from your current location to any other spot within 500 feet. You arrive at exactly the spot desired. It can be a place you can see, one you can visualize, or one you can describe by stating distance and direction, such as "200 feet straight downward" or "upward to the northwest at a 45-degree angle, 300 feet."

You can bring along objects as long as their weight doesn't exceed what you can carry. You can also bring one willing creature of your size or smaller who is carrying gear up to its carrying capacity. The creature must be within 5 feet of you when you cast this spell.

If you would arrive in a place already occupied by an object or a creature, you and any creature traveling with you each take a hefty amount of force damage, and the spell fails to teleport you.
A dimensional seal is a massive stone slab covered with
a complex pattern of runes and sigils. The seal projects
an invisible field in a 2-mile radius. This field blocks
all forms of [[conjuration]] magic and any other effect that
involves teleportation or planar travel. Dimensional
seals are usually found in the [[Eldeen Reaches]] and the
[[Shadow Marches]]—reminders of the conflict between
the [[Gatekeepers]] and the [[daelkyr]]. The techniques used
to create these seals have been long lost. It's said that as
a whole, the dimensional seals keep the daelkyr bound
in [[Khyber]] and prevent [[Xoriat]] from becoming coterminous with [[Eberron]]. If enough of these seals are destroyed, there could be dire consequences for the world. 
Dinosaurs are widespread on Eberron, particularly in [[Q'barra]], the [[Talenta Plains]], [[Xen'drik]], and [[Argonnessen]]. Smaller dinosaurs are the rule in Q'barra and the Talenta Plains, including varieties commonly used by Talenta [[halfling]]s as mounts. 

<<list-links-article "[tag{!!title}sort[title]]">>
Dire beasts are larger, tougher, meaner versions of ordinary animals. Each kind tends to have a feral or prehistoric appearance, while some blur the line between [[beast]] and [[monstrosity]].

<<list-links-article "[tag{!!title}sort[title]]">>
Comfortable on land or in water, these enormous, brilliantly colored snakes are renowned for their potent and hallucinogenic venom, which can cause [[short-term madness]]. They are most often found in coastal caves. 
Dire wolves are [[dire|dire beast]] versions of grey wolves. They are encountered individually, or in packs of 3 to 8. 

Dire wolves are mottled gray or black, growing up to eight feet long and weighing up to 700 pounds. They tend to be more aggressive than their non-dire counterpart.
The Direshark [[Principality|Lhazaar Principalities]], named after the [[dire beast]] and led by Prince [[Kolberkon]], is the dominant force in the [[Eel Bay]]. Its seat is [[Port Verge]] on the island of [[Questor]]. The Diresharks have an intense rivalry with the [[Seadragons]], and Prince Kolberkon sees himself as next in line for the position of High Prince.

The Diresharks have struck deals with House [[Lyrandar]] for financing the development of [[Port Verge]], so that it might rival [[Regalport]]. In exchange, Lyrandar hopes to assert their influence over the [[Lhazaar|Lhazaar Principalities]] merchant fleets and compete with the [[Seadragons]] (and their House [[Orien]] couriers). Lyrandar also intends to put pressure on Prince [[Kolberkon]] to help apprehend the excoriate [[Koulton Brightwind]], Prince of the [[Wind Whisperers]].
Duur’kala, or "dirge singers", are mighty [[bard]]s of the [[Kech Dhakaan|Heirs of Dhakaan]]. This ancient tradition was developed in the Empire of
[[Dhakaan]] (the legendary [[Jhazaal Dhakaan]] was a dirge singer), and is largely unknown beyond the [[goblinoid]]s of
the modern-day clans. The duur’kala are the historians, diplomats, and spiritual leaders of the empire, and their music is the most common form of magic among
the Dhakaani. 

Duur'kala are trained to inspire
their people and direct soldiers on the battlefield. Students of
both history and war, dirge singers use tales of past glory and
their knowledge of great victories to inspire their allies and
provide keen strategic insight, directing allies to strike when
enemies are weak.

As the magic manifests
mostly in women, duur’kala are often
called //gaanu duur,// “daughters of the
dirge,” and elders are referred to as
//niianu duur//, “mothers of the dirge.”

A dirge singer’s training often includes time within
the [[Uul Dhakaan]]. An [[uul’kur|dream key]] allows the novice duur’kala to
experience historical events within the dream or to study
with the memory-shades of duur’kala masters.

You make yourself—including your clothing, armor, weapons, and other belongings on your person—look different for up to one hour or until you dismiss it. You can seem 1 foot shorter or taller and can appear thin, fat, or in between. You can't change your body type, so you must adopt a form that has the same basic arrangement of limbs. Otherwise, the extent of the illusion is up to you.

The changes wrought by this spell fail to hold up to physical inspection. For example, if you use this spell to add a cape to your outfit, objects pass through the cape, and anyone who touches it would feel nothing. If you use this spell to appear thinner than you are, the hand of someone who reaches out to touch you would bump into you while it was seemingly still in midair.
A thin green ray springs from your pointing finger to a target that you can see within 60 feet. The target can be a creature, an object, or a creation of magical force, such as the wall created by [[wall of force]].

On a successful roll, the target (if it is not a living creature) is partially or fully reduced to a pile of fine gray dust. [[Magic item|magic item]]s are more difficult to destroy than nonmagical items or creations of magical force. Living creatures suffer force damage (comparable to a [[fireball]]) but are not completely disintegrated.

This spell can be upgraded to legendary-tier for an even more destructive effect. If you defeat a creature with the legendary version of this spell, the creature and everything it is wearing and carrying (except powerful [[magic item]]s) are reduced to fine dust. The creature can be restored to life only by means of a [[true resurrection]] or [[wish]] spell.
Choose one creature, object, or magical effect within 120 feet. Any [[spell]] of "rare" [[tier|spell tier]] or lower on the target ends. 

If you are able to cast legendary-tier spells, you can cast this as such to dispel other legendary-tier spells.
This monstrous predator takes its name from its ability to displace light so that it appears to be several feet away from its actual location. A displacer beast resembles a sleek great cat covered in blue-black fur. However, its otherworldly origins are clear in its six legs and the two tentacles sprouting from its shoulders, both ending in pads tipped with spiky protrusions. A displacer beast's eyes glow with an awful malevolence that persists even in death.

//''Love of the Kill.''// Displacer beasts kill not just for food but also for sport. They target prey even when not hungry, often toying with their victims to entertain themselves until they are ready to eat. After killing its prey using its tentacles, a displacer beast drags the corpse to a quiet place where it can feed without distraction.

Displacer beasts hunt alone or in small prides that demonstrate skill at setting ambushes. A single beast will strike and withdraw, luring prey into a densely wooded area where its pack mates wait. Packs of displacer beasts hunting near trade roads recall the frequency and schedule of regular caravans, laying down ambushes to pick off those caravans.

//''Prized Guards and Pets.''// Intelligent evil creatures favor displacer beasts as pets, but a displacer beast enters such an alliance only if it appears beneficial. A displacer beast might guard a vault or act as a bodyguard for a prominent individual.
Divination spells reveal information, whether in the form of secrets long forgotten, glimpses of the future, the locations of hidden things, the truth behind [[illusion]]s, or visions of distant people or places.

!!! <<showspells-school {{!!title}}>>
This prayer empowers a [[paladin]]'s weapon with divine radiance. Attacks with this weapon deal additional radiant damage for up to 1 minute.
Unlike [[arcane magic]], there's no logic to divine magic, no pure science that can
explain exactly how it works. An acolyte might spend years meditating and praying, performing virtuous deeds, and tending their flock, and still never gain the power of a [[cleric]]; meanwhile, a smith who can't even read might feel [[Onatar]]'s guiding hands and cast something like [[magecraft]]. Divine magic requires two things: transcendental faith and a connection to a divine power source.

Faith is about conviction. It can't be something you
approach rationally. You need to know in your heart that the
magical effect you seek to produce with your spell should
and will happen. Whether you're smiting an enemy or
healing an ally, you know that the enemy will fall and that
you will save your friend. This doesn't mean that you have
to be a zealot with no doubts whatsoever; you can question
your overall course of action. But you can't think about your
doubts in the moment of casting the spell; in that instant,
you must have pure and absolute certainty that the spell
will come to pass.

But faith alone isn't enough; you also need a connection
to a source of divine power. In Eberron, no one can prove
whether the [[Sovereigns|Sovereign Host]] or other deities exist—if [[Onatar]]
actually guides all artisans or if [[Dol Dorn]] and [[Dol Arrah]]
truly watch over every battlefield. But whether or not Dol
Arrah exists, when her [[paladin]] smites a foe, they draw that power from something. The paladin believes it to be Dol Arrah granting her favor, and maybe it is. Or maybe the shared faith of the tens of thousands of people who believe in the Sovereigns has created wells of power in the collective unconscious, and the paladin draws on this powerful force instead. In a practical sense, the truth is irrelevant; regardless
of its nature and source, the power exists. And this is where
science fails. The [[Silver Flame]] is a source of divine power,
a force that has held [[demon]]s at bay for millennia. Those
who seek to defend the innocent and fight supernatural evil
can draw on its power. But why does one templar become a
paladin over another of equal faith? Why does an illiterate
farmer gain the gift of divine magic when a religious scholar
who's spent decades studying texts doesn't? People of faith
usually respond that it's because the farmer was chosen by
[[Arawai]], or because one templar was more open than the
other to the [[Voice of the Flame|Tira Miron]]. Maybe that's true, or maybe
it's all just luck.

!!! <<showspells-school {{!!title}}>>
A docent is a small metal sphere, approximately 2 inches
across, studded with [[dragonshard]]s. Explorers
have found them in [[Xen'drik]], and [[artificer]]s and [[warforged]]
alike have so far failed to discover the secret of their construction. Despite a strong magical aura, a docent has no apparent abilities. Its powers are only revealed when it is
attached to a [[warforged]], embedded somewhere on their body such as their chest or eye socket. At this point, a docent comes to life—literally. A
docent is an intelligent magic item designed to advise and
assist the warforged it is attached to.

One of the simple functions of a docent is to serve as a translator. It knows Common, Giant, and <<dr 1d4>> additional languages chosen by the DM. It perceives the world through its host's senses, and communicates telepathically with its host. The docent can be knowledgable on a variety of subjects including arcana, history, or nature, and can even assist in investigation or detecting magical auras. It can also serve as emergency life support if its host warforged is grievously damaged.
Dol Arrah is the Sovereign of Sun and Sacrifice, the sun that drives away the darkness. She stands for wisdom in war and for those who fight with honor, pursue justice, and make sacrifices for the greater good. Her symbols include a rising sun or a [[red dragon]].
Dol Dorn is the Sovereign of Strength and Steel. He is the patron of the common soldier, and he guides the hands of anyone who holds a weapon. He embodies courage, strength, and martial skill. His symbols include a longsword crossed over a shield or a [[silver dragon]].
''Capital:'' Silverblade Keep<br/>
''Primary Resources:'' Iron, silver<br/>
''Enemies:'' [[Kolkarun]], [[Narathun]], [[Soldorak]]<br/>
''Celebrated Virtues:'' Courage, honor, skill at arms. Resist corruption.

The talespinners of Clan Doldarun say that their legendary
founder was the child of [[Dol Dorn]] and [[Dol Arrah]], and
the [[dwarves|dwarf]] of Doldarunhold take this to heart. Doldarun
soldiers have always been among the best-trained and most-disciplined warriors among the dwarves, and they're the most
inclined to place their lives at risk for the good of all. There
are countless tales of Doldarun facing terrifying monsters,
[[fiend]]s, and [[undead]]; if you need an exorcist in the [[Mror Holds]],
Doldarunhold is your best bet.

Doldarun suffered heavy losses in the War Below; in part
because it was the clan most determined to win the war instead
of accepting the current stalemate, many Doldarun soldiers
died in bold strikes against the foul enemy. The clan maintains
a garrisoned colony below Silverblade Keep, and is building
strength for a new offensive. In the meantime, Doldarun draws
a hard line against trafficking with the [[daelkyr]] or any form of
fleshcrafting, and any outsider carrying [[symbiont]]s receives a
very hostile reaction in Doldarunhold. Clan Doldarun has an
ancient feud with Clan [[Soldorak]], and denounced [[Narathun]]
twenty years ago over Narathun fleshcrafting.

Doldarun characters are likely to be acolytes or soldiers. This
is an excellent clan for [[cleric]]s or [[paladin]]s—especially
War clerics and Oath of Devotion paladins. Rarely, perhaps
once in a generation, the line of Doldarun produces dwarven
[[Host|Sovereign Host]] [[aasimar]]. They attribute this to their mythical founder,
child of the gods.
Dolgaunts are emaciated [[hobgoblin]]s with disease-hued flesh. Their eye sockets gape open and empty above a mouth with a wormlike tongue. Writhing cilia cover their bodies, with longer tendrils around their heads and two wiry tentacles protruding from their bare shoulders. A dolgaunt is blind but can perceive its surroundings through the sensitive cilia that cover its skin. It can also absorb life through its tentacles, allowing it to drain the vitality out of any creature it touches.

//''Warped by Chaos.''// When the [[daelkyr]] emerged from [[Xoriat]] to conquer [[Khorvaire]], they captured and transformed that land's indigenous creatures to create armies of hideous warriors. [[Dyrrn]] the Corruptor shaped dolgaunts from [[hobgoblin]] stock, turning them into intelligent, cold, and efficient killers.

When the daelkyr were defeated, the dolgaunts descended into the depths of [[Khyber]] with their masters. There, they study in cavernous monasteries, forging their bodies into living weapons dedicated to the missions given them by those masters. Dolgaunts are often found commanding squads of [[dolgrim]]s, and can also be found working with the [[Cults of the Dragon Below]]—particularly those devoted to [[Dyrrn]].

Dolgrims are squat, deformed things. Warped by the [[daelkyr]], a dolgrim is essentially two [[goblin]]s crushed into one creature, their misshapen body boasting four arms and a pair of twisted mouths that gibber and slather at the front of a headless torso. The two mouths of a dolgrim sometimes carry on demented conversations with one another. However, a dolgrim has only a single personality—sadistic, bloodthirsty, and brutally dedicated to serving itself.

Small numbers of these creatures sometimes make their way to the surface, often under the command of [[dolgaunt]]s, and undertaking missions advancing the inscrutable schemes of their malevolent masters. But great hordes of dolgrims remain clustered in [[Khyber]] with the [[daelkyr]], dreaming of the day when they will be released into [[Eberron]] to feast and destroy.
Endless caverns stretch throughout Dolurrh, bleak passages of gray stone. Wherever you go, shadowy figures reach toward you, imploring, but you feel only the faintest chill as their insubstantial fingers pass through you. Mist pools around your feet, and as you press forward, you realize this swirling mist is moaning. This is no natural phenomenon;
these are the remnants of souls who have forgotten themselves.
This is Dolurrh. It's not the embodiment of the idea of death or
dying, both of which are reflected in [[Mabar]]. Rather, Dolurrh is
where mortal souls go after their bodies die, where memories
fade and lives are forgotten.

Mortal spirits are drawn to Dolurrh within moments of death,
and their memories begin to decay immediately. Within days,
most spirits no longer have any desire to leave Dolurrh, and
within weeks, most only have the faintest memories of their
previous lives. The [[faiths|Undying Court]] of [[Aerenal]] and the [[Blood of Vol]] assert
that Dolurrh is the absolute end of existence, the last echoes of a
life before it's completely gone. But when [[Dorius Alyre ir'Korran]]
drew his classic planar map, he used the Octogram symbol of the [[Sovereign Host]] to represent Dolurrh, because he declared it to be the door through which all
mortals must pass to join with the Sovereigns. This has come
to be a common view: what appears to be memory fading is
actually the soul slowly ascending to a higher form of existence,
rising to a level of reality no mortal can experience. The Vassals
of the [[Sovereign Host]] say the faithful finally join the Sovereigns;
followers of the [[Silver Flame]] say that noble souls strengthen
the Flame. What is left is only a husk—the cast-off remnants,
like an abandoned snakeskin or the traces of memory that can
be read using [[speak with dead]]. Thus, while Dolurrh has long
been known as the Realm of the Dead, many call it the Gateway.
Ultimately, this is a matter of faith—whether the other side of
Dolurrh is oblivion or paradise, no one ever returns from it.

The sage Annolysse of [[Arcanix]] declared that Dolurrh must
be the thirteenth plane, for it has no opposite. It doesn't embody
an idea so much as it serves a purpose—that of gathering,
collecting, and (perhaps) transitioning souls. Mortal actions
are judged in [[Daanvi]]; by contrast, Dolurrh doesn't judge and it
doesn't punish. It's simply the end of the journey—or depending
how you look at it, the beginning of a new one.

All living creatures come to Dolurrh, sooner or later. Those
that come here before death are almost always looking for
something—a lost soul, a forgotten memory. But living or dead,
any who come to Dolurrh can be trapped by its power.

!! Universal Properties

Everything about Dolurrh is gray and gloomy. Even the
brightest colors seem faded, the most joyful sounds seem dull.
The heavy weight of ennui settles on travelers the moment they arrive, making even the simplest tasks feel challenging.
And there's a constant pull, tugging on memory and emotion,
a desire to just sit down and let it all go.

* //''Eternal Ennui.''// When a creature enters Dolurrh, it immediately gains one level of ennui, a heavy weight of despair and apathy. Mechanically, this translates to a disadvantage on all actions. While in Dolurrh, this level of ennui can't be removed by rest or by any other means. It's immediately removed when the creature leaves Dolurrh. Creatures native to Dolurrh are immune to this property's effects.
* //''Impeded Magic.''// In order to cast a [[spell]] of common tier or higher, any consequences to that roll include one additional stress from casting the spell.
* //''Inevitable Entrapment.''// Every three days a creature spends in Dolurrh, if it is unable to withstand the crushing depression of the realm, it gains one level of ennui. Getting a critical result on the attempt clears one level of ennui. Creatures native to Dolurrh are immune to this property's effects.
* //''Timeless.''// Time passes at the same rate as on the Material Plane, and is consistent across its layers. Creatures can benefit from resting, suffer damage, and die. However, a creature on Dolurrh doesn't age, and doesn't need to eat, sleep, or drink.

!! Denizens

In many ways, Dolurrh is a machine. The pull that draws spirits
to Dolurrh is a mechanical effect, part of the fundamental
nature of souls. The denizens of Dolurrh are the cogs of that
machine, here to keep the system running. 

!!! The Quick

The native creatures of Dolurrh are bound to the cycle of
transition, and all have some role to serve in this process. All
of the Quick are immune to the ennui condition.

* [[nalfeshnee]]
* [[marut]]s
* [[shadar-kai]]

Other denizens of Dolurrh are unique, such as the ''Librarian'',
found in the [[Vault of Memories]], and the ''Smith of Souls'', who
dwells in the [[Crucible]].

!!! The Dead

The spirits of those who have died are omnipresent in Dolurrh,
from shades huddled in the shadows to layers of moaning mist.
The Dead might be considered manifestations of Dolurrh, but
the plane didn't actually create them—all were once mortals.

* [[shade]]s
* [[husk]]s
* [[ghost]]s

Other forms of [[undead]] are rarely seen in Dolurrh. The
entities found in this plane are the spirits of the dead, slowly
fading, transitioning—or trapped in that process. Corporeal
undead such as [[ghoul]]s, skeletons, and [[zombie]]s have no place
here, while undead that hunger to consume life belong in [[Mabar]].

!!! The Lingering

Memories of joy and happiness do no harm in Dolurrh. But
memories of pain, of cruelty, of anger... these don't fade so
easily, and they can hurt others. Even if they don't trap [[shade]]s
as [[ghost]]s, this psychic residue can build up in the gears of the
spiritual machinery of Dolurrh. It often takes the presence of
a mortal to trigger it; when this occurs, the lingering pain and
hate coalesces into a solid form. The least of these are [[lemure]]s,
formed from hateful memories or deeds. The emotional
residue of hundreds or thousands of people can form deadly
[[sorrowsworn]]—the Angry, the Hungry, the Lonely, the Lost, and
the Wretched. The Lingering are formed in Dolurrh and are immune to ennui,
but they're a waste product, not the plane's desired result. As
such, [[nalfeshnee]], [[marut]]s, and other guardians destroy the
Lingering whenever they are found.

!!! The Queen of the Dead

The [[Queen of the Dead]], the most powerful being in Dolurrh,
dwells in the great spire that rises up above the [[Vault of Memories]]. Little is known about her motives or her origins;
curiously, she focuses on the Material Plane far more than
most great planar powers do.

!! Layers

Dolurrh is universally gray and gloomy. The accounts of brave
explorers describe the sense of being underground, and no
mortal has seen the moon or sky of Dolurrh. Unlike most
planes, the layers of Dolurrh don't embody different ideas;
instead, they serve different functions in this grand machine
dedicated to processing souls.

The four [[layer]]s discussed below are the only ones described
in the records of mortals who ventured to Dolurrh—and
returned. But there could be more, as yet undiscovered, each
likely serving a critical purpose. It's known that the [[Librarian]]
has recorded the lives of [[dragon]]s in the [[Vault of Memories]];
accordingly, sages theorize there may be a layer dedicated
entirely to the spirits of dragonkind, which may linger longer
than the spirits of simple [[humanoid]]s.

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Concerning Resurrection

[[Returning life to the dead|raise dead]] isn't a reliable service in [[Eberron]].
Many characters are capable of casting the necessary spells,
from [[cleric]]s to adepts of House [[Jorasco]]. But just because a
spell can be cast doesn't mean that it should be cast... or that
it will work if it does.

The first and simplest limitation is time. The longer a
spirit remains in Dolurrh, the more it falls under the sway
of ennui. Any spell that returns life to the dead requires the
spirit to want to return. Once the [[shade]] becomes a [[husk]], it
can no longer make that decision, and thus can't be raised
or reincarnated. Most religions maintain that this happens
because the true soul has moved on to a higher level of
existence; who wants to be pulled back from a union with
the Sovereigns? So you only have about a week or two—depending on the strength of the target's will—to pull them back. But even before that time, a spirit might choose not to
return. What do they have to live for? Is it worth fighting the
lulling ennui of Dolurrh?

The second limitation is risk. Even if a spell is successful,
[[Jorasco]] remains rightly concerned about whether that person
is supposed to come back, or if it's their time to die—for if it's
the latter, a [[marut]] may appear to challenge any resurrection.
This is extraordinarily rare, but in part, that's because healers
perform an [[augury]] ritual beforehand and refuse to raise
someone if there's a risk. Even if a marut doesn't intervene,
there's a risk the resurrection could go poorly if Dolurrh is
coterminous, perhaps calling back other spirits in addition
to—or instead of—the person being brought back to life.

The final limitation is the direct intervention of a higher
power. The [[Queen of the Dead]] might crystallize a shade
and prevent it from being restored, or catch a spirit that's
about to be restored and set a price on its passage; for example, you must sacrifice a particular item, kill a particular individual, start a movement, build a monument, or must never conceive a child. How long does the beneficiary have to settle their account? A day, a year, a lifetime? It's also said that the [[Keeper]] can snatch souls before
they even reach Dolurrh; if this myth is true, such souls can
only be recovered from the [[Lair of the Keeper]] in the [[Demon Wastes]]. The Keeper itself may or may not be there, but it's
certainly the abode of a powerful [[dracolich]]!

The flip side of direct intervention is that the Queen of
the Dead (or another powerful entity) might offer to return
a [[shade]] to life—for a price. This is a way to bring a low-level
character back to life, despite their friends being unable to
afford resurrection. 

If all else fails, there's one way you can always bring
someone to life: go to Dolurrh, find their [[shade]], and drag
it back out to the Material Plane. It's simple—all you need
to do is to locate a single soul in the endless [[Catacombs]]
(perhaps with the help of a native guide, records in the [[Vault of Memories]], or powerful [[divination]] magic), evade Dolurrh's
many guardians, and return to Eberron with the soul in tow.
If you succeed, the victim receives a new body, just as if you'd
cast [[true resurrection]]; and while Dolurrh's defenders will try
to stop you from leaving, they won't interfere once you return
to Eberron. It's theoretically possible to restore a [[husk]] in this
way as well, though the resurrected husk generally won't regain
its lost memories, even though it might learn new skills. As
a result, it wouldn't do any good to bring back the [[Tairnadal]]
ancestors or [[Galifar I|Galifar ir'Wynarn]]; you could bring a body back to life, but
it's not the original person in any meaningful way. This is why
the Queen of the Dead (and perhaps the Keeper) preserves
certain shades from decay—so that they might one day be
restored, even after thousands of years.

!! Planar Manifestations

Here are some ways Dolurrh can affect the Material Plane.

!!! Manifest Zones

[[Manifest zone|manifest zone]]s tied to Dolurrh rarely possess all of the plane's
properties; travelers generally aren't entrapped by ennui simply
by passing through one. But these zones are still close to the
Realm of the Dead and exceptionally haunted, though not
blighted, as [[Mabar]]an zones typically are. Shadows move in
disturbing ways, and travelers may hear whispers they can't
quite make out.

The restless spirits of Dolurrh yearn to return to the Material
Plane, and it's easier for them to do so in manifest zones. They
might manifest as [[ghost]]s, or animate the corpses of people
buried in the zone, causing them to return as revenants or
zombies. In some Dolurrhi zones, raising the dead can be
dangerous; if spells or abilities that raise the dead are used
in such a zone, a mishap may happen. For example:

* The wrong spirit returns to the body.
* [[Ghost|ghost]]s, [[meld]]s, or a hostile [[marut]] appear, pulled through from Dolurrh.
* A [[nalfeshnee]] possesses the raised character.

Dolurrhi zones can also have positive effects. In many zones,
it's easier to return people from the dead, halving the cost of
any material components. In others, anyone can cast [[speak with dead]] as a ritual that takes an hour to perform, as long as they have a personal connection to the deceased whose corpse they're questioning.

The most dramatic manifest zones are those that serve as
gateways to enter the [[Catacombs]] of Dolurrh—and hopefully, to
return. Opening such a gateway might call for a special ritual
or significant sacrifice, perhaps under a particular alignment
of the moon Aryth, or when Dolurrh is conterminous.

!!! Coterminous and Remote

Dolurrh has a slow planar cycle. Traditionally, once a century,
it becomes coterminous for a full year. Fifty years after that, it's
remote for a full year. It can also have shorter phases, tied to
the movements of the moon Aryth.

While Dolurrh is coterminous, it's easier for [[ghost]]s to slip
from the Realm of the Dead into the Material Plane, especially
around Dolurrhi [[manifest zone]]s. Any spell or ability that raises
the dead can also serve as a conduit for unwanted spirits; see the example complications in the above section.

While Dolurrh is remote, traditional resurrection magic,
such as [[revivify]] or [[reincarnate]], can't pull spirits back from
Dolurrh. The only way to raise the dead in these times is by
traveling to Dolurrh itself and pulling the shade back to the
world, as described earlier in this section. Surprisingly, [[ghost]]s
are also especially common in this time—but these aren't
ghosts that return from Dolurrh. Rather, if Dolurrh is remote
when someone dies in the grip of great emotion or with vital
unfinished business, their spirit can more easily resist Dolurrh's
pull, remaining on the Material Plane.

!!! Dolurrhi Artifacts

The most common Dolurrhi artifacts are creations of the [[Smith of Shadows|Crucible]], formed of [[husksteel]], the fused essence of faded
souls. 

In creating a husksteel object, consider the memory or
emotion that's the heart of the item. For a magic item, this
should reflect its purpose. A husksteel cloak could
be formed from a secret. A husksteel dagger venom might be formed from a moment of absolute terror; when its power is invoked, it could deal psychic damage and make the target frightened of the wielder.

Other Dolurrhi items are largely curiosities. The table below provides examples.

| !<<dr d8>> |!Dolurrhi Trinkets |
| 1 |A hand mirror periodically shows the reflection of a particular dead person or an event from their memories. |
| 2 |A monocle shows the last thing seen by its previous owner before they died. |
| 3 |A stuffed toy sings softly when it's placed in darkness. |
| 4 |A pen writes a specific message when dipped in ink and left untouched. |
| 5 |A small leather journal contains a poem, story, or piece of music by a beloved creator—written after they died. |
| 6 |A battered copper coin flips itself if placed heads-down. |
| 7 |A battered steel locket depicts two images—one is someone who has died, and the other, someone who's about to die. |
| 8 |A pouch of ashes. When a pinch is thrown on the ground, it forms a specific word or symbol. |

!! Dolurrhi Stories

Dolurrh can inspire many simple stories through its [[manifest zone]]s and escaped [[ghost]]s. A [[husksteel]] trinket could provide a flash of memory that sets the adventurers on a particular path, and finding a way to rescue a shade from the underworld is
always an epic tale. Here are a few deeper stories to consider.

//''The Once and Future Queen of the Dead.''// The [[Queen of the Dead]] is an enigmatic figure who wields great power in Dolurrh. But there's another being who uses this title:
[[Erandis Vol|Lady Illmarrow]], the last heir of the [[Mark of Death]]. Through her
agents in the Order of the [[Emerald Claw]] and beyond, Erandis
seeks to restore the power of her [[dragonmark]]; no one knows
what godlike powers she might wield if she unlocks its full
potential. Meanwhile, Dolurrh's Queen of the Dead seems to oppose Erandis, and often sends her agents—both [[shadar-kai]] and adventurers she's restored to life at a price—to interfere with Vol's schemes. This could be exactly what it appears;
the Queen of the Dead may despise [[necromancers|necromancy]], and Vol
is seeking to depose her. But perhaps there's more to it. Time
works in strange ways when dealing with the planes and
beings of vast power. Perhaps the Queen of the Dead isn't
trying to stop Erandis, but guiding her down a very specific
path. Perhaps Erandis will become the Queen of the Dead,
in which case, she'll have always been her. Or perhaps that's
what's supposed to happen, but there's a way in which it could
still go wrong... which could destroy the Queen of the Dead
and throw Dolurrh itself into chaos.

//''Agent of Death.''// The adventurers kill a nefarious villain
that's long eluded them—but soon, their foe reappears alive
and well. This happens time and again. How is the villain
escaping from Dolurrh? Are they acting as an agent for the
Queen of the Dead, or have they simply found a back door to
the Realm of the Dead? Either way, what can the adventurers
do to lay them to rest once and for all?

//''Devastating Sorrow.''// When Dolurrh becomes coterminous,
a powerful [[sorrowsworn]] emerges and devastates the
region. The adventurers may not have the ability to defeat
the sorrowsworn in battle, but if they understand the
circumstances of its creation—the emotion that drives it and
the event that triggered it—they might be able to disperse
the deadly monster by defusing this emotion. When an
adventurer touches—or is touched by—one of Dolurrh's Dead
or Lingering, they might sense a flash of any lingering memory
or emotion that creature possesses. Can this help them solve
the mystery, or will they die in the attempt?

//''The Warforged Soul.''// There are many who believe that
[[warforged]] are simply tools; House [[Cannith]] may be able
to infuse something with life, but it can't create a soul.
Others say that it's not a question of science; the warforged
are clearly alive, and thus, they have souls. But is the soul
unique? Or could it be that warforged recycle souls, drawing
[[husk]]s drained of memory from Dolurrh and using them
as a foundation? These questions are intentionally left
unanswered; it's up to each DM to determine the true nature
of warforged souls. But there's one simple fact: a warforged
can be restored to life with [[revivify]] or [[raise dead]]. Which
means that the answer must lie in Dolurrh, and someone—[[Arcanix]]? [[Merrix d'Cannith]]? The [[Lord of Blades]]?—could fund
an expedition to find the answer.
You attempt to beguile a beast or [[humanoid]] that you can see within 60 feet. If the creature fails to withstand your enchantment, it is charmed by you for up to a few minutes. If you or your companions are fighting it, you have disadvantage on this spell.

While the target is charmed, you have a telepathic link with it as long as the two of you are on the same plane of existence. You can use this telepathic link to issue commands to the creature while you are conscious, which it does its best to obey. You can specify a simple and general course of action, such as "Attack that creature," "Run over there," or "Fetch that object." If the creature completes the order and doesn't receive further direction from you, it defends and preserves itself to the best of its ability.

You can also choose to take total and precise control of the target. Until you end this effect, the creature takes only the actions you choose, and doesn't do anything that you don't allow it to do. But any action you take with your own body during this effect will be with disadvantage.

Each time the target takes damage, it has a chance of shaking off the dominate effect.

If you are able to cast legendary-tier spells, you can cast this as such to target a non-humanoid or non-beast creature. Alternatively, you can extend the duration of this spell up to 1 hour.
Dominions are a higher order of [[Syrania]]n [[angel]], and focus on a very specific aspect of a single domain, like "wolves" or "swords". They have names and specific [[domain|Syranian domain]]s,
along with extra titles for pomp—//Tezaria, Angel of the Storm, Dominion of the Seventh Spire.// They typically spend their time
in contemplation and use [[virtue]]s as their eyes and hands, but
occasionally a dominion acts directly—especially if its spire is
threatened in some way. As neutral observers, dominions have
no sympathy for mortals, but they're often willing to discuss their
domain with a mortal who has an interesting perspective on it.

It's important to recognize the difference between a
warrior [[angel]] of [[Shavarath]] and a dominion of [[Syrania]]
with the domain of War. The Shavaran is an angel who
//fights// wars, and this has no place in peaceful Syrania. On
the other hand, the dominion of Syrania—perhaps called
the Angel of Swords—//understands// war, and in particular,
knows everything there is to know about a single thing:
swords. They know sword-fighting techniques from every
mortal and [[immortal]] culture. They can recognize any
sword, know the locations of a number of long-forgotten
legendary blades, and may have a few in their possession.
They're likely one of the deadliest swordfighters in
existence, but they don't actually desire to fight, because
that's not the point: they are the Angel of Swords, and they
contemplate swords.

Dominions are typically equal in power to [[planetar]]s, and can cast [[invisibility]] at will, using it to move unseen when observing on the Material
Plane. Dominions might also possess additional abilities
reflecting their absolute knowledge of their domain. For
example, the Angel of Swords could be immune to any
damage inflicted by a sword; perhaps they know perfectly
how to defend against such an attack, or the sword itself
might even refuse to strike them.

Occasionally, a dominion visiting the Material Plane will become corrupted, an irreversible process leading to its transformation into a [[radiant idol]].
The charismatic Donata is the self-styled "Empress" of the ruins of [[Metrol]], ruling her tiny kingdom from the ruins of the Royal [[Vermishard|Vermishards]] and draped in the [[Cyran|Cyre]] Regalia. A master of manipulation, Donata and her soldiers are the result of humanoid experimentation at the hands of House [[Vadalis]] during the [[Last War]].

!! Mournland Magebred

Inspired and vexed by [[Cannith]]’s success with the [[warforged]], the [[Cyran|Cyre]] faction of [[Vadalis]], led by the visionary Venarl d’Vadalis, began experimenting on [[human]]s and other sapient creatures to create superior versions of them. Years ago, in a secret laboratory north of [[Metrol]], the Vadalis researchers succeeded and began training their creations. Then came the [[Mourning]].

That ill-fated day created chaos and killed many [[Vadalis]] scions, but most of their creations survived. The magebred [[humanoid]]s, led by the imposing Donata, quickly took control of the facility and subdued their surviving [[Vadalis]] keepers. Donata acted quickly to secure her status through guile and the elimination of her rivals. She organized her followers, and the magebred made their way out into the [[Mournland]]. Donata and her party entered [[Metrol]] and established themselves in the abandoned government buildings.

For the last several years, Donata and her followers have been secretly working in experimental facilities in [[Metrol]], expanding on the work started by House [[Vadalis]]. The magebred, using inborn powers, enhanced the rumors of Metrol as a haunted
ruin. Donata has become empress of a tiny domain she aims to expand. All she needs is opportunity... and a bigger army.

Magebred [[humanoid]]s are stronger, tougher, faster, smarter, and more charismatic than their normal counterparts. [[Vadalis]]’s magical techniques make them grow and learn faster, so they become functioning adults twice as quickly as normal. Most of Donata’s current magebred soldiers come from her generation, but she is training a new generation.

The [[Vadalis]] techniques create some mental instability, and a tendency toward egotism and self-absorption. Within Donata’s order, the magebred are also taught that they are superior and others are lesser beings. This training exacerbates the selfishness or callousness the magebred naturally possess.

Magebred who venture deeper into the Mournland return with samples of bizarre creatures—or become mutated themselves. Donata sees such events as an opportunity to add new traits to the magebreeding pool. Mutated magebred might have minor monstrous traits, such as slow regeneration or claws. They might also have monstrous habits, such as cannibalism.

!! Allies

Through [[Ikar's Salvage]], Donata also has contacts in the Order of the [[Emerald Claw]]. What such an alliance might breed only time will tell. The order might already be in [[Metrol]], as might some of its [[undead]].
While you wear these heavy leather trousers, your kicks are devastatingly powerful.
Doovol is a young [[golin’dar|goblin]] monk of the [[Kech Uul]], who
hides her face behind a veil. She appears to an adventurer
in their dreams, and offers advice and useful information.
What’s her bond to the adventurer? Does she believe they
can be brought into the [[Uul Dhakaan]]? Or is she simply a
disguise for a manipulative [[quori]]?
Doppelgangers are devious shapeshifters that take on the appearance of other [[humanoid]]s of nearly any size, and possess powerful telepathic abilities. Few creatures spread fear, suspicion, and deceit better than doppelgangers.

Much like [[dolgaunt]]s and [[derro]]s, doppelgangers are a creation of [[Dyrrn]] the Corruptor, a twisted version of a creature native to Eberron—in this case, the [[changeling]]. In their natural form, they are hairless, slick, veiny, grey-skinned humanoids with gaunt features and elongated limbs. They appear almost like half-finished sculptures of humans, with no visible mouths, noses, or eyelids. In addition, doppelgangers can [[detect thoughts]] at will, and many develop a variety of other [[psionic|psionics]] abilities.

However, the primary difference between doppelgangers and [[changeling]]s is psychological. Doppelgangers have been implanted with a desire to cause chaos in the communities around them—even when there's no benefit in it for the individual. They have a fundamentally alien outlook, sowing paranoia and discord with no apparent rational motive.

Many doppelgangers operate alone. Others can be found working with [[Cults of the Dragon Below]]. Fewer still belong to the secret cabal known as the [[Cabinet of Faces]], composed of acolytes of the [[Traveler]] who work to sway major governments and enterprises to some mysterious end.
Dor Maleer shares a border with the [[Tashana Tundra]]—a
border that has been slowly shifting north over the centuries. Prior to the [[Sundering]], Dor Maleer was a loose federation of clans of many races, including [[Akiak]] [[dwarves|dwarf]],
[[Qiku]] [[shifter]]s, and [[ogre]]s. During the Unification, the [[human]]s and [[shifter]]s of the region were absorbed into the [[Riedra]]n alliance, but the [[dwarf]] population was virtually exterminated in the [[Night of Razor Dreams]].

Dor Maleer is the Riedran frontier, and its people
are not as fanatical as their counterparts in many of the
southern provinces. Maleeri are more tolerant of nonhumans than most [[Riedrans]], though [[dwarves|dwarf]] typically receive an unfriendly reaction. Although they perform
what agriculture they can in the harsh mountainous environment, the
Maleeri are primarily hunters, and they respect such
skills. Traditionally, anyone who brings meat to a Maleeri
village is invited to stay and join in the meal. 
A former advocate, Doran Cantar ([[human]] councilor for [[Middle Northedge]]) is an
honest and devout man dedicated to making a difference for the people of Northedge. He obtained his position largely through charisma and dedication, and the support of the priests of [[High Hope]]. He has a deep and abiding faith in the goddess [[Boldrei]], and attributes all of his successes to the good will of the goddess. However, his honesty is often a hindrance in Council intrigues.
Doran Del Doras is the true power in the [[Sharn]] [[embassy|Zilargo Embassy (Sharn)]] of [[Zilargo]]. [[Tasho|Tasho Mol Doras]] is the ambassador, but Doran is the master of spies, and even Tasho follows his orders. Aside from the embassy staff, Doran has contacts spread throughout [[Sharn]] and across [[Breland]] itself. He has
permanent telepathic bonds that allow him to communicate with [[Madra Sil Sarin]] and his superior in the [[Trust]] in [[Korranberg]]. 

Doran Del Doras is always expanding his network of informants and spies, and any character—[[gnome]] or not—could be drawn into his web.
The [[Eska Mountains]] are home to the isolationist [[dwarves|dwarf]] of the Dorann Holds, who are thought to
have migrated from [[Frostfell]] over an ancient land bridge.
Little is known of these clans today. The [[dwarves who eventually migrated|Akiak]] to populate southern regions appear to have split from the Dorann centuries ago. Since then, the Dorann dwarves have maintained a
policy of political isolation, although they still trade with
the northern [[shifter]] tribes and [[Inana]] [[maenad]]s of the
[[Tashyvar Islands]]. It is said that an increasing number of
the Dorann clans are feverishly mining the Eska Mountains, stockpiling raw minerals as they dig. 

The Holds have long been a collection
of loosely confederated clans, with frequent infighting and
skirmishes between various factions. In recent years, however, the infighting has calmed, and several of the clans are
working together to an unprecedented degree. The ''Stone Council'', previously an intermittent conclave gathered to settle important intraclan disputes, has been in permanent session in the fortress of [[Tannishold]]. Able-bodied dwarves
from all clans are being dispatched—forcefully in some
cases—to work in massive excavation projects deep in the [[Eska Mountains]]. Recent reports indicate that heavily armed militias, controlled by a member of the Stone Council known as Hammerhand, now control many of the major passes
and valleys of the Eskas. Opposing [[dwarf]] clans are uniting
under the flag of the [[paladin]] order known as the Clanguard,
and rumors of a civil war hang heavy in the air. 

!! People of the Dorann Holds

The dwarves of the Dorann Holds are a mixed lot.
Northern clans tend to be more primitive, clannish, and
warlike than their distant cousins in the [[Mror Holds]].
Whereas the [[Khorvairian|Khorvaire]] clans settled into a prolonged
peace under [[Karrnath]] annexation, the dwarves of the
northern Dorann Holds have never known such an era,
and the typical state of affairs is one of low-simmering clan
conflict. The southern Eska clans, by contrast, have much
more arable land to work, and hence more peaceful relations, trading among themselves and the nearby [[human]]s
and [[shifter]] tribes. Still, all Dorann dwarves tend toward
mild xenophobia and isolationism, and as such have little
contact with the world beyond their borders.

These days, a Dorann dwarf adventuring in the larger
world is likely to have chafed under the oppressive policies
of the recent Stone Council leadership. As the northern
clans fall into line under the Hammerhand leadership,
southern clans are rallying to the cause of the resurgent
Clanguard [[paladin]]s. A Dorann character is certainly concerned about potential civil war, and might feel compelled to choose a side and take a stand.
Dorius Alyre ir'Korran was a [[gnome]] loremaster of the powerful Korran family in [[Zilargo]] some 3000 years ago. A member of the [[Church of the Wyrm Ascendant]], he was obsessed with the theory that
the deities of the [[Sovereign Host]] were in fact ascended
[[dragon]]s, and believed that he himself could amass enough knowledge and information
to surpass even the Sovereign Lord [[Aureon]] and thereby ascend and take the god’s place. The Korran family invested considerable wealth in Dorius’s obsession; even
those who didn’t believe his theories of divinity were
intrigued by the idea of a vast vault for knowledge. Thus, the [[Library of Korranberg]] was founded.

Dorius ir'Korran was also the primary author of the celebrated Planar Codex, the foremost publication on the nature of the [[plane]]s of existence.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Olladra]]), average lodging (14),
poor lodging (80), average food (25), poor food
(120), poor trades (40), poor services (40), poor
residences (80)<br/>
''First Impression:'' By night, inebriated revelers
stumble forth into the crowded streets from dozens
of taverns. By day, this district is a virtual ghost
town, with only cleaning crews, delivery personnel,
and the occasional determined drunk livening up
the scene.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Forgelight Towers]] (north); [[Center Bridge]] (northeast); [[Fallen]] (bridge, west); [[Foundation]] (bridge, south); [[Cassan Bridge]] (above)

Situated on the western end of the plateau, separated
from [[Torchfire]] and [[Firelight]] by the residential neighborhood of [[Center Bridge]], Downstairs is nevertheless a rowdy district. Most of its businesses are
taverns rather than fine restaurants (though there
are exceptions), and drunken revels are the norm
every night. Carousers finished with an evening at
the theater in [[Torchfire]] or even the upper wards, or
fresh from different kinds of activities in [[Firelight]],
come Downstairs to cap off the night. 

!! Noteworthy Locations

* The [[Diamond Theater]]. A cheap theater once known for bawdy humor, the Diamond has gained fame due to its playwright in residence and has produced several plays about the impact of the [[Last War]].
* [[Four Sails]]. Regular patrons of this restaurant claim that it has the best seafood in [[Sharn]].
This longsword has a dragon-shaped hilt. While you carry it, you gain the ability to speak and understand the Draconic language.
There are patterns hidden in the world. Secrets lie in the conjunctions of the [[plane]]s and [[moon]]s, in strange symbols formed by the flowing lava of a volcanic eruption or the fissures caused by an earthquake. Carved in the walls of ancient citadels and on primeval megaliths,
knot patterns appear to have meaning that only the contemplative mind can hope to comprehend. To those who can read them, these myriad events and signs form a map of possible futures, a map that can be used to shape the course of history.

Scholars call this map the Draconic Prophecy, attributing it to the [[Progenitor Dragons]]: Eberron, Siberys, and Khyber. The Prophecy is vast and complex, its signs scattered across the world. Few [[human]]s or even [[elves|elf]] have the time or resources to unravel its secrets. The foremost students of the Prophecy are ancient [[dragon]]s,
immortal [[fiend]]s, and others who have devoted thousands of years to this work.

What makes the Prophecy especially complex is that it doesn't define a singular path for the future. Rather, the Prophecy is a map that shows many possible futures, along with the steps that must occur to make that future a reality. A fragment of the Prophecy might say,
"If the Bear King is slain by a sorrowful assassin in the Shadow of the [[Mourning]], the Crown will fall from his nation." The "Bear King" could refer to King [[Boranel|Boranel ir'Wynarn]] of [[Breland]], since the bear is Breland's heraldic beast. The "Shadow of the Mourning" could mean that Boranel must be slain in the [[Mournland]], or it could mean that the assassination must occur on the [[anniversary|Day of Mourning]] of the Mourning. This passage doesn't say that Boranel will be assassinated or that the Brelish monarchy will fall; it suggests that if Boranel is assassinated under these conditions, then the monarchy will surely fall. But it could also be fulfilled in different ways, if the terms of the Prophecy are interpreted differently. Other fragments of the Prophecy might cover what happens if Boranel is assassinated under other circumstances, or what happens if he dies of natural causes.

As an adventurer, you could be hired by a scholar trying to piece together a fragment of the Prophecy and clash with a secret society along the way. Or you could discover that your family plays a pivotal role in a fragment of the Prophecy. Will you embrace this or fight your potential destiny? Will you dedicate your life to interpreting the Prophecy or ignore it as just a bunch of mystical nonsense? And might the Prophecy hold the answer to the Mourning itself? 

!! The Prophecy and Sarlona

The few human scholars and [[cataclysm mage]]s who have been able to discuss the Prophecy with the scaled lords of [[Argonnessen]] have found the [[dragon]]s to be utterly unwilling to speak of [[Sarlona]]. Some believe that this is because the dragons
know of an inescapable catastrophe destined to originate
from the continent. But others have a more disturbing
theory. They claim that the dragons don't speak of Sarlona
because the continent and the events that transpire there
are completely invisible to the Prophecy, and this terrifies
the dragons. Whatever the cause, the dragons clearly shun
this land. Beyond the fabled [[Storm Guardians]] of [[Adar]],
the only dragons encountered in Sarlona are rogues. The
[[Chamber]] has its agents in the land of the [[Inspired]], but
something—whether it is fear of the Inspired or fear of the
Prophecy—keeps the dragons from coming to Sarlona.




Drago Thul was once a celebrated warlord of [[Karrnath]] during the [[Last War]]. He bitterly opposed the use of [[undead]] and [[warforged]], believing their use sullied the art of war as championed by the teachings of [[Karrn the Conqueror]]. He is a follower of the [[Three Faces of War]].

When [[Kaius III|Kaius ir'Wynarn III]] ascended to the throne, Drago asserted that Kaius III was actually [[Kaius I|Kaius ir'Wynarn I]], a [[vampire]] "seeking to drain the lifeblood of Karrnath itself." This was a serious accusation; the undead have no rights under the
Code of Galifar and cannot inherit titles or lands. Thul's
challenge spread like wildfire, only to be crushed when
Kaius III met the warlords under the midday sun and cut
his palm to show his freely flowing blood. 

Thul refused to lay down arms when Kaius III began paving the way for peace and the [[Treaty of Thronehold]]. He fled to [[Stormreach]] and founded the [[militia]] known as the [[Swords of Karrn]], and he continues to rally support against "the monster that sits on our throne." 
Dragons are winged reptiles of ancient lineage and fearsome power. Their size alone strikes awe into the hearts of most who witness them; adult dragons have wingspans of about 30 feet, while the wingspans of the most ancient dragons can be as much as 50 feet. The dragons of [[Eberron]] are much more than mere
monsters; adventurers will rarely barge into a dragon's
lair in search of its treasure horde. Dragons in the world
are either aloof and unapproachable, or they are curious
and manipulative, pulling strings behind the scenes or
trying to influence the world in arcane ways.

Most dragons live on the mystery-shrouded continent
of [[Argonnessen]] and avoid contact with those they see as
lesser creatures. They are obsessed with the [[Draconic Prophecy]], which is a map of possible futures rather
than a clear-cut prediction. Its paths are revealed in the
motion of [[plane]]s and moons, in the actions of the [[dragonmarked house]]s, and in dozens of other more subtle
manifestations. Most dragons that are active in [[Khorvaire]] are part of a cabal known as the [[Chamber]].

A dragon in [[Khorvaire]] that isn't part of the Chamber
could be an exile driven from [[Argonnessen]] for some
crime or a scholar pursuing independent research.
Some orphaned dragons grow up in Khorvaire without
contact with Argonnessen, and some dragons have
been twisted by the [[daelkyr]] or corrupted by [[fiend]]s; any
of these could be an antagonist if the adventure you're
crafting calls for a cruel dragon.

The dragons of Eberron aren't restricted in alignment—good [[red dragon]]s and evil [[gold dragon]]s are equally common. Most dragons tend toward neutrality. Even those with good alignments often don't consider the impact of their actions on lesser beings; if a [[Chamber]] dragon must destroy a [[human]] village to foil the plans of a [[demon]], it will do so without hesitation. 

!! Colors and Breath Weapons

Dragons are magical creatures whose innate power fuels their dreaded breath weapons and other preternatural abilities. The type of a dragon's breath weapon can be determined by the color of the dragon's scales; see the below tables. The dragon is also resistant or immune to that type of damage. Note that metallic dragons have two different kinds of magic breath they can use; one destructive, and one more subtle or utilitarian. Chromatic dragons only have destructive breath weapons, but it is typically more powerful than those of comparable metallic dragons.

| !Chromatic |<|| !Metallic |<|
|!Color |!Breath ||!Color |!Breath |
|[[Black|black dragon]] |Acid ||[[Brass|brass dragon]] |Fire, Sleep |
|[[Blue|blue dragon]] |Lightning ||[[Bronze|bronze dragon]] |Lightning, Repulsion |
|[[Green|green dragon]] |Poison ||[[Copper|copper dragon]] |Acid, Slowing |
|[[Red|red dragon]] |Fire ||[[Gold|gold dragon]] |Fire, Weakening |
|[[White|white dragon]] |Cold ||[[Silver|silver dragon]] |Cold, Paralyzing |

{{DragonAgeCategories}}
This weapon is particularly effective against [[dragon]]s (or related creatures, such as a [[wyvern]]s).
This [[red dragon]]'s thighbone is 14 feet long, 250 lbs, and is wrapped in old leather, suggesting that it was once used as a [[giant]]'s greatclub.

When you hit a dragon (or related creature) with this weapon, it deals extra damage.

If you attune to the greatclub, it magically shrinks to a size that you can wield effectively.
''District Type:'' Guildhall district <br/>
''Buildings:'' [[Dragonmarked house|dragonmarked house]] [[enclave]]s (12), [[trade
guild]] halls (20), average lodging (20), average food
(35), upscale trades (20), average trades (50), poor
trades (15), upscale services (20), average services
(35), poor services (13), average residences (120)<br/>
''First Impression:'' Wealthy and important-looking
people parade through this district with escorts of
sycophants and well-armed guards. The sigils of the
dragonmarked houses are in abundant view.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Dava Gate]] (north); [[Sword Point]] (northeast); [[Warden Towers]] (bridge, southwest); [[Everbright]] (bridge, south); [[Smoky Towers]] (bridge, southeast); [[Granite Halls]] (below); [[Highest Towers]] (above)

[[Enclave|enclave]]s belonging to the thirteen [[dragonmarked house]]s can be found in this district. Of the thirteen, the most important in [[Sharn]] are House [[Tharashk]], House [[Cannith]], House [[Kundarak]], House
[[Sivis]], and House [[Lyrandar]]. Those five families
have the largest [[enclave]]s in Dragon Towers, as well
as smaller outposts in the areas of the city where
they do most of their business.

!! Noteworthy Locations

* ''Dragonmarked house enclaves:''
** [[Cannith|Cannith Enclave (Dragon Towers)]]
** [[Jorasco|Panaceum]] (the Panaceum)
** [[Kundarak|Kundarak Enclave (Dragon Towers)]]
** [[Lyrandar|Lyrandar Enclave (Dragon Towers)]]
** [[Sivis|Sivis Enclave (Dragon Towers)]]
** [[Tharashk|Tharashk Enclave (Dragon Towers)]]
** [[Phiarlan|Demesne of Shadow]]
* [[Globe Information Agency]]. An elite [[inquisitive]] agency with ties to House [[Tharashk]].
* The residence of [[Thora Tavin]], secret leader of House [[Tarkanan]]. This spacious mansion serves as the headquarters of the criminal organization.
Introduced into [[Sharn]] by [[Daask]], dragon's blood is a potent and highly addictive stimulant. In addition to inducing euphoria, it can enhance spellcasting ability or even temporarily imbue a user with the ability to cast arcane spells, as a [[sorcerer]]. The drug's effects are potentially dangerous and always unpredictable. This isn't something a player character should want to use; adventurers are more likely to interfere with Daask smugglers or deal with an addict who accidentally casts a [[fireball]] in a crowded street. 

{{random magical effect}}
A ring of jutting stones rises from the earth within the heart of [[Breland]]’s farm country.
The ring consists of ten stone monoliths, each more than fifteen feet high, that sit slightly askew in a circle around a patch of uneven ground some thirty feet across. The ring
of stones resembles a massive crown of jagged rock. Known
far and wide as the Dragon’s Crown, the place has long
been the subject of speculation, outlandish legends, and
the occasional dark ritual. Some believe that [[giant]] hands
built the Dragon’s Crown in [[ages|Age of Giants]] past.

Nothing much grows within or near the Crown. On
some nights, especially when one or more [[moon]] is full
and bright, the monoliths glow with an eerie inner light.
It is said that on these nights, the monoliths sing, but
not many are willing to visit the site after dark to prove
this tale one way or another. It is also said that cultists
use the site to conduct dark rituals, especially members
of the various sects devoted to the [[Dragon Below|Cults of the Dragon Below]]; except
for the occasional carcass discovered lying in the center
of the Crown, no evidence of such activities has ever
been gathered.
The Dragon's Hoard is a [[Ghallanda]] resort, where travelers can enjoy the utmost in luxury if they can afford the most expensive amenities.
!! Dragon Age Categories

The listed [[creature tier]] of "4" for each of the true dragons references a fully grown adult. The table below offers general guidance for the range of tiers for dragons of different ages.

|!Category |!Tier |!Age Range |
|Wyrmling |2 |5 years or less |
|Young |3 |6–100 years |
|Adult |4 |101–800 years |
|Ancient |5 |801 years or more |
"Born of [[dragon]]s", as their name proclaims, the dragonborn walk proudly through a world that greets them with fearful incomprehension. While they originated in the mysterious continent of [[Argonnessen]], they are known to the people of [[Khorvaire]] as one of the "[[scales]]" of [[Q'barra]].

!! Dragonborn Biology

Dragonborn closely resemble [[dragon]]s standing erect in humanoid form, though they lack wings or a tail. They are tall and strongly built, often standing close to 6½ feet tall and weighing 300 pounds or more. Their hands and feet are strong, talonlike claws with three fingers and a thumb on each hand.

Young dragonborn grow quickly. They walk hours after hatching, attain the size and development of a 10-year-old [[human]] child by the age of 3, and reach adulthood by 15. They live to be around 80.

Depending on the draconic ancestry of a particular clan, dragonborn within that clan possess a breath weapon and resistance similar to a [[dragon]] of that type. For example, a dragonborn with [[silver dragon]] ancestry can exhale a cone of icy breath and is resistant to cold.

!! Dragonborn of Argonnessen

The origins of the dragonborn are shrouded in mystery, but all signs indicate they emerged from the continent of [[Argonnessen]]. To this day, they can be found on the [[Seren]] Islands, and tales maintain that great dragonborn city-states exist in Argonnessen's interior, warring with one another over interpretations of the [[Draconic Prophecy]], or at the behest of their [[dragon]]-kings.

!! Exodus to Q'barra

Dragonborn made their way to [[Khorvaire]] as part of the retinue of [[Rhashaak]] tens of thousands of years ago, during the [[Age of Monsters]]. Their goal was to guard [[Haka'torvhak]], the prison of the [[overlord]] [[Masvirik]]. For thousands of years, the dragonborn defended the fiend's resting place, but eventually their restlessness and ambition won out over their sacred duty. They launched an empire and ventured beyond the [[Endworld Mountains]], spreading into the modern-day [[Talenta Plains]]. There they clashed with the [[goblinoid]] Empire of [[Dhakaan]] for generations.

However, their negligence eventually came back to haunt them. [[Masvirik]] strained against its bonds, [[Rhashaak]] faltered, and the Cold Sun's influence spread across the land, corrupting reptilian creatures in a thousand-mile radius, spawning the [[Poison Dusk]]. The dragonborn empire collapsed, and they returned to [[Q'barra]] in shame to face the source of the curse.

The struggle against the [[Poison Dusk]] nearly
destroyed the dragonborn of [[Khorvaire]]. Barely a
tenth of their number survived the struggle. After
the first scourging of [[Haka'torvhak]], the influence
of the [[Cold Sun|Masvirik]] grew weaker but it has never faded
completely. The dragonborn couldn’t kill the tainted [[Rhashaak]]
or cleanse Haka’torvhak itself, and new servants of
the Poison Dusk are inevitably drawn to the citadel.
To this day, a percentage of every dragonborn
generation falls prey to the corruption of the Poison
Dusk. There have been times when entire clans have
turned to the darkness and been exterminated by
those around them. This has kept the dragonborn
population low. They have never regained the numbers they had at the height of their power. 

!! The Clans of Ka'rhashan

The dragonborn of Q'barra call themselves //Trothlorsvek//, “the defenders of the [[Prophecy|Draconic Prophecy]].” The //Trothlorsvek//
live in the ruins of their empire, where they are
bound by duty to fight a battle that cannot be won.
They are split into clans, each of which can trace its
lineage back to one of the regiments that came from
[[Argonnessen]] and each of which once held greater territories in the fallen empire. Each clan is assigned to guard a [[site|dragonborn clanhold]] touched by fiendish power and to battle demons and corruption. What humans see as the “holy lands” of the dragonborn are actually the cursed sites they are charged to guard. They keep outsiders from these places lest strangers cause the ancient evils to rise again. 

[[Ka'rhashan]] is the crown city of the dragonborn, and the clan that
holds Ka’rhashan speaks first at every gathering.
Every five years a ritual battle is fought for control
of the city. Long ago this battle was a prelude to an
attack on [[Haka'torvhak]]; every five years the ruling
clan would lead the others in scouring the cursed
citadel. There was a time when dragonborn would
slaughter [[kobold]]s on sight, as these creatures are most
vulnerable to the corruption of the [[Poison Dusk]]. This
zeal is fading. It has been thousands of years since
[[Rhashaak]]’s fall. The Poison Dusk remains a threat,
and the //Trothlorsvek// must remain ever vigilant
against the corruption of the young.

Some say that the influence of the [[Poison Dusk]] is
a result of remaining in such close proximity to the
demonic ruins or of staying out of battle for so long.
These warriors scoff at the idea that the Poison Dusk
would grow more powerful if they were to abandon
their posts. Many young dragonborn dream of exploring distant realms and pitting their skills against new challenges. Some wish only for adventure, and this
is the path of many dragonborn player characters.
Other hunger for conquest and believe it is time for
the dragonborn to go forth and reclaim their empire.
This is the philosophy of [[Mishva|Mishva Garodya Stormhorn]] of the Stormhorn
Clan, and many warriors are heeding her call. For now, the Flamebrow clan remains in control of Ka’rhashan, under High Elder [[Bhisma|Bhisma Na'kala Flamebrow]].

!! Q'barran Dragonborn Culture

The Clans of [[Ka'rhashan]] are a martial nation. They
came to [[Khorvaire]] as an army, and they have never
stopped fighting. Only the [[Valenar]] rival the dragonborn in dedication to the art of war. Where the Valenar fight to honor their ancestors, the dragonborn of Ka’rhashan are driven by a burning desire for glory—a smoldering urge to prove their skill against greater and greater challenges. It is this urge that underlies the growing discontent among the dragonborn.

Clan elders are often [[cleric]]s who teach the tenets
of [[Thir]]—the Draconic Sovereigns. Other clans are led by //ukristroth//, [[bard]]s dedicated to the mysteries of the [[Prophecy|Draconic Prophecy]] and the history of the
//Trothlorsvek//. While clerics guide the people in daily
prayer, it is the //ukristroth// who adjudicate the ritual
battles and who are urging the people to remember
their ancient duty. 

Despite losing their empire, the dragonborn are
proud to the point of arrogance. They believe that the
original defeat of the [[Poison Dusk]] was caused solely
by the military might of the //Trothlorsvek//, and they
dismiss any tales of [[dawn dragonshard|dawn shard]]s as nonsense.
Most consider the [[lizardfolk]] to be superstitious primitives, and they have long seen the [[kobold]]s as little more than animals. They are willing to trade with these races but not to treat them as equals.

The dragonborn place no special significance on the [[dragonshard]]s, but they have no intention of allowing outsiders to pillage the lands they have sworn to guard. Pride, love of battle, and dreams of glory are the watchwords of the modern dragonborn, and this
is laced with an iron backbone of duty that could rise
again to the fore if their pride leads to disaster. 
The [[dragonborn]] of [[Q'barra]] divide their territories into clanholds, each autonomously ruled by clan elders, and all recognizing the holy site of [[Ka'rhashan]] as their ancestral home. These clanholds are spread across the trackless jungles surrounding [[Haka'torvhak]] and in the forests east of the [[Adder River]]. What [[human]]s see as the “holy lands” of the dragonborn are actually cursed sites touched by fiendish power they are charged to guard. They keep outsiders from these places lest strangers cause the ancient evils to rise again. 

!! The Dragonborn Clanholds

<<list-links-article "[tag{!!title}sort[title]]">>
''District Type:'' Red light district<br/>
''Buildings:'' Temple ([[Olladra]]), shrine (the [[Traveler]]),
upscale lodging ([[Velvet's]]) (1), average lodging (9), poor
lodging (70), average food (20), poor food (80), poor
trades (80), poor services (especially brothels, gambling
halls, and pawnshops) (140), poor residences (100)<br/>
''First Impression:'' This district varies dramatically from street to street, blending loud, lowbrow entertainment with more sophisticated and sensual
pleasures for wealthier visitors.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Black Arch]] (southwest); [[High Walls]] (north); [[Firelight]] (bridge, northwest); [[Blackbones]] (below); [[Deathsgate]] (above)

Like the [[changeling]]s who control most of the brothels, Dragoneyes shifts its appearance to suit the needs of the moment. Where it caters to teamsters and
[[Cogs]] workers, Dragoneyes is a rough-and-tumble
neighborhood filled with rowdy taverns and gambling
halls. But the west side of the district is designed with
merchants and the wealthy in mind, and the delights
it offers are more sophisticated.

Dragoneyes has a number of inns, taverns, and restaurants aimed toward frequent travelers passing through [[Sharn]]. But there is no reason a visitor should have to dine or sleep alone. The streets are full of people of all races and genders offering companionship. Wise people avoid these freelance operatives—who are often thieves or con artists looking for an
opportunity—and instead frequent one of the many brothels in the district. Dragoneyes also contains a handful of dream parlors, places where illusion magic
is used to provide exotic entertainment.

Dragoneyes is the base of operations of the
[[Tyrants]], a guild of deception run by [[changeling]]s. The Tyrants manage to walk a fine
line, dealing with both [[Daask]] and the [[Boromar Clan]]
to provide the people of Dragoneyes with [[dreamlily]]
and [[dragon's blood]]. 

!! Noteworthy Locations

* [[Chance]]. A legendary gambling hall. In addition to standard games, it's said that the host can cover a wide range of unusual wagers.
* The [[Shifting Hall]]. A small, unassuming building on the Street of Eyes where prospective clients of the [[Tyrants]] can come in search of services.
* [[Velvet's]]. Staffed by [[changeling]]s, this comfortable inn specializes in fulfilling fantasies; both the staff and the rooms can be adapted to fit any scenario. Though some clients have romance in mind, others come to Velvet's to relive triumphs, to prepare for debates or trials, or for help in developing a new identity.
This spear is enchanted to emit bright light from its tip when the command phrase is spoken, which is "The [[Daughter of Khyber]]'s eyes shine," written in Draconic runes on the spear's crossguard. The light can be used for up to one hour total each day.
This breastplate has a gold dragon motif worked into its design. It grants its wearer resistance against the breath weapons of [[dragon]]s.

A [[halfling]] healer touches a dying man; the mark on her
forehead blazes with blue fire as his wounds close and
vanish. A [[half-orc]] bounty hunter reaches out with the
power of his mark to find his prey. A [[human]] [[artificer]]
touches a [[creation forge]], and the symbol on her hand
flares as the eldritch machine rumbles to life. Each of
these people possesses a dragonmark, a symbol etched
on the skin in colors more vivid than any tattoo, magical
power made flesh.

A dragonmark enhances the user's ability to perform
certain tasks. For example, the [[Mark of Making]] guides
the hands of the smith, while the [[Mark of Shadow]]
helps its bearer avoid enemies. The power of a dragonmark can also manifest in more dramatic ways. The
[[Mark of Storm]] can scatter enemies with a blast of
wind, while the [[Mark of Shadow]] can weave illusions.

You can't buy or choose to develop a dragonmark;
each mark is tied to [[bloodlines|dragonmarked house]] within specific species,
as summarized in the table below. A dragonmark appears on a person around adolescence, though not every heir manifests the mark.

{{DragonmarksTable}}

Long ago, the families that carry the marks joined
together to form the [[dragonmarked house]]s. Over the
course of centuries, these houses have used their gifts
to establish powerful monopolies. For example, only
House [[Lyrandar]] heirs with the [[Mark of Storm]] can
pilot [[airship]]s. This control over vital services gives the
houses tremendous power. 

!! Dragonmarks and Backgrounds

Dragonmarks are bound to certain bloodlines, and by
choosing a mark, you are establishing your character's
blood connection to one of the families in the dragonmarked houses. It's up to you to define your relationship
to the house. Were you brought up in the house? Or are
you independent from it? This is best represented by
your background. Consider the following options:

* ''Agent.'' You have a close, ongoing relationship with your house. The house agent background is a good choice if you are actively working for the house. Alternately, you could take the noble background to reflect a blood tie to the leaders of the house.
* ''Independent Scion.'' You were raised or trained by the house, but you've kept your independence. This means you don't have many special privileges, but you also don't have responsibilities. 
* ''Excoriate.'' When a dragonmarked heir defies their house, they might be cut off from their family. In the past, your mark would be flayed from your body. Although this mutilation is no longer practiced, such exiles are still called excoriates. If you're an excoriate, consider what you did to deserve this punishment. Were you a criminal? A charlatan? Or perhaps a sage who engaged in forbidden research?
* ''Foundling.'' Your ancestors left the house long ago. You have no ties to the house and may not have known you were connected by blood before you manifested your dragonmark. As an outlander or an urchin, you might know nothing about the houses. As an acolyte or a hermit, you could have put your faith ahead of worldly things, choosing not to pursue a connection with the houses. Whatever you decide, this is an opportunity to talk with your DM about the role you'd like the house to play in a campaign. Do you want them to be your enemy? Would you prefer to avoid them completely? Or do you want to work your way into a position of power in the house, despite being an outsider? 

!! The Powers of the Mark

Each dragonmark grants a set of abilities that reflect the
inherent powers of the mark. Your dragonmarked race
gives you a set of traits derived from the magic of your
mark. If you are a spellcaster, your dragonmark also fuels or channels some of your spells. 

Over the centuries, the houses have developed tools that enhance and channel the powers of a mark, and these [[dragonmark focus item]]s give the houses much of their economic power. 

!! Dragonmark Appearance

A dragonmark appears on the skin. There are twelve
known dragonmarks, each unique in design and power.
A dragonmark can appear on any part of the body. One
[[half-elf]] could have the [[Mark of Detection]] across an eye,
while another has it in the palm of the hand. Dragonmarks appear with vivid shades of blue and purple and
shimmer or even move slightly. When used, they grow
warm to the touch and sometimes glow (though this
doesn't produce useful illumination). A dragonmark
can't be removed—even if a limb bearing a dragonmark
is cut away, the mark eventually manifests on another
part of the bearer's body. All dragonmarks share a similar initial appearance, but a dragonmark can grow in
size and complexity as a character gains levels and uses
it to cast more powerful magic.

While dragonmarks share the same general appearance, your dragonmark could have a unique quality. Roll
on the table below for inspiration. 

| !<<dr d8>> |!Dragonmark Quirk |
| 1 |Your dragonmark is unusually small or faint. |
| 2 |Your dragonmark is exceptionally large. |
| 3 |Your dragonmark appears somewhere else on your body whenever you finish a long rest. |
| 4 |Your dragonmark emits dim light in a 5-foot radius for 10 minutes whenever you use it. |
| 5 |Your dragonmark tingles and changes color for a moment when you're within 10 feet of someone with the same mark. |
| 6 |When you use your dragonmark, it animates and adopts the appearance of your dragon marked house's emblem for 1 minute. |
| 7 |Your dragonmark is an unusual color. |
| 8 |Your dragonmark changes size whenever you use it. |

!! Dragonmarks and Sarlona

[[Sarlona]] was the birthplace of humanity, and today [[human]]s make up the vast majority of the dragonmarked population, but no dragonmarks have ever
appeared on the people of Sarlona. Early signs indicate
that the children of dragonmarked parents don't develop
dragonmarks if they are conceived in Sarlona. The [[Twelve]]
has no explanation for this phenomenon, but many
believe that it is one of the keys to the ultimate mystery of
the dragonmarks and their purpose in the world. 
This brooch is embedded with a small Siberys [[dragonshard]],
usually depicting the crest of its [[dragonmarked house]]. Each
dragonmark channel is tied to a specific [[dragonmark]], such as
the [[Mark of Healing]] or the [[Mark of Making]], and you can only
attune to it if you possess that dragonmark.

While wearing a dragonmark channel, you can use its power rather than your own to perform one of your dragonmark abilities (equivalent to a "common" tier spell). After using the channel once in this way, its power is depleted and must recharge overnight.

See also [[dragonmark reservoir]].
Much of the influence of the [[dragonmarked house]]s is based on a simple principle: it's easier to amplify an existing magical effect, such as that of a [[dragonmark]], than to create the same effect from nothing. Taken on their own, the powers granted by the dragonmarks aren't overwhelmingly powerful. However, over the course of centuries, House [[Cannith]] and the [[Twelve]] have developed items that focus and enhance the powers of the mark to produce powerful, reliable effects. In many cases—such as the [[storm spire]]s of House [[Lyrandar]] and the [[creation forge]]s of House Cannith—the [[Arcane Congress]] has been unable to duplicate the effects of these powerful focus items for non-dragonmarked creatures. Other items have since been reproduced in forms that anyone can use, but an item that requires the user to possess a specific [[dragonmark]] is always easier to create and less expensive than one that produces the same effect for anyone, giving the dragonmarked houses an important advantage.

Dragonmark focus items can only be created using proprietary tools, and are produced exclusively by House Cannith and the Twelve for use by trusted agents of the dragonmarked houses. So while many [[Medani]] [[inquisitive]]s wear [[Medi spectacles]], they acquired them through service to the house, not by purchasing them with gold.
Dragonmark reservoirs are always embedded with a Siberys
[[dragonshard]], but come in many forms, most commonly an
amulet or bracelet bearing the design of the [[house|dragonmarked house]] crest. Each
reservoir is tied to a specific [[dragonmark]], such as
the [[Mark of Healing]] or the [[Mark of Making]], and you can only
attune to it if you possess that dragonmark.

While wearing a dragonmark channel, you can use its power rather than your own to perform one of your dragonmark abilities (equivalent to a "common" tier spell). After using the channel 5-10 times in this way, its power is depleted and must recharge overnight.

See also [[dragonmark channel]].
Long ago, the families that carry the [[dragonmark]]s joined together to form the dragonmarked houses. Over the course of centuries, these houses have used their gifts to establish powerful monopolies. For example, only House [[Lyrandar]] heirs with the [[Mark of Storm]] can pilot [[airship]]s. This control over vital services gives the houses tremendous power.

In the past, the dragonmarked houses were held
in check by the united kingdom of [[Galifar]]. But in the
wake of the [[Last War]], people wonder if any nation has
the power to enforce its wishes on the houses. 

{{DragonmarksTable}}

!! All About the Houses

Every dragonmarked house has traditions and secrets.
Here's a few facts that apply to most of the houses:

* ''Enclaves.'' Most dragonmarked houses maintain [[enclave]]s in major cities. These serve as strongholds and hubs for house businesses. A city may also have any number of businesses tied to the house, but these are simply providing services and don't have any direct connection to house leadership. 
* ''Names and Ranks.'' Any heir of the house who develops a [[dragonmark]] is allowed to add the //d'// prefix to the house name: for example, [[Merrix d'Cannith]]. Despite the [[Korth Edicts]]' proscription against house members holding noble titles, regional leaders within the houses are called barons. Most houses are led by a matriarch or patriarch, though some are led by a council.
* ''Emblems''. Each dragonmarked house has an emblem, a distinctive symbol that features on their heraldry, official seals, crafted goods, and anything else that warrants the house's stamp of authenticity. 
* ''The Twelve.'' The [[Twelve]] is an organization that facilitates cooperation among the dragonmarked houses.
* ''Excoriates.'' Excoriates are dragonmarked heirs who have been cut off from their houses.
* ''Foundlings.'' Foundlings are people who have a [[dragonmark]] yet have no tie to a dragonmarked house.
* ''Test of Siberys''. Dragonmarks manifest around adolescence. Each house puts its heirs through a trial called the Test of Siberys. The specific trials vary by house, but they place the heir in circumstances where they are likely to manifest the mark, if they have it. About half of the members of a bloodline manifest the mark.
* The [[Korth Edicts]]. A set of laws written under [[Galifar]] that regulate the houses. 
|!Dragonmark |!House |!Race |![[Guild|trade guild]] Specialties |
|[[Detection|Mark of Detection]] |[[Medani]] |[[half-elf]] |Bodyguards, investigation, risk management |
|[[Finding|Mark of Finding]] |[[Tharashk]] |[[half-orc]] |Bounty hunting, investigation, prospecting |
|[[Handling|Mark of Handling]] |[[Vadalis]] |[[human]] |Animal training and breeding |
|[[Healing|Mark of Healing]] |[[Jorasco]] |[[halfling]] |Healing |
|[[Hospitality|Mark of Hospitality]] |[[Ghallanda]] |[[halfling]] |Food, lodging, urban information |
|[[Making|Mark of Making]] |[[Cannith]] |[[human]] |Manufacturing |
|[[Passage|Mark of Passage]] |[[Orien]] |[[human]] |Land transportation, teleportation |
|[[Scribing|Mark of Scribing]] |[[Sivis]] |[[gnome]] |Communication, translation, verification |
|[[Sentinel|Mark of Sentinel]] |[[Deneith]] |[[human]] |Bodyguards, mercenaries |
|[[Shadow|Mark of Shadow]] |[[Phiarlan]]<br/>[[Thuranni]]|[[elf]]<br/>[[elf]]|Entertainment, espionage<br/>Entertainment, assassination |
|[[Storm|Mark of Storm]] |[[Lyrandar]] |[[half-elf]] |Air and Sea transportation |
|[[Warding|Mark of Warding]] |[[Kundarak]] |[[dwarf]] |Banking, storage, prisons |
The Dragonreach sea stretches between [[Argonnessen]] and
[[Aerenal]], blending into the [[Thunder Sea]] at the western end
and the [[Lhazaar Sea]] and the [[Sea of Rage]] in the north. It is a
favorite haunt of [[dragon turtle]]s, and water-loving [[dragon]]s
(particularly [[bronze dragon]]s) frequently swim in its waters.
Most sailors are reluctant to sail through it as a result, and
when they do, they hug the Aerenal coast.
The dragonseye oak grows in [[Q'barra]], and its acorn empowers the casting of certain [[evocation]] [[spell]]s and the creation of [[alchemical explosive]]s.
The crystals known
as dragonshards serve as the fuel of the
magical economy and are used in items that
amplify the powers of [[dragonmark]]s. 

Dragonshards aren't [[magic item]]s themselves but are
crystals imbued with magical energy. They play a vital
role in the creation of magic items and the performance
of certain rituals in [[Eberron]]. Dragonshards come in
three varieties, each found in a different environment.

''Eberron dragonshards'' are found in shallow soil
and often encased in geode-like stone shells. Eberron
dragonshards can be found almost anywhere, but the
most significant deposits have been discovered in jungle
environments, notably [[Q'barra]] and [[Xen'drik]]. In their
raw form, Eberron dragonshards are rosy crystals with
crimson swirls flowing in their depths and are typically
refined into a glowing powder. This dragonshard dust
can be used to fuel almost any act of magic. Eberron dragonshard dust
is used in the creation of some [[magic item]]s, and many
powerful tools—such as the [[lightning rail]] and elemental
[[airship]]s—require an ongoing expenditure of Eberron
dragonshards to maintain their enchantments.

''Khyber dragonshards'' are found deep in the earth,
often near layers of magma. These crystals typically
grow on cavern walls, and superstition says they flourish in areas with significant [[fiend]]ish activity. Khyber dragonshards are deep blue or dark violet, laced with
gleaming veins. Khyber dragonshards have an affinity
for binding magics. Elemental binding—which is behind
[[airship]]s, the [[lightning rail]], and [[elemental galleon]]s—requires a Khyber dragonshard to hold the [[elemental]].
Khyber shards are used for phylacteries, planar binding,
and other effects that trap or manipulate spirits. Khyber
dragonshards can also be used for [[necromantic|necromancy]] rites.

''Siberys dragonshards'' fall from the Ring of [[Siberys]], the ring of crystals that encircles the world. While rare in Khorvaire, there are significant Siberys dragonshard fields in the continent of [[Xen'drik]], and this is a potential source of great wealth for explorers. Siberys dragonshards are amber in color, with swirling golden veins gleaming within. These dragonshards are used in the
crafting of [[magic item]]s that require [[dragonmark]]s for
attunement. Larger ones may be required for [[eldritch machine]]s or the creation of [[legendary|rarity]] items or artifacts.

!! Dragonshards of Q'barra

[[Q'barra]] is known for two unusual grades of Eberron dragonshards: [[dusk shard]]s and [[dawn shard]]s, each worth five times as much as a standard shard of similar size.

!! Dragonshards and Sarlona

A few veins of Khyber shards exist on [[Sarlona]], largely in the hands of the [[dromite]]s. Defying any logic, however, Eberron and Siberys dragonshards simply do not form on Sarlona. The [[Inspired]] of [[Riedra]] established the outpost city of [[Dar Qat]] in [[Xen'drik]] about 300 years ago to harvest that continent's plentiful dragonshards.
The [[Shadow Marches]] hold deposits of Eberron [[dragonshard]]s, the source of House [[Tharashk]]'s wealth. These
fields aren't as rich as those in [[Q'barra]], but there's gold
to be made by those willing to hunt for shards in the
dangerous swamps. 

The richest dragonshard fields in the Marches can be found on the western bank of the [[Glum River]], between [[Glumtown]] and [[Zarash'ak]] in shallow water. Such finds are marked by a pale red glow beneath the muck.
During the [[Last War]], the
Dragontail Guild of House [[Ghallanda]] provided food and shelter to armies
in the field in exchange for gold and a guarantee
of neutrality. Since the [[Treaty of Thronehold]], this
guild has been shrinking dramatically; most national
armies and mercenaries are garrisoned, not in the
field. Many war veterans within the guild are seeking
their fortunes in other areas of the house’s operations,
or are trying to find their own way in the world.
The Dragonwood is a forest in [[Breland]], and holds the headwaters of the [[Dagger River]].
! The Herder

''Color:'' Lavender<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Handling|Mark of Handling]]<br/>
''Associated Plane:'' [[Risia]]

Large and lavender, Dravago is a striking image in the sky. Its orbit typically keeps it at a distance from other moons, and old legends say that it is herding the rest and keeping them in motion. Children of Dravago are said to be more comfortable with animals and plants than with people—gifted herders, handlers, and farmers, but often awkward in social situations. Some say that stones from Dravago occasionally fall to Eberron, and alchemists have long claimed that this "purple dust of Dravago" holds remarkable magical properties.
This fearsome steel helm makes your eyes glow red while you wear it.
Dread Lake is located deep in the jungle of [[Xen'drik]], just south of [[Tempest's Spine]].
The prison island of Dreadhold floats off
the northern reaches of [[Cape Far]] of the mainland [[Lhazaar Principalities]]. Established first by [[Karrn the Conqueror]] as a place for exiling deposed rulers or courtiers fallen from favor, it was converted by the early [[Galifar]]
kings into a nigh-inescapable prison for those too important
to execute and too dangerous to be left free. The [[dwarves|dwarf]] of
House [[Kundarak]] manage the prison, which holds the most
dangerous criminals from across the [[continent|Khorvaire]], including a
number sent here for wartime atrocities. Most of the dwarves
consider a tour of duty at Dreadhold to be tantamount to
exile, but the bearers of the [[Mark of Warding]] make sure the
prison stays secure despite the bleakness of the place. Rumors
persist that an important prisoner from [[Karrnath]] is interred
here, and that the dwarves use the prisoners to mine Khyber
[[dragonshard]]s from deep chasms beneath the island. Some say Dreadhold's vaults hold some of the greatest treasures of House Kundarak. 
The Dreadwood is the forest that completely covers [[Dreadwood Isle]] in the [[Lhazaar Principalities]]. To a lesser extent than the neighboring island of [[Lorghalan]], the jungles of Dreadwood Isle are touched by the [[plane]] of [[Lamannia]], and many [[elemental]]s can be found here.
Dreadwood Isle is an island in the [[Lhazaar Principalities]]. To a lesser extent than the neighboring island of [[Lorghalan]], the [[jungles|Dreadwood]] of Dreadwood Isle are touched by the [[plane]] of [[Lamannia]], and many [[elemental]]s can be found here.
This iron token is inlaid with a sliver of a Siberys [[dragonshard]].
Most are worn as brooches, but others take the form of coins or
keys. While an uul'kur (dream key) is a common magic item, the secret of
their creation is known only to the chot'uul monks of the [[Heirs of Dhakaan]], and they are largely unknown in the [[Five Nations]].

When you sleep with an uul'kur on your person, you remain
fully lucid when you dream, and when you wake, you clearly
remember everything that transpired. If you understand the
workings of the uul'kur, you can choose to bind it to your
dreams until dawn the next day. While bound, any creature who
sleeps with this token on its person shares your dream instead
of creating its own, provided you are asleep at the same time.
People always want what they cannot have, and every new
law creates a source of profit for those who challenge it.
The major challenger in [[Riedra]] is a cabal known as the
Dream Merchants. The Merchants are smugglers first
and foremost—they run [[dreamlily]] and other [[Sarlona]]n
goods to [[Khorvaire]], and they provide a black market for
Riedrans who want goods beyond the basic tools of survival provided by the [[Inspired]]. In the bastions, the Dream
Merchants provide other criminal services: theft, forbidden information, fencing of stolen goods, even assassination. Such actions are extremely dangerous, and the costs
of criminal services are typically four times what they might be in [[Sharn]]—assuming the Merchants are willing at all.

The Dream Merchants, while established in bastion cities, are rarely seen in the villages. Individual merchants sometimes travel between villages, posing
as couriers. They carry [[bags of holding|bag of holding]] containing a wide
range of contraband goods they can exchange with villagers. Wandering merchants are generally masters of sensing others' motives. They are very careful about whom they
reveal their true nature to, since one misstep could bring
death. Although most [[Riedrans]] have heard of the Dream
Merchants, common wisdom is that these people are the
direct servants of the //altavars//, sent to tempt and test the
devotion of the innocent. Loyal Riedrans report such
criminals immediately. 

Dream Merchants can be found in most bastion cities, but a [[consequence]] of the attempt to find them may result in the authorities learning of the character's interest. The Merchants also maintain a
number of outposts on the islands of [[Ohr Kaluun]]. Their
strongest support on the mainland lies in [[Rhiavhaar]]—remnants of the freebooter spirit holding true.

A few Merchants manage to unlock innate [[psionic|psionics]] talents; the [[dimensional pocket]] power can be invaluable for a smuggler.

''Getting the PCs Involved:'' The Dream Merchants are
great contacts for those who want to enter [[Riedra]] by stealth.
Characters who are conversant with the criminal underworld
of [[Sharn]] might be able to make contact with a merchant
through the [[dreamlily]] trade. The Merchants can smuggle
people into [[Nulakhesh]], [[Pyrine]], or [[Corvagura]] through
their [[Ohr Kaluun]] gateway. They can also provide Riedran
traveling papers, at a steep cost of 25 c per person. Within
Riedra, Dream Merchants can help with transportation,
information, or other needs. They can acquire nearly anything, but exotic goods take time—and prices are modified up to 100% in favor of the merchant.

!! True Dissidents?

There is always a chance that a dissident group in [[Riedra]] is not what it appears to be. For example, it is possible that the Dream Merchants
are in fact an arm of the [[Thousand Eyes]]. It is almost impossible to eliminate crime—by creating the black market
itself, the Eyes gain the ability to monitor and control it.
The [[Inspired]] are in favor of the [[dreamlily]] trade, which
helps to weaken the people of [[Khorvaire]], but they don't
want to be seen as officially condoning it. Instead, they
somehow fail to completely exterminate the Dream Merchants. Through this control, the Thousand Eyes gains
the knowledge it needs to identify criminals and eliminate
the gravest threats to society while controlling the flow of
contraband goods and reaping any profits themselves.
The [[dreamspace]] threads through you and those you
know, allowing your thoughts to touch in dreams. You must be [[dreamtouched]] to use this psionic power.

You experience dreams that focus on those
you know. You can attempt to touch the
mind of a creature while you sleep, rest, or meditate. You send a short message of twenty-five words or less to a subject you have previously met and
spoken to in the waking world. The subject receives and
understands the message whether awake or sleeping. This ability does not allow the
subject to respond, but the subject knows the message is
from you.

This ability functions regardless of the distance to
the subject, but only if you and the subject are on the
Material Plane.
In the spaces between sleeping and waking, nightmares
wait with grasping claws. The [[quori]] spirits that rule [[Dal Quor]] spent a thousand years seizing control of the continent of [[Sarlona]]. Now they have turned their many eyes
toward [[Khorvaire]]. The ultimate goal of the Dreaming Dark is to control all the nations. of the world. The plane of Dal Quor goes through cycles of light and darkness, and the current age is coming to an end. The nightmare spirits that rule the plane believe that by seizing control of mortal civilization—by forcing all the people of Eberron to dream the dreams they devise—they can maintain this current age of darkness indefinitely. So the fiends of
the Dreaming Dark aren't merely hungry for power; they
are fighting for survival.

The [[quori]] can't manifest physically in [[Eberron]], but they have other options. They can possess willing [[humanoid]]s, creating agents known as the [[Inspired]]. They can also manipulate the dreams of mortals. The Dreaming Dark can trick a priest by sending dreams that appear to be divine visions, or inspire a soldier to rebel against their lord.

The greatest weapon of the Dreaming Dark is its ability to infiltrate other organizations. Anyone could become an [[Inspired]] vessel, or be prompted into taking foolish action by a dream. Its agents are scattered across the world and have no obvious connection to one another, until they reveal their true nature and purpose. 

!! The Dreaming Dark in the War

The chaos that reigned during the [[Last War]] enabled the agents of the Dreaming Dark to move and act with absolute freedom throughout [[Khorvaire]]. Any direct conflict among [[Eberron]]'s humanoid populations is a boon to this group, which wants to destabilize all of them. Many of the intense battles near the end of the war might have been avoided, if not for Dreaming Dark agents fanning the flames of fear and hate—often by invading the
dreams of soldiers and rulers alike.

The feelings of mistrust and festering animosity between the nations that linger after the [[Treaty of Thronehold]] provide the Dreaming Dark with countless points of possible infection. Refugees, expatriates, and other displaced people provide the perfect vehicle for
the Dreaming Dark to spread its influence across [[Khorvaire]], carrying its corruption into new populations. 

!! The Role of Dreams

All dreams occur in the plane of [[Dal Quor]]. When mortals sleep, their minds touch the plane and shape a shard of it. Normally, a dream is shaped by the memories and emotions of the dreamer. But the dream spell and similar effects (such as a [[night hag]]'s Nightmare Haunting) can influence a dream from the outside, to a specific and often sinister purpose. The [[quori]] are masters of using the dreams as a weapon to terrorize their foes.

It's possible for an entire adventure to take place in a dream. The trick with a dream adventure is ensuring that it feels meaningful, even consequential, and not just a waste of time. One of four basic approaches can help you do that:

* A real monster inhabits a character's dreams and poses a real threat to that character's mind or body. The goal of the adventure is to defeat that monster.
* A dreaming character is incapable of waking communication—they might be comatose or possessed. The goal of the adventure is to communicate with the dreamer and free them from whatever is preventing them from communicating.
* A villain has implanted some kind of psychic lock in a character's mind, which prevents them from accessing some knowledge or capability. The goal of the adventure is to remove the psychic lock, which might take the form of a complex trap or maze in the dream.
* The actual objective of the adventure lies in [[Dal Quor]]. The first goal is to find a way to break out of the mundane dreamscape and enter the wider plane. 

The second challenge in crafting a dream adventure is
how to bring all the characters in a party together in the
same dream, which might or might not belong to one of
them. Consider these possibilities:

* One of the characters is dreaming, and the others appear in the dream as memories and impressions in the dreamer's mind.
* Some exotic magic—a kalashtar ritual or an [[eldritch machine]], perhaps—allows the characters to share a dream or to enter someone else's dream. This magic could also allow a character who ordinarily can't dream (such as an [[elf]], a [[warforged]], or a [[kalashtar]]) to enter the dreamscape as well.
* Agents of the [[Dreaming Dark]] use their magic to bring the dreams of the characters together so they can influence or target the whole party at once. 

The table below puts these principles together and suggests hooks into this kind of adventure.

| !<<dr d4>> |!Dream Adventure Goal |
| 1 |Break a psychic lock that is preventing a House [[Thuranni]] spy from remembering what they learned about a sinister [[Dreaming Dark]] plot. |
| 2 |Escape into [[Dal Quor]] to find an artifact that can be brought back to the Material Plane when the characters awaken. |
| 3 |Rescue a character who is suffering from debilitating recurring nightmares by defeating the [[quori]] inhabiting the character's mind. |
| 4 |Stop the construction of an [[eldritch machine]] in [[Dal Quor]] that will give the [[quori]] physical access to the Material Plane again |

!!! Dying in Dreams
Death in dreams is less severe than in reality, but it's
not without consequence. Of course, characters who are
mere figments of a dreamer's imagination are simply
removed from the dream. But a character dies while actually dreaming, the character receives no benefit from
the rest and takes some psychic damage.

If you want to establish more severe consequences,
you can. A dreamer killed by a [[quori]] could be trapped in
[[Dal Quor]] while the quori possesses their body, forcing
their allies to try to rescue them from their nightmares. 

!! Dreaming Dark NPCs

Agents of the Dreaming Dark are insidious villains that
can appear anywhere, in almost any context. They receive orders from a cabal of powerful quori. The leader of the organization, known as the [[Devourer of Dreams]],
communes with the nightmare spirit of [[il-Lashtavar]] itself.
The Dark's chief agent in [[Eberron]] is a [[kalaraq]] [[quori]] named [[Tirashana]], who has planted [[mind seed]]s—mental copies of herself—across [[Khorvaire]].

The Dreaming Dark has [[Inspired]] agents and [[kalaraq]] [[quori]] [[mind seed]]s scattered across [[Khorvaire]], hidden within the membership of [[dragonmarked house]]s, noble families, and other driving forces. Because Dreaming Dark agents can communicate and coordinate with one another in dreams, they never have to
risk losing their cover to receive assignments or transmit information.

| !<<dr d4>> |!NPC |
| 1 |A servant in a manor house overhears everything the visiting nobles whisper about in their private rooms. |
| 2 |The captain of a successful mercenary company suddenly changes the kinds of contracts they'll accept. |
| 3 |A local [[druid]] searches out monsters in the wilderness and drives them into murderous rampages. |
| 4 |A charismatic [[Cyran|Cyre]] stirs up anger and discontent among the frightened refugees. |

!! Dreaming Dark Campaign Themes

Long ago, the Dreaming Dark caused a long period of
strife on the continent of [[Sarlona]], fostering suspicion,
rebellion, fear, prejudice, and greed among and within
the various nations that held power at the time. While
chaos reigned, the [[quori]] also carefully nurtured the
[[human]] bloodlines that would become the [[Inspired]],
perfectly suited to serve as hosts for quori spirits. Then,
when the destruction of the old kingdoms was complete,
a group of bold champions—[[Inspired]] vessels of the
Dreaming Dark—formed a new nation from the ashes
of the old. Having conquered [[Sarlona]] by means of such
manipulation, the Dreaming Dark has turned its sights
to [[Khorvaire]]—which is already a continent in turmoil.

With the conquest of the entire continent in mind,
the Dreaming Dark has three objectives in Khorvaire.
The first is to cause chaos and strife whenever possible,
turning allies against one another and spreading fear.
The second is to promote their chosen champions. A
champion could be a nation, a mercenary company, a
[[dragonmarked house]], or a [[religion]]—whatever it is, it will
have been thoroughly subverted by the Dreaming Dark. Finally, the Dreaming Dark relentlessly pursues the [[kalashtar]] and takes every opportunity to bring down these enemies. The kalashtar are descended from rebel [[quori]] that defied the Dreaming Dark and want to push [[Dal Quor]] into an age of light.

Given those objectives, the Dreaming Dark can drive
events on a small scale, by setting bandits in motion or
triggering local feuds, or the adventurers might uncover
evidence of plans that could reignite the [[Last War]] or
bring an entire nation or religion under the sway of the
Dreaming Dark. 

!! Dreaming Dark Adventure Hooks

The table below offers some
ideas for strange occurrences and nightmarish events
that can touch off stories involving the Dreaming Dark.

| !<<dr d4>> |!Adventure Hook |
| 1 |The high priest of a temple falls into a deep sleep from which nothing can awaken them. |
| 2 |The characters notice a pattern after defeating several foes: each enemy exhibited a particular quirk of speech or gesture. They now recognize that quirk in an ally or mentor. |
| 3 |A mad [[wizard]] encoded the remedy to a destructive spell in their own dreams. The characters must enter the dreamscape and recover the remedy. |
| 4 |A war criminal imprisoned during the [[Last War]] reaches out, claiming to have evidence of their innocence and warning that a destructive force is influencing the government. |
A psychoactive liquid that smells and tastes
like your favorite beverage, essence of dreamlily is a
[[Sarlona]]n opiate. First imported to help manage pain
during the [[Last War]], it's now the most commonly abused
substance in [[Sharn]]. Though dreamlily isn't illegal if used
for medicinal purposes, it's heavily taxed, and thus most
dreamlily is smuggled in and sold on the black market.
Dreamlily dens can be found across the [[lower ward]]s. 

Consuming dreamlily causes disorienting euphoria and brings
about remarkable resistance to pain and fear. A dose of dreamlily costs
around 0.2 crowns, or up to ten times that if purchased through
legal channels. There are many varieties of the drug, however, and the duration or the price might vary accordingly.
One of the primary purposes
of the [[hanbalani|hanbalani alta]] in [[Riedra]] is to shape the dreams of the [[populace|Riedrans]],
projecting soothing dreams across the nation. This is
a delicate art; unlike [[charm]] or [[dominate]], a dream does not
force the target to take any action. It simply plants an
idea; if the subject acts, they do so of their own free will.

In limited circumstances, nocturnal manipulation
involves targeted dreams, visions crafted for a particular
subject. By this means, the [[quori]] sparked the [[Sundering]]
and continue to undermine their enemies.

A far more insidious dream conditioning occurs
over a wide area. Effectively, the network of monoliths
projects a constant, low-level dream effect across [[Riedra]].
Those who fall asleep and fail to resist the effect have the dream that is currently being
projected. The typical Riedran dream is soothing and
vague, blending images to project the wonder of Riedra,
the joys of being part of a greater whole, and the celestial benevolence of the [[Inspired]]. Every so often, these soothing visions are interspersed with flashes of the dark horrors that lurk outside the borders of Riedra. Although
insufficient to change the views of a PC over a short time,
the dreams serve to constantly reinforce a Riedran's
indoctrination. Although the dream can be resisted, Riedrans voluntarily accept it. A Riedran takes comfort in her stable dreams and looks forward to resting and bathing
in the love of the Inspired. The widespread knowledge
that Riedrans suffer from chaotic, unpredictable dreams
when in foreign lands is one more reason they hate to
leave their homeland.

[[Monolith|hanbalani alta]] dreamshaping is a background effect,
and targeted use of dream magic takes precedence over the broadcasts. Furthermore,
the [[dreamtouched]] are immune to dreamshaping.

The content of dreams is controlled from [[Dal Quor]], and it can be made more specific (for example,
broadcasting the image of a wanted criminal). A particular dream can be targeted at a village, a sphere, or
the entire nation. The [[quori]] can also choose to use the
dreamshapers to project nightmares across a region.
In this case, the dreamer is fatigued, and the disturbed sleep is not restorative. These
nightmare attacks are usually blamed on [[kalashtar]],
[[dromite]]s, or //altavars//. 
Planar gateways that once linked [[Eberron]] and [[Dal Quor]],
the Region of Dreams, were sundered during the cataclysmic wars that destroyed [[Xen'drik]] and shattered the
[[giant civilization|Age of Giants]]. Since then, Dal Quor has been forever
distant, and no stable [[manifest zone]]s to Dal Quor exist
anywhere on Eberron. 

However, Dal Quor and Eberron remained inextricably linked by the state of dreaming—the process by which mortal minds travel to the Region of Dreams, and
the subtle gateway through which the [[quori]] first began
their conquest of [[Sarlona]] some fifteen centuries past. 

Discovered short years ago and still known only to
few, the ''dreamspace'' is an effect that appears related to
this spiritual connection between planes, but one that as
yet has no explanation. It appears as a kind of ripple of
[[arcane|arcane magic]] and [[psionic|psionics]] energy—a border of sorts between the
mortal world and the world of dreams. Where dream and
reality touch, a vortex of shifting light and sound unfolds.
The world as seen through the dreamspace appears as it
truly is, but its colors are alternately muted and intense.
Creatures who can see into the dreamspace observe shifting auras that surround living creatures and psionic or magic objects alike. Light and shadow bleed into each
other, and an echo of unintelligible voices twists through
the hiss of a never-ending wind. 

Though powered in some way by the energy of [[Dal Quor]], the dreamspace is a Material Plane effect. It is not simply a manifestation of the Region of Dreams, nor is it
connected to the dreamscapes of the [[Ocean of Dreams]].

Some posit that the recent appearance of the dreamspace could be tied to the [[Inspired]]'s monoliths, the [[hanbalani alta]]s. More than a few [[kalashtar]] believe that the hanbalani have a dark purpose—designed by the Inspired to help bring [[Eberron]] and [[Dal Quor]] coterminous once more. Where the two planes connect through the act of mortal dreaming channeled by the monoliths, they have begun to actually
touch, rupturing and repairing themselves as the spiritual and temporal energy of each plane is drawn into the other. However, running counter to that theory is the
fact that the dreamspace can be accessed from anywhere on Eberron, not simply on [[Sarlona]], and that proximity to a hanbalan appears to have no effect on the dreamspace or the abilities that those attuned to it can obtain. Furthermore, certain spells and powers have effects that change when cast or manifested by the [[dreamtouched]]—those whose study of the dreamspace allows them to make contact with its otherworldly energy. Though the [[Inspired]] and the
[[Keepers of the Word]] are constantly active in the development of new lore, clearly some of these spells and powers predate current knowledge of the dreamspace.

Regardless of its origin, different factions among
both the [[kalashtar]] and [[Inspired]] distrust—some even say
fear—the dreamspace. In particular, a good number of
Inspired are said to be disturbed by the existence of a
power connected to Dal Quor that they neither control
nor understand. 
As a dreamtouched, your knowledge and study allows you to tap into an otherworldly [[psionic|psionics]] source of mystical energy—the [[dreamspace]].

By tapping into the latent essence of dreams
that saturates all [[Eberron]], you are able to enter a dreamtouched
state—a condition of conscious dreaming that focuses
the world around you even as it reveals your own inner
self. 

While in a dreamtouched state, your mental abilities are enhanced, and you are able to perform unique psionic abilities such as [[dream of contact]] and [[dream lock]]. Each dreamtouched state lasts for up to a few minutes. 

In addition to the above effects, dreamtouched characters are immune to the [[dreamshaping]] effects of the [[hanbalani alta]]s.

A character must have slept for a minimum of
4 hours in the previous 24 hours to put themself into a dreamtouched state. Characters who do not sleep (such as [[elves|elf]], [[kalashtar]] and [[warforged]]) must have
spent a minimum of 4 hours in uninterrupted rest or
meditation. Characters who are fatigued or exhausted cannot
enter a dreamtouched state. 
This small sphere of thick glass weighs 1 pound. If you are within 60 feet of it, you can speak its command word and cause it to emanate bright light that even cuts through magical darkness.

You can speak another command word to make the illuminated globe rise into the air and float up to 5 feet off the ground. The globe hovers in this way until you or another creature grasps it. If you move more than 60 feet from the hovering globe, it follows you until it is within 60 feet of you. It takes the shortest route to do so. If prevented from moving, the globe sinks gently to the ground and becomes inactive, and its light winks out.
''Capital:'' The [[Great Crag]]<br/>
''Hallmarks:'' [[Byeshk|byeshk]] ore, monstrous mercenaries

Droaam is a nation of monsters ruled by the [[Daughters of Sora Kell]]. Each of these three [[hag]]s is a legend in her
own right, the subjects of tales used to frighten children.
Eleven years ago, they seized the lands west of the [[Graywall Mountains]] and founded the nation of Droaam.

Although [[Breland]] laid claim to these barren lands,
[[Galifar]] had never tamed this wild region. [[Gnoll|gnoll]]s, [[orc]]s,
and [[goblinoid]]s commonly sought haven here, as well as
[[ogre]]s, [[troll]]s, [[harpies|harpy]], [[minotaur]]s, [[medusa]]s, [[tiefling]]s,
[[changeling]]s, [[lycanthrope]]s, and other races unwelcome
in civilized lands. In the past, these creatures fought one
another more often than they raided human settlements.
Under the leadership of the [[Daughters of Sora Kell]], they
have new purpose. The Daughters use an army of ogres
and war trolls to maintain order.

To date, the other nations of [[Khorvaire]] have refused
to recognize Droaam, and the region was not acknowledged in the [[Treaty of Thronehold]]. Most people believe
that the monstrous nation can't last—that even the
Daughters can't hold the disparate alliance together—but Droaam is currently thriving and stronger than ever.

For more on the history of Droaam, see [[Droaamish History]].

Droaam works closely with House [[Tharashk]], selling
the services of monstrous soldiers and laborers and
[[byeshk]] ore, a form of metal with magical properties.
Beyond that, it's a still-expanding frontier nation. The
cities of [[Graywall]] and [[Great Crag]] grow larger and more
organized every day, and the rest of Khorvaire is uneasy
with the potential power of a fully realized Droaam.
The monsters that inhabit Droaam retain their racial
subcultures. Most worship the [[Dark Six]], but other religious traditions flourish as well.

See also [[Culture of Droaam]]. 

!! Interesting Things About {{!!title}}

* Droaam uses the supernatural abilities of its citizens as tools, just as other nations of [[Khorvaire]] use magic. The [[Daughters of Sora Kell]] keep their people fed with [[troll sausage|grist]] and use [[harpy]]'s song to quell brawls. When dealing with monsters in Droaam, consider the practical applications of their abilities.
* When the Church of the [[Silver Flame]] purged lycanthropy from the [[Five Nations]], a number of [[lycanthrope]]s escaped into the region that later become Droaam. The [[Dark Pack]] alliance of lycanthropes, [[worg]]s, and other supernatural predators hunts southern Droaam. 

!! Droaamite Characters

[[Minotaur|minotaur]]s, [[orc]]s, [[gnoll]]s, [[tiefling]]s, [[changeling]]s, and other
monstrous species all have a place in Droaam. Consider
these questions when making a Droaamite character:

* ''What Makes You Different?'' The people of Droaam aren't just [[human]]s with horns or green skin. Think about the unique aspects of your people and what makes you different from humanity, both physically and culturally. 
* ''What Are Your Ambitions?'' Citizens of Droaam are proud of their nation. You know that the rest of Khorvaire considers you a monster. Do you intend to prove that you and your kind are capable of deeds humanity can't imagine? Or are you driven solely by your personal desires, or the goals of your family or warlord?
* ''How Does Your Background Shape You?'' The diverse creatures of Droaam could include a [[kobold]] city-savvy rogue urchin, an [[orc]] outlander barbarian with little knowledge of the outside world, or a [[tiefling]] [[warlock]] sage versed in Arcana and History. 

!! Cities and Sites

In the past, particular creatures dominated the communities of Droaam. The [[harpy]] flights lived in mountain
peaks, while the [[medusa]]s remained isolated in the citadel of [[Cazhaak Draal]]. Under the rule of the [[Daughters of Sora Kell]], the Droaamites are creating cities where all
manner of creatures live and work together. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]!tag[geography]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

Droaam is barely a decade old. The treaty nations refuse
to acknowledge its sovereignty; according to the terms
of the [[Treaty of Thronehold]], it's a rebellious territory
of [[Breland]]. As a renegade nation, it is a haven for war
criminals and deserters, as well as brigands and mages
pursuing forbidden paths of magic. The monsters of
Droaam have no particular love for these bandits and
fugitives, and outlanders have to watch their step.

Tensions remain high on the border with Breland, resulting in constant skirmishes and raids. Deeper within
the nation, the [[Daughters of Sora Kell]] build their power.
[[Graywall]] and the [[Great Crag]] are constantly expanding,
with [[goblin]]s and [[ogre]]s laboring through the night. Warlords drill their troops, forcing all manner of monsters
to work together. A predatory aspect permeates life in
Droaam but also a sense of excitement, the belief that
the Daughters will lead Droaam to greatness. For centuries the people of Droaam have hidden in the shadows;
now they stand in the light, and they are proud. 

!! Political Structure of Droaam

The nation of Droaam, which has only existed for eleven years,
has a general structure established, but it's constantly evolving.
The [[Daughters|Daughters of Sora Kell]] may implement new ideas or institute new
offices tomorrow, and a rebellious warlord could be crushed
and replaced on a moment's notice. As it stands, Droaam has
been split into //lheshat//—a Goblin term meaning “domain of a
warlord.” Each lheshat is governed by a warlord who answers
directly to the Daughters; each is charged with maintaining a
military force that can serve the Daughters.

For now, each warlord has the power to rule their domain
and organize their own army as they see fit. There is no
standardized system for either bureaucrats or soldiers; in
the former Barrens, the most powerful local official is still
called the chib (chieftain), though they may no longer be the largest or
most physically menacing creature in the community. In the
cities where multiple species live side by side, the common
populace is divided between soldiers, skilled laborers, and
the general labor force; these are organized by and under
the direct authority of the local chib. Such cities have a [[grist]] mill and a series of barracks, providing food and shared shelter for all workers. You won't own property unless you have valuable skills or an impressive position, but you can find free food and shelter in any city—though as the cities are still expanding to meet capacity, in
many places, that shelter is a bedroll in a tent.

Katra's vision is that all creatures of Droaam would work
together, part of the greater whole. Ideally, a laborer who works
hard should have no fear of abuse—foremen shouldn't beat (or
eat) their crews on a whim, an improvement over life in the
Barrens. Katra wants the workers to be respected for their
efforts, much as the [[golin'dar|goblin]] are treated with respect among
the [[Kech Dhakaan|Heirs of Dhakaan]]. But while the Daughters promote this ideal,
it doesn't always work out in practice; there are still lheshat that
treat laborers cruelly. Even where workers are treated well, it's
balanced by the understanding that anyone who challenges the
Daughters or the warlord will be crushed without mercy.

In any given lheshat, the warlord governs their domain and
the chibs beneath them lead each community. But there are
three forces that operate outside this system, working directly
for the Daughters and wielding authority throughout the land: [[Katra's Voice]], [[Maenya's Fist]], and [[Teraza's Eye]]. These names are the titles both of the organization and its officers; an agent acting on official business simply says, “I am
Teraza's Eye, and you will tell me what transpired here.” 

Droaam isn't bound by the Code of Galifar, and there is no
uniform code of justice. Justice is thus entirely in the hands of
the local chib, unless Katra's Voice overrides them. Every chib
maintains their own force of guards. In a small village, this
might be a handful of Gaa'aram [[orc]]s, but in a large city like
[[Graywall]], the guards are a versatile and significant force: orcs,
[[minotaur]]s, and [[ogre]]s with support from [[harpies|harpy]] and [[gargoyle]]s.
Any major community also has a garrison of [[Znir|Znir Pact]] [[gnoll]]s. These
mercenaries serve as peacekeepers when needed, but they
serve the Daughters directly, not the chib; in part, they are
present to deter a chib from turning against the Daughters.

In most communities, a chib punishes serious crimes with
immediate execution. For lesser crimes, a victim is branded
and either severely beaten, maimed, or given trial by combat;
most large cities have an arena that serves this purpose (though
people can also be gladiators by choice). Those that survive
their punishment are freed.

There is one recourse for those who seek justice: [[Katra's Voice]]
includes magistrates who have the power to administer justice.
Magistrates travel between smaller communities, while larger
ones, like [[Graywall]], have a resident magistrate. The current
fashion is that magistrates are [[medusa]]s. If a magistrate believes
a case has merit, she orders the chib to deal with it—but if she
considers the complaint to be frivolous, she petrifies the plaintiff.
As a result, very few people take the risk of seeking justice—but
it's a comfort to the laborers to know that they could.

Ultimately, Droaam is a wild frontier. For the most part, the
law is simple: don't mess with the chib or anything that belongs
to the Daughters.
For the last millennium, children of the [[Five Nations]] have
known the fate awaiting the naughty: they'll be sent to the
Barrens, where [[ogre]]s will use them for footstools until the
[[troll]]s eat them for dinner.

When [[Galifar]] was established, the province of [[Breland]] was
granted dominion over all lands south of the [[Byeshk Mountains]]
and west of the [[Seawall|Seawall Mountains]], extending to the waters of the [[Thunder Sea]]. This bold claim considerably extended the territory held
by the preceding nation of [[Wroat]]—but it was nothing more
than a claim. The Brelish people had no need of the lands to
the west, nor did they want them. The Barrens—their name for
everything west of the [[Graywall Mountains]]—were known to
hold foul swamps and barren plains, an untamed region filled
with all manner of deadly monsters. Explorers to Breland's
newly acquired territory soon confirmed these tales. The plains
were filled with [[goblin]]s and hungry [[gnoll]]s. The mountains were
home to [[harpies|harpy]] whose songs could lead the unwary into deep
chasms, where [[troll]]s slept on piles of bones. The Barrens had
nothing the Brelish believed worth fighting for, and so it was left
alone. Occasionally, questing knights or bold templars would
cross the Graywall to battle giants and slay [[ogre]]s, but the
region was largely ignored.

Over centuries, the Brelish slowly expanded west toward the
Graywall. [[Castle Arakhain]] became a favored royal residence
in the eighth century, bringing new prosperity to [[Ardev]] and
[[Shavalant]]. However, the ensuing wave of western settlers was
met by fierce raiders crossing the gap between the [[Graywall Mountains]] and [[Silver Lake]]. Bloodied settlers brought back tales
of bellowing [[minotaur]]s, [[orc]]s, [[ogre]]s, and [[goblin]]s lurking in every
shadow. An attack at Castle Arakhain led to the brief Westward
War, the might of [[Galifar]] driving the raiders back across the
Graywall and obliterating many of the marauding bands. The
fortress [[Orcbone]] was established as the gate between the people
of Breland and the monsters of the Barrens, and the king founded
the Westwind Riders to patrol the border. The Riders held
the line throughout the ninth century, and Brelish settlers even
staked claims along the Graywall. This period peaked with the
founding of the fortress-town of Stubborn in the foothills (now
known as [[Stonejaw Keep]]). Then the [[Last War]] changed everything.

!! An Ancient Land

The land known as the Barrens is far older than [[Galifar]] or
[[Wroat]]. While less fertile than the fields of [[Breland]] or [[Aundair]],
this region holds rich mineral deposits. Some believe it was
the original homeland of the [[goblinoid]]s, a theory supported
by a significant number of [[Dhakaan]]i ruins along and below
the mountain ranges, as well as below the [[Great Crag]] itself.
In the [[Graywall Mountains]], a set of thousand-foot statues
commemorate the six kings who came together to form the
ancient Empire of [[Dhakaan]]. But while this region may have
once been important to the [[dar|goblinoid]], it was utterly devastated in
their war against the [[daelkyr]], compounded by the return of
forces long held at bay by the empire. Vicious [[gnoll]]s swarmed
south from the [[Towering Wood]]. Fierce [[orc]]s emerged from
the western [[swamp|Shadow Marches]]. [[Troll|troll]]s and [[ogre]]s came down from the mountains. Those dar that remained were infected with [[daelkyr curses|Kapaa'vola]]; instead of standing together against the invaders, they
turned on each other, and centuries of chaos and bloodshed
followed. By the time it was done, all that remained of [[Dhakaan]]
was ruins. [[Hobgoblin|hobgoblin]]s and [[bugbear]]s had been eradicated in the
region, and [[goblin]]s were scattered and divided.

The region was dominated by anarchy from then on—some
believe this merely follows the natural instincts of the region's
inhabitants, while others point to the lingering influence of
the [[daelkyr]]. There were a few bastions of civilization—the
[[Venomous Demesne]], the hidden village of [[Lost]]—but the
people of these communities had no interest in expanding
their culture; they were either fortified, hidden from the
outside world, or both. Across the rest of the Barrens, history
was marked by the rise and fall of countless mighty //chib//s.
Chib is a [[Dhakaan]]i term sometimes translated as “chieftain,” but
it literally means “boss” or “big person”—and in the Barrens,
the chib was often just the biggest creature around. Typically
a band would form around an [[ogre]], [[ettin]], or [[troll]]—a creature
powerful enough to assert their will over [[goblin]]s, [[kobold]]s, or
lesser creatures of their own kind. But while powerful, these
creatures lacked the ambition or drive to build anything that
could last. Occasionally a more intelligent leader—a [[minotaur]]
warlord, a charismatic [[oni]]—would build a greater force, perhaps
even establish a dynasty that would last a generation or two
before being overwhelmed by the relentless, brutal tide.

!! The War Begins

As the [[Last War]] began, the [[harpies|harpy]] held the [[Byeshk Mountains]],
where their flights endlessly feuded. [[Cazhaak Draal]] was in the
hands of the [[medusa]]s that claimed it centuries earlier. Wise
creatures knew to avoid the [[Watching Wood]], home to [[worg]]s
and worse. In the plains, the strongest leader was the [[minotaur]]
warlord Rhesh Toraa; around her keep, countless minor chibs
fought one another more frequently than they struck the settlers.

The first days of the [[Last War]] led to a reduction of forces
in the west of [[Breland]]; while it was a violent, unstable region,
there were few settlers across the [[Graywall|Graywall Mountains]] needing protection.
Not all of the Westwind Riders were Brelish, and with [[Wroann|Wroann ir'Wynarn]]'s
coronation, soldiers returned to serve their home nations, and
Wroann needed all the troops she could muster. She reduced the
Westwind Riders to a minimal force—enough to patrol between
the fortresses of [[Orcbone]] and [[Stubborn|Stonejaw Keep]], but little more.

Many [[Aundair]]ians had been part of the Westwind Riders,
and on receiving their reports, Spy Master ir'Galanatyr saw
an opportunity. The Royal Eyes of Aundair worked with Rhesh
Toraa and other chibs in the Barrens, providing equipment and
training to support attacks against Graywall settlers and raids
across the gap. With forces tied up to the east, it was up to the
commanders of Orcbone and Stubborn to protect the west. But
ultimately, the provocateurs from Aundair and [[Karrnath]] found
the Barrens raiders undisciplined and impossible to unify,
never posing the dire threat Breland's enemies had hoped for.

!! The Daughters Arrive

The fortress-town of [[Stubborn|Stonejaw Keep]] survived decades of raids and
skirmishes, as the chibs of the Barrens had no patience for
sieges and no weapons for breaking strong walls. Many lesser
settlements and claims were overrun and lost, but Stubborn
repelled countless attacks by [[goblin]]s and [[minotaur]]s. However,
it was utterly unprepared for the force that struck it in the last
decade of the war. A typical band of raiders might include a
single [[troll]] or a handful of [[ogre]]s, but in 986 YK, the soldiers
of Stubborn found themselves facing phalanxes of armored
trolls fighting with deadly skill, and squads of ogres acting with
discipline and coordination. Stubborn's defenders leapt off the
walls in pursuit of [[harpies|harpy]]' songs, and the walls were shattered
by hurled stones. Survivors were herded into the plains to face
the leaders of the army; this was the first recorded encounter
with the assembled [[Daughters of Sora Kell]], three enigmatic and notorious [[hag]]s.

“Tell your rulers there's a new power in the west,” [[Sora Katra]]
told the people of Stubborn. “What you've called the Barrens, we
now name [[Droaam]]. The land beyond the [[Graywall|Graywall Mountains]] and below
the [[Byeshk|Byeshk Mountains]] belongs to our people. Withdraw yours quickly and
respect our claim; next time, there will be no survivors.”

Once news of the fall of Stubborn reached [[Orcbone]], the
Westwind Riders traveled west in full force. But [[Sora Katra]]
was true to her word; there were no survivors, nor any records
of the last battle of the Westward Riders. A retaliatory strike
from [[Droaam]]—merely a fraction of the forces at Stubborn—inflicted terrible damage on Orcbone itself. King [[Boranel|Boranel ir'Wynarn]] swiftly deployed all the soldiers he could spare to this new front, reinforcing and fortifying Orcbone. In 987 YK, he formally
ordered all Brelish citizens to withdraw from the lands west of
Graywall, but he refused to acknowledge the sovereignty of the
Daughters, and over the next decade, clashes continued.

!! Building a Nation

To the people to the east of the [[Graywall Mountains]], it seemed
that the [[Daughters of Sora Kell]] appeared out of nowhere—and
it felt much the same to the chibs of the Barrens. But evidence suggests that it was the culmination of years, or even decades, of
planning. How long did it take to train the trolls and ogres now
known as [[Maenya's Fist]]? How did the Daughters acquire the
armor and weapons wielded by this force? Some say that [[Sora Maenya]] assembled her troops in a forgotten [[Dhakaan]]i fortress deep below the [[Byeshk Mountains]], and that she oversaw the forging of their weapons in this ancient foundry. Sora Maenya
calls the soldiers of [[Maenya's Fist]] her children, and some
scholars believe this might be literally true; both her war [[troll]]s
and skullcrusher [[ogre]]s are smarter and more capable than their
common cousins. But how long would such an endeavor take?
Melian Mit Davandi of the [[Library of Korranberg]] has advanced
the theory that [[demiplane]]s may have been involved—that
Maenya's lair in [[Khyber]] could exist outside of the normal flow
of time, allowing the schemes of the Daughters to be both a
recent development and the work of generations. [[Sora Teraza]]
approached the [[Queen of Stone]] and the lords of the [[Venomous Demesne]] in 985 YK, and the Daughters brokered the services
of fully half of the [[Znir Pact]] mercenaries in this time. No one
knows just how long the Daughters spent in preparation—but
986 YK is when they made their presence known.

Leading up to the attack on [[Stubborn|Stonejaw Keep]], the Daughters spoke with—and dominated—the greatest powers of the Barrens. The chibs of the plains only understood force, and the Daughters displayed it; the scattered bands of raiders were forced to submit, and those who refused to bow to the Daughters of Sora Kell were executed in gruesome ways.

In 987 YK the [[Daughters of Sora Kell]] summoned the
region's most powerful leaders to the ruins now known as
the [[Great Crag]]. There, [[Sora Katra]] presented the blueprint
for the new nation, appointing warlords and specifying their
responsibilities and regions. Work began on the greatest cities
of this new nation: [[Graywall]], the Great Crag, and the port city
of [[Vralkek]]. The old fortress of Stubborn was repurposed and
renamed [[Stonejaw|Stonejaw Keep]]. While some of the raider bands were left
to follow their old ways, many were absorbed into the new
nation. Thousands of [[goblin]]s and [[kobold]]s were freed from
their oppressive chibs and given opportunities in the new cities.
This new order was maintained by [[gnoll]] peacekeepers of the
[[Znir Pact]]. When that proved insufficient—when a chib refused
to release their captive subjects or defied the Daughters—Maenya's Fist would descend to destroy them. The message was simple: Change was coming. You could find your place in [[Droaam]], or you could choose obliteration.

The Daughters' ambitious plans were strengthened by an
alliance with House [[Tharashk]]. For Tharashk, this provided
access to the rich mineral resources of Droaam and the services
of monstrous mercenaries, which opened an entirely new path
for the house. For the Daughters, it tied them to a force with
a legitimate voice and influence in the East. Tharashk agents
convinced the [[Twelve]] to open up trade to Droaam—at least to
the new city of [[Graywall]]. The house helped to organize laborers
and build the new cities. Through Tharashk, the denizens of
Droaam began to appear throughout the [[Five Nations]], though
tensions continued in the vicinity of [[Orcbone]]. [[Ogre|ogre]] laborers could be
found in [[Fairhaven]] and [[Wroat]]. [[Gargoyle|gargoyle]]s and
[[harpy]] couriers found a niche in [[Sharn]], and the Gargoyle replaced
the Bat in the [[Race of Eight Winds]]. Today, many citizens of the
[[Five Nations]] are still uncomfortable around these creatures,
but their presence is slowly becoming less remarkable.

!! The Present Situation

The [[Daughters of Sora Kell]] sent representatives to [[Thronehold]]
for the [[treaty|Treaty of Thronehold]] negotiations, demanding to be recognized as a
sovereign nation. This petition was denied. In practice, [[Droaam]]
is a nation, and most recent maps include its name and mark its territory. But legally, the land is still part of [[Breland]]. It's
debatable whether the Droaamites are legally invaders or rebels
defying the Brelish crown, but either way, they aren't considered
citizens of Breland and aren't entitled to the protections of the
Code of Galifar. However, their standing outside the law makes
them a haven for war criminals, dissidents, deserters, and
others who can find no place in the [[Five Nations]].

Most of the leaders of the Five Nations are convinced that
Droaam won't last—that it's unstable, that these monsters
will turn on each other any day now. They might be right; the
Daughters have already had to crush a number of rebellious
warlords and lesser chibs. But after eleven years, Droaam is
stronger than ever. Its new cities are expanding. [[Dragonmarked house|dragonmarked house]]s are exploring their opportunities in the region. One
important question still remains unanswered: What do the
Daughters of Sora Kell want? Will they attack Breland in force
if their demands aren't soon met? Or is there some grander
scheme, tied to the prophetic visions of [[Sora Teraza]]?
[[Sarlona]] has a secret civilization deep beneath its surface—that of the dromites and their city-hives. A dromite is a small humanoid resembling a [[halfling]] with compound eyes and chitinous skin. They are naturally psionic creatures, and many dromites develop the abilities of [[wilder]]s. Aside from their Grand Queen and Elected Consorts, dromites are genderless and possess no sexual characteristics.

The dromites of Sarlona are not a unified nation; they are insular at best and xenophobic at worst. Their interactions with surface-dwellers have rarely been good; the [[Inspired]] have dealt with dromites using only murder and enslavement as "diplomatic" tools. So, most dromites are content to live and trade among their kind.

In some areas, however, the general dromite reclusiveness is not the norm. The [[kalashtar]] made diplomatic inroads with them more than a millennium ago.
[[Zi'til'natek]], a city-hive under [[Adar]], is loosely allied
with the defenders of that land. Under the [[Tashana Tundra]], the
few dromite hives have had decent relations with some
[[dwarf]] clans.

Some dromite hives have taken a militant stance
against all "surfacers." These extremist city-hives are
few and number, and their citizens too few to engage in
outright warfare, but dromites from these hives employ
sabotage and guerrilla strikes against threats they can
manage, from unlucky [[ogre]] nomads to [[Riedra]]n [[Edgewalkers]]. Dromites of the city-hive of Nar'zix in [[Syrkarn]]
are more insidious—they have begun trading tainted
[[Khyber shard|dragonshard]]s through merchants in [[Ardhmen]] and
other settlements.
''Capital:'' Stonespire<br/>
''Primary Resources:'' Mercenaries, furs, meat<br/>
''Enemies:'' [[Toldorath and Tordannon]], the [[Jhorash'tar]]<br/>
''Celebrated Virtues:'' Strength, confidence. Embrace the wild.

[[Doldarun]] is known for courage, while Droranath is fearless.
What's the difference? A talespinner says that Doldarun is
afraid, but even knowing that fear, chooses to stand their
ground; in contrast, Droranath never sees any reason to be
afraid to begin with. Droranath dwarves value confidence and
optimism, and are certain that their strength can carry them
through any challenge.

The Droranath dwarves value tradition, and their culture is
the closest to the original [[Mror|Mror Holds]] path before being conquered by
[[Galifar]]. The Droranath never became miners; they are hunters,
farmers, and above all, fierce warriors. Droranath youths have
always trained with axe and hammer, long before the War Below
made the practice common among the clans, and hide armor
is standard fashion among the clan. Some Droranath develop
the skills of the stealthy hunter, striking down enemies from
afar, but most Droranath warriors prefer to look their enemy
in the eye and to see their fear. Droranath warriors perfect a
technique called //tra dolhass//—the battle cry—a wild howl as the
warrior charges the enemy, summoning their adrenaline and
fury. The Droranath love battle, and for centuries they have
sold their services as mercenaries through House [[Deneith]].
The “Mror Howlers” are valued as shock troops and vanguard
warriors. They are one of the smallest and poorest clans, in
part due to their violent lifestyle and refusal to embrace many
modern advances, but they continue to hold their lands. 

Droranath has fought the [[Jhorash'tar]] [[orc]]s since the first
days of exile. They accuse the orcs of countless atrocities,
many of which may have indeed occurred—centuries in
the past. Droranath talespinners insist the Jhorash'tar
were responsible for the destruction of [[Noldrunhold]], and
now claim the orcs are in league with the horrors of the
[[Realm Below]]. In addition to ongoing skirmishes between
Droranath dwarves and the Jhorash'tar, this has led to a
bitter feud between Droranath and the clans that support
the Jhorash'tar—[[Toldorath and Tordannon]].

The Droranath dwarves aren't miners, and they haven't
opened paths to the [[Realm Below]] in their territory. However,
Droranath mercenaries have served other clans, and brought
back trophies from their battles. It's Droranath tradition to
claim the arms and armor of fallen foes, and the Droranath
have no qualms about using [[symbiont]] weapons, though they
don't celebrate them as [[Soldorak]] and [[Narathun]] do.

Droranath characters are often outlanders or folk heroes, as
they are always willing to take risks to help friends. Rangers
and barbarians are sound choices for Droranath; rangers are
usually hunters, while those who practice //tra dolhass// might
be berserkers or ancestral guardians.
Drow, also called dark elves, have skin that resembles charcoal or obsidian, as well as stark white or pale yellow hair. They commonly have very pale eyes (so pale as to be mistaken for white) in shades of lilac, silver, pink, red, and blue. They tend to be smaller and thinner than most elves.

Long ago on the continent of [[Xen'drik]], the first drow
fought beside the [[giant]]s against the other elves. Tens
of thousands of years have passed, and drow and other
elves remember each other only as figures in their legends. The [[Undying Court]] and the patron ancestors of
the [[Tairnadal]] remember the drow, but they have little
occasion to teach their living descendants about these
shadows of the distant past. 

When the elves fled to Aerenal, the drow remained on
Xen'drik as subjects of the giants, and they were caught
in the collapse of giant civilization. Today they linger
on Xen'drik and have set their own course, free of the
giants' malevolent influence.

Three distinct drow cultures formed after the fall of
the giants. The most numerous are the [[Vulkoori]], hunters dedicated to a scorpion god called Vulkoor. They
hunt giants and other dangers in their lands. Led by
powerful druids and wizards, the [[Sulatar]] cling to traditions of elemental shaping that date back to the [[Age of Giants]]. They live in a handful of obsidian cities across
[[Xen'drik]], and believe that they are destined to cleanse
the world in a fiery apocalypse. Finally, the [[Umbragen]]
are descended from drow who fled into the depths of
the earth when the giant civilization fell. They wield sophisticated magic in their unceasing battles against the [[daelkyr]] and the other [[aberration]]s of the underworld.

When creating a drow character, think about how
you came to Khorvaire. Are you a Vulkoori hunter who
accompanied an expedition home to Khorvaire, now
seeking your way in this strange new world? Are you an
Umbragen seeking powers that can help your people in
their endless war? Or are you a Sulatar pursuing a personal path to glory?

How do you react to meeting members of other elven
cultures during your journeys? You might quickly recognize that most bear little resemblance to the terrors
described in your people's legends, or you might have an
almost instinctive reaction of distrust. You might have
overcome your initial prejudices by the time the campaign begins, or perhaps you're working to build trust
with another elf member of your adventuring party. 
<<list-links-article "[tag{!!title}sort[title]]">>
Druids revere nature above all, gaining their spells and other magical powers either from the force of nature itself. [[Druidic magic|primal magic]] is oriented toward nature and animals—the power of tooth and claw, of sun and moon, of fire and storm. Many druids also gain the ability to take on animal forms.

The druids of [[Eberron]] hold animistic beliefs completely
unconnected to the [[Sovereign Host]], the [[Dark Six]], or any of
the other religions of the world. They believe that every living
thing and every natural phenomenon—sun, moon, wind,
fire, and the world itself—has a spirit. Their spells, then, are
a means to communicate with and command these spirits. 

Different druidic sects, though, hold different philosophies
about the proper relationship of these spirits to each other
and to the forces of civilization. The [[Ashbound]], for example,
believe that arcane magic is an abomination against nature,
the [[Children of Winter]] venerate the forces of death, and the
[[Gatekeepers]] preserve ancient traditions meant to protect the
world from the incursion of [[aberration]]s. 

Five well-established paths define most of [[Khorvaire]]'s druids. In creating a druid character, consider whether you have ties to one of these traditions, and what led you to leave your order. Are you on a mission? Are you exploring the world? Have you been
banished, with good reason or otherwise? 

* [[Ashbound]]
* [[Children of Winter]]
* [[Gatekeepers]]
* [[Greensingers]]
* [[Wardens of the Wood]]
This suit of leather armor is etched with leaves and covered in autumn-colored ribbons. It is imbued with magic that enhances the duration of [[primal magic]] spells. This armor is often found among [[druid]]s of the [[Wardens of the Wood]].
This [[oni]] mage holds the lands
around [[Thrakelorn]], ruling a host of [[orc]]s, [[ogre]]s, and
[[goblin]]s. Drul Kantar has neither the power nor the
ambition of the oni [[Tzaryan Rrac]],
and he seems entirely loyal to the [[Daughters of Sora Kell]]. In fact, he is an agent of the [[Lords of Dust]], and
he hopes to corrupt other warlords and convince
them to join his cause.
A bizarre assortment
of odds and ends cover the walls of the Drunken Dragon tavern, including the trophies of a hundred expeditions to [[Xen'drik]], the [[Demon Wastes]],
and other strange lands. Among the oldest pubs in
[[Upper Dura]], the Drunken Dragon is a long-time
favorite of explorers, adventurers, and privateers.
Slow service and poor food aside, the Drunken
Dragon has one of the widest selections of exotic
alcoholic beverages in [[Sharn]]. From [[Mror|Mror Holds]] ale and
[[Lhazaar|Lhazaar Principalities]] mead to the [[orc]]ish hrak of the [[Shadow Marches]] and fermented honey-milk brewed by the
[[shifter]]s of the [[Eldeen Reaches]], if it's strong and
strange it can be found at the Drunken Dragon.

The Dragon has become one of the main places
to hire adventurers; if a party has no specific agenda
and simply hopes to find work, it could do worse
than to have a few drinks at the Drunken Dragon.
The Dragon is a tavern as opposed to an inn, but it
does have two private rooms that parties can use when
discussing secret business or important deals.

The Drunken Dragon is owned by [[Hascal d'Ghallanda]],
a cheerful middle-aged [[halfling]]. Hascal began his
life as an explorer, but gave up the trade after losing
his lower left leg and his right eye in a particularly
disastrous trip to [[Xen'drik]], and returned to pick
up the family business. He has an assortment of
beautifully carved artificial limbs and colorful eye
patches that correspond to his flamboyant outfits.
Hascal is an extremely knowledgeable and talented
fellow who, given an opportunity, can spend hours
talking about his adventures.

Hascal possesses the [[Mark of Hospitality]]. Though he no longer
actively adventures, Hascal remains a member of
the [[Clifftop Adventurers' Guild]]. 
Travelers entering a forest might catch a glimpse of a feminine form flitting through the trees. Warm laughter hangs on the air, drawing those who hear it deeper into the emerald shadows. 

//''Treebound.''// A dryad is a lesser fey bound to a specific tree. A dryad can emerge from the tree and travel the lands around it, but the tree remains her home and roots her to the world. As long as the tree remains healthy and unharmed, the dryad stays forever youthful and alluring. If the tree is harmed, she suffers. If the tree is ever destroyed, the dryad descends into madness.

//''Reclusive Fey.''// Dryads act as guardians of their woodland demesnes. Shy and reclusive, they watch interlopers from the trees. A dryad struck by the beauty of a stranger might investigate more closely, perhaps even try to lure the individual away to be charmed.

Dryads work with other sylvan creatures to defend their forests. [[Unicorn|unicorn]]s, [[treant]]s, and [[satyr]]s live alongside them, in addition to [[druid]]s that share the dryads' devotion to the woods they call home.

//''Woodland Magic.''// Dryads can speak with plants and animals. They can teleport from one tree to another, luring interlopers away from their groves. If pressed, a dryad can beguile [[humanoid]]s with her [[enchantment]]s, turning enemies into friends. They also know a handful of useful [[primal|primal magic]] spells.
A beautiful [[dryad]] removes a branch from her tree. As it transforms itself from a branch to the rough shape of a bow, she pulls a few strands of her hair, and they weave into themselves to become a string. She kisses the bow, and its shape shifts again, the center strong and thick, the ends firm but flexible, and the string tight. As she places it in your hands, you can feel that this bow is somehow still alive. This is the Dryad's Gift.

Ordinary branches, when drawn, transform themselves into arrows. They transform back into branches shortly after landing, or when removed from the wound of a living creature.

The string of this bow is unbreakable by nonmagical means, and to the user it smells faintly of sweet flowers. The user gains advantage to resist harmful odors (such as a [[troglodyte]]'s stench), and creatures that try to perceive the wielder of this bow by scent must do so with disadvantage.

This living bow can speak with the forest. By concentrating on a known recipient, and speaking to the bow, the wielder can send a brief message of up to twenty-five words. This message can only travel within the boundaries of a continuous forest, travels as fast as the wind, and can be understood by the intended recipient. The recipient can reply immediately with a message under the same restrictions. Note that this message is not private, and can be overheard by those able to speak with plants anywhere within the forest. To others, it is simply the rustle of branches and leaves in the wind.
While holding or wearing a drybrooch, you can summon or dismiss a dome of energy that manifests just above your head. This energy repels moderate quantities of frozen and liquid water, such as rain, snow, bird droppings, or similar nuisances, but can't be used to protect against harsh environmental hazards or attacks.

Typically a drybrooch field is silvery and translucent. More expensive models have illusions woven into the field; one popular drybrooch creates the image of a sunny blue sky overhead.

See also [[rain-away hoops]].
Du'ulora [[quori]] are spirits of fury that feed on anger and inspire rage
in mortals. A du'ulora is a maelstrom of eyes and wings, bound
together by flesh that seems like solidified shadow. It can
extend up to three tentacles from this dark mass. A du'ulora
can turn a victim's anger into manifested heat; in battle, it
grapples its victims and burns them with their own fury.

//''Manipulating Fury.''// While they feed on anger and hatred,
du'ulora rarely act rashly. They are cunning and calculating
strategists who excel at inspiring fury in others and turning
it against them. In battle this can cause their victims to lower
their guard and even to strike their own allies in heedless rage.
As servants of the [[Dreaming Dark]], the du'ulora craft dreams
that stir buried anger and incite hatred; they excel at igniting
feuds and inspiring vendettas. So where a [[tsucora]] agent of the
Dreaming Dark manipulates peoples' fears and a [[hashalaq]]
employs seduction, the du'ulora excel at inciting violence.

//''The Fists of Dal Quor.''// The du'ulora are martial champions
of the quori. They thrive on conflict and love to personally
crush their enemies. While they enjoy fighting in the
vanguard, the du'ulora are also skilled strategists. In [[Dal Quor]],
the du'ulora command squads of [[tsucora]] and lesser [[quori]]. In
[[Riedra]], military commanders are typically [[Inspired]] bound to
du'ulora spirits.

//''Rage Against The Darkness.''// The du'ulora bound to the
[[kalashtar]] serve the light, but they still manipulate fury. Du'ulora
kalashtar learn to harness and channel their own aggression,
and are often fighters or barbarians; others are dispassionate
monks, who provoke rage in their enemies while never allowing
it to distract them from their goals.
Duergar, or "gray dwarves", are lean and hard compared to other [[dwarves|dwarf]]. Their
skin is a dull gray, and their eyes are black and cold. Male duergar don’t have hair above their ears, but they often boast short, wiry beards of iron-gray or black. Most females are likewise bald, but some have short-cropped hair of dull black.

Every duergar is born with some amount of [[psionic|psionics]] talent. The typical warrior can turn invisible or increase in size, and some duergar take up a more formal study of psionics to enhance or augment their capabilities. 

Those duergar who delve into psionic research describe the process as accessing a dimensional space in which they can tap into the energy exerted by living minds. Using this power source, a small number of duergar can alter their bodies and those of other creatures, tap into thoughts and bend them as they see fit, and impart a spark of locomotion and even basic intelligence into objects. Duergar of truly exceptional skill can move objects without touching them, view creatures from a great distance, and push their bodies to achieve incredible feats, such as lifting a boulder or transforming into liquid to flow through a crack in a wall.

In Eberron, the duergar are only known to exist among the [[Akiak]] tribes of [[Sarlona]].



Dul Catun is a small bastion city in [[Nulakesh]], [[Riedra]]. Along with [[Dar Mirn]] and [[Dar Ulatesh]], Dul Catun is one of the centers of the [[Chosen]] shadow lines.
Dul Darat is a bastion city in [[Pyrine]], [[Riedra]].
Dul El is a bastion city in [[Pyrine]], [[Riedra]].
Dul Jhaar is a bastion city in [[Rhiavhaar]], [[Riedra]].
This bastion city in [[Corvagura]], [[Riedra]] is in the Sphere of [[Surasek]].
Dul Natath is a bastion city in [[Nulakesh]], [[Riedra]].
This bastion city in [[Corvagura]], [[Riedra]] is in the Sphere of [[Tureya]]. It holds the headquarters of the [[Sheltering Hearth]].
Dul Zeer is a bastion city in [[Pyrine]], [[Riedra]], one of the largest cities of the nation. It is the [[Thousand Eyes]]' greatest stronghold. Here, a network of remote viewing crystals allows agents to [[scry|scrying]] across the continent, and teleportation circles let them dispatch forces to any bastion or kintam (fortress). Agents in villages can be alerted through dreams. In an emergency, psionic dispatchers can teleport forces to the site of a disturbance.
Dul Zerath is a bastion city in [[Nulakesh]], [[Riedra]], located on the edge of the [[Forest of Lurking Shadows]].
While holding this sturdy brass key, you can tap it against another key and cause the duplikey to become an identical copy of it. Once you have used this property, the duplikey becomes nonmagical. 
[[Sharn]] began where Dura stands, but the city has left it
behind in many ways. Many nowadays consider the oldest quarter of Sharn to be a blight on the City of Towers. The place is full of cracked and crumbling stonework,
abandoned lift shafts, and [[everbright lantern]]s that have
burned out and never been restored. Dura is riddled
with poverty and crime; it's easily the most dangerous
section of the city. But it also holds opportunities you
can't find anywhere else. If you're looking for smuggled
goods or a place to lie low, head to Dura. 

* [[Upper Dura]]
* [[Middle Dura]]
* [[Lower Dura]]

Dura is connected by bridge to [[Menthis Plateau]]. It connects to [[Tavick's Landing]] on the south side of the city ([[Fallen]]/[[Foundation]]; [[Rattlestone]]/[[Kenton]]; [[Highhold]]/[[Sunrise]]).

!! Things to Do in Dura

Dura is a quarter of extremes, from the nearly idyllic atmosphere of Upper Dura, down to the danger of Lower Dura. Among its attractions and diversions are these:

* ''Gamble.'' Legal gambling is heavily taxed in the city and limited in its scope. Dura is the place to find a wide range of shadier and more profitable games. 
* ''Go shopping.'' The [[Bazaar]] of [[Middle Dura]] is an excellent source for exotic goods, legal or otherwise. [[Clifftop]], in [[Upper Dura]], caters to adventurers and has a reasonable selection of magical goods.
* ''Bend the law.'' Looking for a fence or need to hire an assassin? Lower Dura is the nexus for criminal activities in Sharn. 
* ''Talk about the race.'' The inhabitants of Dura are devoted to the [[Race of Eight Winds]] and are always willing to discuss the latest news.
* ''Suffer a terrible accident.'' The [[Sharn Watch]] ignores much of [[Lower Dura]]. Stories circulate continuously about [[dragonmarked house]]s and mad [[wizard]]s conducting dangerous experiments in Lower Dura without interference from the law. 
The exarch of [[Bel Shalor]] is a mighty [[rakshasa]] named
Durastoran, known to legend as the Wyrmbreaker.
This [[fiend]] despises the [[dragon]]s of [[Argonnessen]] and
has shattered many schemes of the [[Chamber]]. He
claims to have provoked the first war between [[Aerenal]] and Argonnessen. Over the last few centuries, he has served Bel Shalor in [[Khorvaire]], using his vast
knowledge of the [[Prophecy|Draconic Prophecy]] to draw the world into
this dark age.

Durastoran is a master prophet and skilled mage. He has had a hundred thousand
years to gather spells and rituals. Beyond this, his knowledge
of the Prophecy often lets him predict PCs' actions.
Ultimately, he seeks Bel Shalor's release, but in the
meantime, he likes to play deadly games with the
Chamber and its agents.
The largest city in [[Riedra]] is the administrative heart
of the nation, and from this glittering capital the mighty
pathfinder Lord [[Surasek]] guides the nation. In addition to being the center
for the [[Guiding Path]], Durat Tal trains and houses a vast
number of soldiers, which can be dispatched across the
realm through psionic teleportation circles. Durat Tal is the hub
of the teleportation circle network, and most traffic between
circle-equipped kintams and bastions passes through
this city. 
Dusk hags resemble gnarled crones with shriveled orange skin, tangled gray hair, and eyes that burn like hot coals. They see visions of the future in their dreams, and their dark magic allows them to influence the dreams of others, sending messages or inflicting nightmares with a touch. Tales talk of ambitious [[wizard]]s, frantic monarchs, and desperate heroes undertaking quests or making bargains with a dusk hag in exchange for its prophecies and visions of the future. But the information gained from a dusk hag often has a way of causing more pain than joy. Like all hags, dusk hags enjoy causing strife to those who bargain with them, and find ways to twist and turn promises to their own advantage. The table below provides examples of the sort of dreams dusk hags might share with unsuspecting sleepers.

| !<<dr "d10">> |!Prophecy |
| 1 |"A red hat approaches with ill intent. Be wary." |
| 2 |"A ship comes on a sea of bones, but treasure waits behind a silver skull." |
| 3 |"Three days, three deaths, three eyes, three breaths." |
| 4 |"Doom falls on the peacock and the sparrow alike. Best be a raven." |
| 5 |"A white hand on a black field holds the golden key." |
| 6 |"Beware the black horse." |
| 7 |"The fish is your friend." |
| 8 |"The stairs downward lead to that which you seek." |
| 9 |"Look for two crossed swords. There your goal lies." |
| 10 |"If you see two crows, turn back. Beyond is death." |
A dusk shard is special variety of Eberron [[dragonshard]] found only in [[Q'barra]]. Dusk shards are a smoky gray with vivid red veins, and possess remarkable magical qualities. They are worth five times as much as standard [[dragonshard]]s of similar size.

The miners of [[Q'barra]] have yet to discover the source of this unusual power. The truth is that the dusk shards hold fragments of the essence of the immortal [[overlord]] [[Masvirik]] and his fiendish agents. As a result, using these dragonshards may result in unexpected effects. For example, someone using dusk shards for [[divination]] rituals could receive messages directly from Masvirik, or misleading information that serves the purposes of the overlord.

Dusk shards channel Masvirik's darkness and split it into tiny pieces. Together with the network of [[dawn shard]]s planted in the earth, the Cold Sun remains bound. The [[Poison Dusk]] seeks to gather the dusk shards to help them commune with [[Masvirik]] and eventually release it from its bonds.
The Duskwing Clan guards an [[Age of Demons]] ruin in the southern tip of the [[Q'barra]]n jungle.

{{dragonborn clanhold}}
The Duskwood is a small forest in western [[Aundar]], just north of [[Passage]].
Found in a small packet, this powder resembles very fine sand. There is enough of it for one use. When you throw the dust into the air, you and each creature and object within 10 feet of you become invisible for 3-7 minutes. The duration is the same for all subjects, and the dust is consumed when its magic takes effect. If a creature affected by the dust attacks or casts a spell, the invisibility ends for that creature.
This small packet contains 6-10 pinches of dust. You can sprinkle a pinch of it over water. The dust turns a cube of water 15 feet on a side into one marble-sized pellet, which floats or rests near where the dust was sprinkled. The pellet's weight is negligible.

The pellet can be smashed against a hard surface, causing the pellet to shatter and release the water the dust absorbed. Doing so ends that pellet's magic.
This small packet contains 3 pinches of glowing dust. You
can take a pinch of dust and sprinkle it in a cup of water, causing it to glow with golden light for 1 hour. The water emits bright light in a 5-foot radius and
dim light for an additional 5 feet.

If you drink the water before it stops glowing, your body
glows with the same golden light for the remainder of the
hour, emitting bright light in a 10-foot radius and dim light
for an additional 10 feet. 
While holding this wand, you can instantly clean an area within 10 feet of you that is no larger than 1 cubic foot every three to five seconds, removing dirt and grime. There are many variations of the //duster//; the two-handed //staff of cleansing// covers a five-foot cube in the same amount of time, while the //bright basin// cleans clothing and cloth objects placed within it.
Duum (“Drum”) is an old [[golin’dar|goblin]] storyteller, named
for her deep, powerful voice. She can be found among
the goblins of a major city, sharing tales of the ancient
empire and collecting news and rumors. While she has
no desire to engage in violence, she’s a deadly assassin
of the [[Shaarat’khesh|Khesh'dar]].
The southernmost of [[Adar]]'s temple-keeps, Dvaarnava
is the only place in Adar where ships can still actually land.
Dangerous spires of underwater rock form a maze that leads
to a natural cavern in the sharp cliffs on the tip of Adar's
horn. Only those who know how can even approach the
cavern, and a further test awaits them—a [[sisiutl]] guards the cave mouth as part of an ages-old pact. Only sailors who give the correct answers to the creature's challenges can pass within. The protectors of Dvaarnava can watch the sea passage and the grotto from galleries in the cliffs above, and some leaders in the monastery can
grant access to those that do not meet the sisiutl's requirements. If necessary, watchers in the galleries can assault
unwanted visitors with ballistae, arrows, and magic. 

Dvaarnava's populace lives by fishing and collecting
plants in the sea caves nearby, and it enjoys the sunlight
that comes from the narrow fissures in the cavern ceiling.
Storms are still common here, though, and habitable
spaces are placed well above the water.

The fortress is located far from any other settlement,
and the mountains around it are forbidding. Still, the
[[Summit Road]] and [[xeph]] merchants also work in the city,
making passage to and from [[Ardhmen]] in ships under
privateer flags.

Dvaarnava is the gate by which many [[Adarans]] leave
[[Adar]] for good. Vessels from the port carry goods and
people through treacherous waters and [[Riedra]]n lines,
their crews knowing full well that any attempt to return
to Dvaarnava could mean their deaths. 
//Gold is the gift of the mountains, but iron comes from blood and bone.//

<div align="right">—Mror proverb</div>

The origin of the dwarves is shrouded in mystery. Some
of their legends tell of a great migration that led the
ancient dwarves to [[Khorvaire]] from "a land of endless
ice." Many believe this refers to the arctic lands of the
[[Frostfell]], while others claim that the first dwarves must
have come from the frozen plane of [[Risia]]. Wherever
their roots, these migrant dwarves established a mighty
nation beneath the surface of Khorvaire.

Most dwarven legends, unconcerned with the question of origin, dwell on the mighty artifacts and priceless
treasures crafted by ancient deep-dwelling dwarves,
and of the bloody wars they waged against the [[goblinoid]]
Empire of [[Dhakaan]]. Dwarves today cherish the memory
of this ancient nation, for all dwarves in Khorvaire are
descended from exiles driven from the realm below—which was later destroyed by the [[daelkyr]]. Particularly
in the [[Mror Holds]], many dwarves cherish the idea of returning to the subterranean reaches and reestablishing
their ancient nation, restoring them to a greatness they
have all but forgotten. 

!! Dwarven Biology

Though they stand
well under 5 feet tall, dwarves are so
broad and compact that they can weigh
as much as a human standing nearly two
feet taller. Their courage and endurance
are also easily a match for any of
the larger folk.
Dwarven skin ranges from deep brown to a paler
hue tinged with red, but the most common shades are
light brown or deep tan, like certain tones of earth.
Their hair, worn long but in simple styles, is usually
black, gray, or brown, though paler dwarves often have
red hair. Male dwarves value their beards highly and
groom them carefully. 

Dwarves can live to be more than 350 years old, so the
oldest living dwarves often remember a very different
world. This longevity grants them a
perspective on the world that shorter-lived races such as
[[human]]s and [[halfling]]s lack. Dwarves are solid and enduring like the mountains
they love, weathering the passage of centuries with stoic
endurance and little change.  Intellectually, they mature at about the same rate as
humans, but they generally aren't considered to be full adults
until around 50 years of age. This ties to the fact that dwarves
have a low fertility rate and their reproductive peak is between
50 and 120. While under 50, a [[Mror|Mror Holds]] dwarf is usually learning
the family trade and working directly for their parents, uncles,
or aunts; at 50 and above, a dwarf starts thinking about starting
their own branch of the family tree and the family trade.

While the dwarves of the [[Realm Below]] may have spent their
entire lives below the surface, the [[Mror|Mror Holds]] dwarves were born
on the surface of the [[Ironroot Mountains]]. Mror dwarves
appreciate sunlight and color, and their buildings typically have
windows, but dwarves don't need light. Absolute darkness
impairs their darkvision, but this is merely inconvenient, not
unbearable, and many mine tunnels and stretches of the Realm
Below have no light sources.

Resulting from this, the circadian rhythms of dwarves are
more flexible than those of humans. While it's important to
maintain a regular schedule, day and night have little meaning
for the Mror. Mror communities are active at all hours, and
major Mror businesses are continuously open. “Nightlife” isn't
a concept in Mror society, and entertainment can likewise be
found at all hours, so traveling Mror are often frustrated by the
limited opportunities in [[human]] communities.

!! Dwarves of the Mror Holds

Despite their long lives, the Mror dwarves are surprisingly
unconcerned with recording the past. They care deeply
about family. They cling to property, whether it's land or more
portable possessions. They're fierce in protecting the things
that they care about. But as the bard [[Kessler]] said, “The Mror
care deeply about their stories, but facts just get in the way.”
Mror talespinners have an endless supply of stories about the
mighty deeds of clan heroes, but when it comes to specific
dates or verifiable facts, things often get muddy. Records of
debts, marriages, adoptions—these things are written down
by [[Sivis]] scribes. But general history is largely trusted to the
passed-down tales of the spinners, and they make history
//interesting//. A particular story could be placed in three different
centuries by three different [[clans|Mror clan]], and the villain of one tale
could be the hero in the neighboring holdfast.

Mror dwarves can be seen as boastful by outsiders, quick
to share tales of their exploits. However, they don't seek to
dominate every conversation with their tales, but expect others
to share their stories as well—and if others don't, Mror are
quick to boast about the deeds of their companions. Anyone
who spends much time around Mror quickly grows used to the
phrase //Tol kollan//—or the Common translation, “That reminds
me of a story.” Mror hate quick meetings; any gathering should
have time for tales. In playing a Mror character, you might
come up with a few stories you love, as well as taking joy in
dramatically retelling the story of your adventures—the deeds
of both you and your fellow adventurers—celebrating and
highlighting your finest moments.

The dwarves of the [[Mror Holds]] are defined in part
by their relationship to the ancient [[Realm Below]]. In a
desperate effort to rediscover and reclaim the holdings
of their old nation, the dwarves have recovered many
weapons of war created in the final days of the empire.
Some of these weapons were forged by the dwarves to
wield against the [[daelkyr]], but others were made by the
daelkyr for the use of their minions—strange symbiotic items that use the
life force of their hosts to power their magical abilities.

Some [[clans|Mror clan]] have banned the use of these [[symbiont]]s and any exploration of daelkyr magic, notably
the prominent Clan [[Mroranon]]. Others, particularly Clan
[[Soldorak]], have embraced this magic to use against the
daelkyr. Defining a relationship to these discoveries
can be an important element of your character's background; you might be a Mroranon [[paladin]] or ranger
dedicated to expunging any trace of daelkyr magic from
the Realm Below, or a Soldorak [[warlock]] drawing on the
magic of [[Xoriat]] in pursuit of your own power, as well as
glory for your clan.

Another important question to consider in playing a
Mrorian character is why you have left the Holds. The table below offers some suggestions
that might spark further ideas. 

| !<<dr d8>> |!Reason for Leaving |
| 1 |A feud with a rival clan has gotten out of hand, and it's best that you spend a few decades away from the Holds while things cool down. |
| 2 |You come from a large family and there's no room for you to shine in your hold, so you hope to make a name for yourself in the wider world. |
| 3 |Your clan has arranged your marriage and your future, and you've decided to have a few adventures before you settle down. |
| 4 |You're pursuing a vendetta with a personal rival, seeking to defeat them either in battle or in business. |
| 5 |You're searching for a legendary dwarven artifact, stolen centuries ago by a [[Karrnish|Karrnath]] noble. |
| 6 |You want to assemble champions who can help you explore the ancient ruins beneath your ancestral home. |
| 7 |You've rejected your clan's attitude toward [[daelkyr]] magic, earning the enmity of powerful dwarves. |
| 8 |You want to understand how the other peoples of [[Khorvaire]]—especially the [[goblinoid]]s and [[orc]]s—have fought the daelkyr. |

!! Dwarves of the Five Nations

Dwarves are spread across Khorvaire. Dwarf soldiers
and engineers were part of the armies that united the
[[Five Nations]], and dwarf masons laid the foundations
of the greatest cities of [[Galifar]]. Traditionally loyal to
family and clan, dwarves who were born outside the
[[Mror Holds]] tend to transfer their fierce clan loyalty to
their new homes—and particularly to the edifices of
stonework that symbolize the permanence and stability of those places. A [[Brelish|Breland]] dwarf might feel a deep,
personal connection to the towers of [[Sharn]] or the great
walls of [[Wroat]]; some dwarves love the great [[Cathedral of the Silver Flame]] in [[Thrane]] more than devout followers of the [[Silver Flame]]. Ultimately, the typical dwarf in
wider [[Khorvaire]] is more patriotic than the average [[human]] of the Five Nations, and many dwarves fought for
their nations in the [[Last War]], at least for a time.

When creating a dwarf character from the Five Nations, consider both your national loyalty and the role
your family plays in your life. Do you live near family?
What kind of work do your closest family members pursue, and is that reflected in the background you choose?
Are you close to your relatives, or have you had a falling
out? Did you lose kin in the [[Last War]]? 

!! Dwarves and Dragonmarks

The [[Mark of Warding]] appears on dwarves of House
[[Kundarak]], which had its origins as one of the clans of
the [[Mror Holds]]. Kundarak dwarves live across Khorvaire while maintaining close ties to the Mror Holds and
their loyalty to the house over any particular nation. In addition to providing all manner of security, House
Kundarak dominates [[Khorvaire]]'s banking industry. 

As a [[dragonmarked house]], it is obliged to remain neutral
in the politics of all nations, including its homeland. As a result, Clan Kundarak is no longer represented on
the [[Iron Council]] that rules the Mror Holds. However, it
wields an influence over the other clans that reflects its
wealth and its status in the world beyond the Holds, and
the voice of Kundarak members arguing against the use
of [[daelkyr]] magic carries significant weight. 
//Flesh isn't final: it's clay to be molded into something better. We can be so much more than these bodies we're born with. You were birthed in the prison of everyday life, but there are paths in this foul labyrinth that lead to unimaginable wonders. Let us show you the way.//
<div align="right">—A cultist of Dyrrn</div>

Dyrrn is known to its followers as the Corruptor, the Stealer of Thoughts, the Slithering Lord, and the Foul Labyrinth. In the lore of the [[Gatekeepers]], it is said that Dyrrn plants thoughts in the weak-minded—the seeds of terrible ideas that fester and grow. Those who are particularly brilliant often draw the attention of the Foul Labyrinth, which hungers to consume unique minds.

Dyrrn most often appears as a tall humanoid male with pale skin, clad in a heavy cassock of interwoven black leather that slithers unsettlingly around the daelkyr's form. Dyrrn can extend tentacles from its body, using them to extract the brains of others.

//''Twisting Flesh and Thought.''// The [[mind flayer]]s of [[Eberron]] know Dyrrn as the Overmind, and it serves as the cornerstone of their collective consciousness. Of all the [[daelkyr]], the Corruptor is the most adept at twisting minds and bodies to create monsters. It was Dyrrn who turned [[goblinoid]] prisoners into the first [[dolgaunt]]s and [[dolgrim]]s, creating the legions that would savage the nations of [[Khorvaire]]. Dyrrn is also a prolific creator of [[symbiont]]s—treasures that tempt people to bind alien entities to their flesh.

//''Dyrrn's Cults.''// Dyrrn's lair touches the [[Eldeen Reaches]], and the [[druid]]s of the Towering Wood are always watching for Dyrrn's influence. At the start of the [[Last War]], the dwarves of the [[Mror Holds]] discovered passages to the daelkyr's realm below their halls, and Dyrrn's cults have spread from there.

Mind flayers often work with Dyrrn's cults, many of which are obsessed with evolution—through the use of symbionts or by becoming an [[aberration]]. Those who worship the Stealer of Thoughts believe that Dyrrn will consume all sentient beings, except for its servants.

However, there are other cults—such as the [[Transcendent Flesh]]—who see Dyrrn's
actions in a positive light. Dyrrn transforms and creates new
forms of life—but who are we to decide that these things are
monsters? Such cultists believe that Dyrrn is driving evolution,
and they can transcend their own limits by walking the path of
the Foul Labyrinth. While this can start as simply transactional,
the influence of the Corruptor is insidious, and cultists can
soon start to see natural creatures as vile and weak.

//''Character Ideas.''// An [[artificer]] could hear Dyrnn's whispers,
guiding them to create living tools; their infusions might appear
to be alive, though their effects are the same as those for other
artificers. A [[warlock]] bound to Dyrrn could experience dramatic
physical transformation or focus on powers that control
thought—are they now a renegade fighting Dyrrn, or being
guided toward evolution? A barbarian could present their rage
as a disturbing physical transformation, while a transmuter
[[wizard]] might follow in [[Mordain the Fleshweaver]]'s footsteps.

//''Story Ideas.''// Dyrrn's cults can always provide a foothold for
[[aberration]]s to enter a story. Cultists could be creating monsters
from corpses, cloning important people and releasing the clones
into the world, or turning innocent people into aberrations. A
[[Transcendent Flesh]] cult might focus on their own physical or mental evolution and have no intention of harming others—until they need extra brains or body parts. Someone might
discover that Dyrrn is responsible for both [[aberrant|aberrant dragonmark]] and true
[[dragonmark]]s; what impact would this have on the world?
This long, whip-like strand of tough muscle bears a sharp stinger at one end. To attune to this symbiotic weapon, you wrap the whip around your wrist for up to one hour, during which time the whip painfully embeds its tendrils into your arm.

You gain advantage to attacks made with this magic whip, but attack rolls made against [[aberration]]s with this weapon have disadvantage. A creature hit by this weapon experiences strange psychic effects and may find themselves stunned, confused, or filled with terror.

You can sheathe the whip by causing it to retract into your arm, or draw the whip out of your arm again.

See also [[Dyrrn]].
When wearing this set of tiny brass weight earrings, your balance is greatly improved. 
This simple set of diamond stud earrings greatly improves the wearer's hearing, giving them the ability to eavesdrop on a conversation a hundred feet away. These earrings also protect the user from dangerously loud sounds.
This set of tiny, pale jade spheres on silver stud earrings allows the wearer to read fluently any language they see; however, it does not allow them to speak or write the language.
To attune to this [[symbiont]], you must hold it against the skin behind your ear for several minutes, whereupon it burrows into your head and bonds to your skull. While the earworm is inside you, you can speak, read, and write Deep Speech. You can also detect the thoughts of those around you a few times per day, and each time you do this, the earworm sends the information gleaned to the nearest [[daelkyr]], or to the next nearest earworm until it reaches a daelkyr.
While wearing these earrings, your hearing is enhanced; you have advantage on
attempts made to overhear conversations held within 30 feet of you. 
Between [[Siberys]], the Dragon Above, and [[Khyber]], the Dragon Below, the surface of the Dragon Between stretches from
horizon to horizon, a patchwork of fields and forests, oceans
and mountains, deserts, swamps, jungles, tundra, and more.
Beneath a yellow sun, Eberron's varied environments give
way one to another across each continent. Mountains rise,
valleys fall, and water surrounds the land. 

The world of Eberron has a rich history built on heroic
deeds, evolving magic, and the wounds of a long, devastating war. Action, adventure, good, evil, and a thousand
shades of gray paint the landscape in broad strokes. Ancient mysteries await discovery so they can influence the
world and its people. 

!! Five Things to Know

# ''The Last War Has Ended—Sort Of.'' The [[Last War]] plunged the continent of [[Khorvaire]] into civil war more than a century ago, shattering the [[Five Nations]] that made up the kingdom of [[Galifar]]. Just two years ago, the war ended with the signing of the [[Treaty of Thronehold]] and the establishment of twelve recognized nations and a tenuous peace. The conflicts, the anger, and the pain of the long war remain, however, and the new nations seek every advantage as they prepare for the next war to break out on the continent. 

# ''Dragonmarked Dynasties.'' The great [[dragonmarked families|dragonmarked house]] are the barons of industry and commerce throughout [[Khorvaire]] and beyond. Their influence transcends political boundaries, and they remained mostly neutral during the [[Last War]]. Not technically citizens of any nation, the matriarchs and patriarchs of each house live in splendor within their [[enclave]]s and emporiums located throughout Khorvaire. These dynastic houses of commerce derive their power from [[dragonmark]]s—hereditary arcane sigils that manifest on certain individuals within the family, granting them limited but useful magical abilities associated with the [[trade guild]]s each family controls. 

# ''Lands of Intrigue.''  The war is over, and the nations of Khorvaire now try to build a new age of peace and prosperity. Ancient threats linger, however, and the world needs heroes to take up the cause. Nations compete on many levels—over economic dominance, political influence, territory, magical power, and more—each looking to maintain or improve its status by any means short of all-out war. [[Dragonmarked house|dragonmarked house]]s, churches both pure and corrupt, crime lords, monster gangs, psionic spies, arcane universities, secret societies, sinister masterminds, [[dragon]]s, and a multitude of organizations and factions join the struggle for position and power in the aftermath of the [[Last War]]. 

# ''A Continent of Adventure.'' From the jungles of [[Q'barra]] to the blasted hills and valleys of the [[Demon Wastes]], from the skyscrapers of [[Sharn]] to the dinosaur-filled [[Talenta Plains]], Eberron is a world of adventure. Adventures can draw heroes from one exotic location to another across the continent of [[Khorvaire]]. The quest for the Mirror of the Seventh Moon might take the heroes from a hidden mountain shrine in [[Darguun]] to a ruined castle in the [[Shadow Marches]] and finally to a dungeon deep below the [[Library of Korranberg]]. Through the use of magical transportation, heroes can reach a wide range of environments over the course of an adventure, and thus deal with a diverse assortment of monsters and other challenges. 

# ''A World of Magic.'' The technology of Eberron has developed not through the advance of science but by the mastery of magic. The widespread use of magic pervades life in the cities and towns. [[Airship|airship]]s and [[rail|lightning rail]] transport make rapid travel across the continent possible. A working class of minor mages, called [[magewright]]s, uses spells to provide energy and other necessities. Advances in [[magic item]] creation have led to everything from self propelled farming implements to sentient, free-willed [[beings|warforged]] created in [[artificer]]s' forges. With the aid of rare crystals called [[dragonshard]]s, [[dragonmark]]s can be made more powerful, [[elemental]]s can be controlled and harnessed, and [[magic item]]s can be crafted and shaped. 

!! Brief History of Eberron

See [[Progenitor Dragons]] for the creation myth.

In the first age of the world, powerful archfiends known as the [[overlord]]s
and their armies of [[rakshasa]] and lesser [[fiend]]s dominated Eberron. Forces of light—some versions of the
story say the nine gods of the [[Sovereign Host]], others
say an alliance of [[dragon]]s and [[celestial]]s—eventually
defeated the overlords. But these fiends couldn't be destroyed; instead, their immortal essences were bound in
[[Khyber]]. Whatever the true details of this tale, this much
is true: if the [[overlord]]s ever break their bonds, the consequences would be catastrophic.

Over the course of millennia, numerous civilizations
rose only to fall. [[Giant|giant]]s built mighty kingdoms on the
continent of [[Xen'drik]] that were devastated by a war
with the [[dragon]]s of [[Argonnessen]]. The [[goblin|goblinoid]] empire of
[[Dhakaan]] ruled [[Khorvaire]] until its reign was shattered
by an invading army of [[mind flayer]]s, [[beholder]]s, and the
[[foul creatures|daelkyr]] that created them. Today these civilizations are known only through the remnants left behind. 

!! Eberron's Plane of Existence

The planet of Eberron is the heart of its own Material
Plane. It is surrounded by the Ring of [[Siberys]]. Beyond
this band of [[dragonshard]]s, thirteen moons orbit the
world. To date, no creature from Eberron has explored
the moons, and none can say whether they are lifeless
rocks or thriving worlds. Some sages believe that the
moons are connected to the planes, or that they might
even be physical extensions of the planes, but the truth
of these assertions remains unknown.

No other planets have been discovered within Eberron's Material Plane. The underworld of [[Khyber]], however, contains a host of demiplanes, tiny pockets of
altered reality. As such, venturing beneath the surface
of Eberron can lead you to a network of caverns and
passages, and if you find the right passage, it can take
you to fantastic and deadly places inhabited by [[fiend]]s,
[[aberration]]s, and other children of Khyber. 
//"Sword against shadow. Faith against fear. I walk the edge of the world, and no horror shall pass my blade."//<br/>
<div align="right">—The Vow of the Edgewalker</div>

The Edgewalkers are a division of the [[Harmonious Shield]] of [[Riedra]]. These survivalists patrol the borders of the [[wild zone]]s and other dangerous regions, keeping the horrors within from escaping to harm innocent Riedrans.  For nine hundred years these warriors have held the chaos of the outer realms at bay.

!! Joining the Edgewalkers

Service in the Edgewalkers is not a choice. It is an honor and
a duty, a calling from the [[Inspired]] themselves. Many Edgewalker soldiers are drawn from the other branches of the [[Harmonious Shield]]; these are among the most skilled and
dedicated. Others are chosen to serve the corps at an early
age and spend their adolescence in intensive training.

Edgewalkers are the shield of [[Riedra]], and it would
be almost unimaginable for a foreigner to be drawn into
the service. As such, an Edgewalker PC is most likely a
Riedran who already meets the entry requirements at the
start of the campaign, and who can be assumed to have
been raised as an Edgewalker. 

Many Edgewalkers are rangers, [[psi warrior]]s, [[ardent]]s, and [[psion]]s, along with a handful of [[cleric]]s of the [[Path of Inspiration]]. However, even wielders of [[arcane magic]] can find a place in the Edgewalkers. While the [[Inspired]] have purged arcane magic from the common populace of Riedra, when it comes to
defending against extraplanar threats, they are willing to make exceptions. If a Riedran child develops the talents of a [[sorcerer]], specifically with a gift for [[divination]] or [[abjuration]], they might be claimed by the Edgewalkers. Such characters believe that it is dangerous to use arcane forces, but that devoted service to the Inspired is a
shield—an Edgewalker sorcerer should never use his powers
for his own benefit, but as long as he uses them solely in
defense of Riedra, his devotion should save him.

!! Edgewalker Benefits

The Edgewalkers are an elite military force trained to
deal with the myriad dangers of the [[wild zone]]s and other
supernatural and extraplanar threats.

An Edgewalker receives free room and board in any [[Riedran|Riedrans]] community.

Edgewalkers are assigned equipment. They do
not have to pay for basic goods, and might even receive
minor psionic or [[magic item]]s at no charge—though
they must account for such items at the conclusion of an
assignment. Although they could receive free supplies,
Edgewalkers have no access to nonstandard equipment,
since Riedrans are not expected to purchase goods, and
any unusual requests must be justified.

For a Riedran, an Edgewalker has an unusual level of access to [[divine|divine magic]], [[primal|primal magic]], and [[arcane magic]]. Edgewalker spellcasters might be motivated by the needs of a mission or by friendship with a character, but their services cannot be purchased with gold.

The Edgewalkers are the ultimate authority on the [[wild zone]]s of [[Riedra]]. By consulting at an Edgewalker stronghold, a member has advantage to gain information on any wild zone, or a large advantage on one of the zones specifically overseen by the fortress. 

!! Playing an Edgewalker

You are a warrior on the front lines of a war beyond
imagination. Other soldiers of the [[Harmonious Shield]]
chase [[dromite]]s through tunnels or glare at the [[Adarans]]
across mountain walls. You? It's your job to go toe to toe
with [[demon]]s and [[monsters|aberration]] shaped by [[forces of madness|Xoriat]].
You've stared into raw chaos, and felt the heat of elemental fire. You'll be lucky if you live ten years in the service, but you wouldn't have it any other way. These horrors
can't be left to prey on the innocent.

As an Edgewalker, you know just how fragile the
world is. The [[wild zone]]s are permanent battlegrounds,
but the walls of reality can be breached anywhere, at any time. Also, extraplanar threats are only the beginning. [[Vampire|vampire]]s, [[ghost]]s, [[rakshasa]]s, [[undead]], and [[aberration]]s are all your concern. You are the sentinel who
walks the line between the natural and unnatural world.
Your greatest challenge is to hold to your faith, lest you
become the darkness that you battle.

You have no use for humor and no time for leisure.
Evil is out there, and every minute you spend at peace is
a moment you could serve in battle. Study those around
you for any signs of possession or corruption. Never
lower your guard, and never pass up an opportunity to
defend an innocent from harm.

Not all soldiers live up to this ideal. Perhaps you
are a fallen Edgewalker, one who has seen the power
that lies in the darkness and now pursues it. You have
abandoned the [[Path of Inspiration]], and you care nothing
for innocents. You conceal your true motives from your
comrades, but when you enter the [[wild zone]]s, you aren't
thinking of the safety of [[Riedra]]; your only interest is your
own gain. You intend to be a [[demon]] prince, the equal of
any of the [[Inspired]]... and woe betide anyone who stands
in your way. 

Fallen or true, you were indoctrinated from birth
in the [[Path of Inspiration]]. You were taught to believe
in the //il-altas//, to believe that the [[Inspired]] are guided by
the spirit of [[Riedra]] itself. You have seen the good that
the Inspired have done for your people; you have fought
beside Inspired lords against [[aberration]]s and [[fiend]]s.
Nonetheless, of all the people in Riedra, you are best
equipped to realize the true nature of your rulers. But
what do you do if you determine your beloved masters are
alien terrors? If you speak out, you will be denounced as
a heretic and slain. Perhaps you can work from within,
helping dissidents and gathering information. Or you
might flee to a foreign land. You know that the battle
of the planes stretches beyond national borders; if you
decide to fight the [[quori]], you can fight them anywhere in
the world. 

Some Edgewalkers remain loyal to the [[Inspired]] even after learning the truth about the [[quori]]. The quori might be alien spirits, but they have brought peace and security to the people of Riedra. In many ways, the [[kalashtar]] agenda is as selfish as that of the [[Dreaming Dark]]. Finally, you might decide that you can no longer work for the Inspired, and that you must find your own path, fighting both the kalashtar and the quori. 

!!! Combat

You are a mortal fighting fiends and horrors.
You expect to be outmatched by your enemies, and you
must look for every possible advantage. Study your enemy.
Don't just charge into battle and fight until you fall. Study.
Observe. Adapt. If need be, retreat and reequip. You are
not afraid to die in battle, but if there's a possibility of
buying a later victory with retreat, do so.

You are always ready to do battle, but you know that
violence is not always the best solution. Many spirits can
be bound by oaths or flattery. In such situations, words
can be far more effective than weapons. Know your
enemy, and choose your tools wisely.

!!! Advancement

Edgewalkers are divided into two orders, the sentries and the inquisitors. A sentry might
spend his entire career at one fortress. You most likely follow the path of the inquisitor, a roaming agent who can be sent anywhere in [[Eberron]]. Edgewalker inquisitors are unlikely to ever get promoted: Your skills are too useful in the field. You go where the [[Inspired]] send you. If you are true to your cause, personal wealth and luxury
mean very little. If you are a fallen Edgewalker, you hope
to use your knowledge of the [[plane]]s to gain personal
power. If you are a rebel, you seek to protect the people
from supernatural danger, but this struggle could bring
you into conflict with your former masters. 

!!! Missions

An Edgewalker sentry guards a specific [[manifest zone]]. Often this duty involves patrolling the perimeter, which is slashed and burned to provide a clear
line of sight. Other times, you might be sent into the zone
itself, to recover valuable resources or monitor experiments set in motion by the [[Inspired]].

Edgewalker inquisitors are constantly in motion,
and might be called in to investigate any supernatural
threat or flare in planar activity. Your duties are not
limited to [[Riedra]]. You might be sent to [[Syrkarn]] to battle
[[rakshasa]]s or to [[Xen'drik]] to investigate the planar magic
of the [[giant]]s. You could even be sent to [[Khorvaire]] to
uncover the secret of the [[Mourning]]. This sort of assignment would provide you with a solid base for traveling the world and working with Khorvairian adventurers, while
still remaining loyal to the [[Inspired]]. 

!!! Responsibilities

Whether you are a sentry or an inquisitor, your duties are simple. Follow the orders of
the Inspired. Defend the innocent people of Riedra from
extraplanar and supernatural horrors. In many ways, you
have much in common with a templar of the [[Silver Flame]],
but you serve the [[Path of Inspiration]], not a flame whose
own followers admit is tainted by [[demonic influences|Bel Shalor]]. 

!! Edgewalkers in the World

//"I am impressed by how efficiently these soldiers contained the eruption from Fernia. Nonetheless, I continue to question the wisdom of training mortals in the techniques of exorcism and dimensional binding."//<br/>
<div align="right">—Lord Xerakhesh, Dominator of the [[Dreaming Dark]]</div>

[[Wild zone|wild zone]]s hold a wealth of opportunities for adventurers,
and the Edgewalkers are the gatekeepers of these regions.
They might oppose adventurers who seek to release or
remove something held within a wild zone, or who
seek to destroy an [[Inspired]] installation based in
a wild zone. But Edgewalkers can just as easily
be allies who come to the aid of adventurers who underestimate the danger of the
planar breaches. Most Edgewalkers are
good people who have sworn their lives
to protecting innocents—even innocent foreigners. 

!!! Organization

The Edgewalkers were founded in 390 Unity (88 YK), in response to a disastrous planar incursion in the province of [[Nulakesh]]. However, the group has
its roots in the nation of [[Khalesh]]. Before the [[Sundering]], the [[couatl]]-worshiping people of Khalesh sought to eliminate all supernatural threats in [[Sarlona]]. The Khaleshite Order of the Silver Blade developed techniques for banishing and binding [[fiend]]s of [[Khyber]] and the [[plane]]s. Although most Khalesh
were killed during the Sundering, their
legacy and techniques live on in the Edgewalkers.

The Edgewalkers are a military
corps, but the hierarchy is simple and
promotion is rare. The bulk of the members
belong to the Order of Sentries, soldiers
assigned to a specific region. All soldiers
begin with the rank of sentry. A sentry
guide commands a squad of sentries.

A sentry warden commands a small watchtower.
These posts are generally held by [[Chosen]], though a few
gifted [[human]]s have risen to this rank.

A sentry lord commands a fortress. Chosen who advance to this rank are usually [[tsucora]] or [[du'ulora]] [[Inspired]].

A lord commander coordinates efforts across an
entire [[province|Sarlonan province]]. The posts are all held by [[Inspired]].

The supreme commander of the order is Lord [[Kaltaresh]], Keeper of Seals ([[du'ulora]] [[Inspired]]). Kaltaresh guides the Edgewalkers from the division headquarters in the bastion of [[Dar Mun]]. 

A fraction of Edgewalkers belong to the Order of Inquisitors. There are no ranks within this order; technically, an inquisitor stands between sentry guide and sentry warden, and the activities of the inquisitors are coordinated by the lord commanders. 

!!! NPC Reactions

Edgewalkers are heroes and always receive a
friendly welcome in [[Riedran|Riedrans]] communities. Beyond [[Riedra]], Edgewalkers
are much less well known; even in [[Adar]]
or [[Syrkarn]], few can tell the difference
between Edgewalkers and other Riedran
soldiers, and they react accordingly. The
exceptions are communities close to [[wild zone]]s. Lord [[Kaltaresh]] has occasionally sent Edgewalkers to counter dangerous planar
surges in [[Syrkarn]] and the [[Tundra|Tashana Tundra]]. In these
areas, locals might be friendly to Edgewalkers despite a general hostility toward Riedrans.
The Eel Bay lies the coast of mainland [[Lhazaar Principalities]] near [[Port Verge]]. It is primarily controlled by the [[Diresharks]].
Hulking [[genie]]s of [[Fernia]], the efreet are masters of flame, immune to fire and able to create it on a whim. Fine silk caftans and damask robes drape their magma-red or coal-black skin, and they bedeck themselves in brass and gold tores, chains, and rings, all glittering with jewels. When an efreeti flies, its lower body transforms into a column of smoke and embers.

The efreet are the brightest stars in the firmament of [[Fernia]].
They are aristocrats, dwelling in sprawling mansions and
castles, attended by countless servants, dwelling amidst
astonishing opulence. Fire consumes, and the efreet are
masters of conspicuous consumption. They are passionate
and wild, quick to both anger and joy. They are casually
cruel, and can consume or destroy the lives of others even
as they celebrate. However, the efreet aren't conquerors,
for they already have everything they could possibly want;
their elemental servants exist to serve them, and the efreet
consider them to be casually disposable.

The efreet have been competing with one another since
the dawn of time. Passionate arguments can escalate into
dramatic duels, and now and again, two efreet unleash their
armies in a grand display of fire and burning blood. But by
and large, the conflict between the efreet is social, as each
strives to outshine their rivals. Efreet society is bound by an
elaborate social calendar. At any moment in Fernia, one of
the efreet is hosting a grand celebration. Sometimes there's
a theme or explanation for the gala—the unveiling of a new
work of art, the epic burning of an old piece of art, or the
thousandth anniversary of an efreeti's last rebirth. Other
times, the party needs no explanation.

If an efreeti isn't hosting a gala, it's planning its next
one—and always, always searching for ways to outshine
every celebration that's come before. Often this is about
working with the resources within the plane, pushing [[azer]]s
and [[dao]] to create new wonders. But efreet have vast wealth
and the ability to travel the planes, and this can bring them
to the Material Plane. If a celebration sports a flight of red
[[dragon]]s performing synchronized pyrotechnics, remember
this—dragons aren't native to Fernia, and the plane doesn't
have manifestations of creatures; thus, the efreeti hired
those dragons from another plane. Imagine what it would
take to convince dragons of [[Argonnessen]] to perform as
entertainment! Efreet rarely have any reason to deal with
adventurers, but if the characters do have something to
offer—or if they're interesting enough simply to be invited
to a party as curiosities—an efreeti can make it worth
their time. An efreeti could also serve as the patron of a
[[warlock]], giving the mortal power, but demanding that they always search for things
that could give the efreeti an edge over their rivals in their
endless social battles.

While efreet have much to offer, any association with an
efreeti is dangerous. They abide by the letter of any contracts
they make, but adventurers would be wise to make sure a
contract includes safety clauses. After all, efreet are spirits
of fire, and they burn the things they touch. They care about
nothing save their own status and amusement, and destroy
lives without a thought.

There are a host of noble efreet in Fernia. Here are a few
of the most prominent, including their public names they use
with mortals—their Ignan names are far longer.

* Sultan [[Azhalar]] of High Hearth
* Pasha [[Shashraqa]] of Firefall
* Pasha [[Raqashtar]] of Gold Ash
Eladrin dwell in the verdant splendor of [[Thelanis]] and its glittering [[feyspire]]s. They are related to the [[elves|elf]] found on the Material Plane; some say the elves of Eberron descended from the doomed inhabitants of [[Shae Tirias Tolai]].

Eladrin are creatures ruled by emotion—and because of their unique magical nature, they undergo physical changes to match their changes in temperament. The fey magic flowing through eladrin transforms them into different seasonal aspects, with behaviors and capabilities that change with their forms. Some eladrin might remain in a particular aspect for years, while others run through the emotional spectrum each week.

For the eladrin of Thelanis, the seasonal aspect remains
a statement of their current mood and nature. However,
seasons are also used as a political statement, reflecting
a degree of support for that season in the [[Moon Court]];
there may be times when an eladrin will resist assuming
a particular aspect so as not to offend a host.

Another manifestation of the fey power of eladrin is their //fey step//, an ability that allows them to teleport short distances.
The Eldeen Bay lies off the coast of the [[Eldeen Reaches]], the [[Demon Wastes]], and [[Aundair]].
''Capital:'' [[Greenheart]]<br/>
''Hallmarks:'' Agriculture, animal husbandry, druidic magic 

A stretch of fertile farmlands borders a vast, untamed
forest. Farmers tend the fields, while tribes of shifters
and circles of [[druid]]s and rangers roam through the
woods. These are the Eldeen Reaches.

Druids and [[shifter]]s dwelled in the [[Towering Wood]]
for thousands of years, but the eastern farmlands of the
Reaches were part of [[Aundair]] until the [[Last War]]. The
lords of Aundair focused their resources on the war effort, ignoring banditry and other problems faced by the
farmers of the east. The [[Wardens of the Wood]]—largest
of the [[druid]] sects—came to the aid of these farmers.
Fifty years ago, the people of eastern Aundair seceded
and formed the Eldeen Reaches. The [[Treaty of Thronehold]] recognized the Reaches as a nation, but its citizens fear Aundair will try to reclaim the region.

[[Druidic magic|primal magic]] is central to life in the Eldeen Reaches.
Its people seek to live in harmony with the natural
world, and each community has a druidic advisor
who helps with planning and planting. The Towering Wood is also home to tribes of [[shifter]]s, who maintain a nomadic existence. The [[Wardens of the Wood]] uphold
order and settle disputes, and the Great Druid [[Oalian]]—an [[awaken]]ed greatpine—is the spiritual leader of the Reaches.

!! Interesting Things About the Eldeen Reaches

* The [[Towering Wood]] is vast and untamed. The [[Wardens of the Wood]] seek to protect travelers, but swathes of forest remain entirely untouched by [[human]] or [[shifter]]. Such areas could hold giant beasts never seen in the outside world, or relics from a previous age—artifacts or ruins created by [[demon]]s or the terrifying [[daelkyr]].
* The [[fey]] have a strong presence in the Towering Wood. Even outside the fey stronghold of the [[Twilight Demesne]], [[manifest zone]]s tied to [[Thelanis]] allow passage between worlds. The Eldeen Reaches are a logical origin for a character with ties to the fey.
* [[Druidic|druid]] magic is a vital tool in the Eldeen Reaches. Residents use animal messengers to carry communications between villages, and beasts perform vital services. Goodberry wine takes the place of House [[Vadalis]] healing. Communities include [[awaken]]ed animals and plants as members. 

!! Eldeen Characters

When creating an Eldeen character or NPC, consider
the following:

* ''Farm or Forest?'' Did you grow up on one of the farms of the eastern Reaches, or did you spend your childhood in the Towering Wood? Are you comfortable in buildings, or do you prefer the open air? As a child of the forest, you might take the outlander background, or perhaps you became a folk hero by defending farmers from bandits and beasts.
* ''Natural Magic.'' Druidic traditions play an important role in Eldeen society. If you're a [[druid]] or ranger, are you a stoic [[Warden of the Wood|Wardens of the Wood]] or a grim [[Child of Winter|Children of Winter]]? Even if you're not a spellcaster, the Magic Initiate feat can provide you with a few spells to reflect a basic initiation into the druidic mysteries.
* ''A Land with No Lords.'' The Reachers are fiercely independent. They broke with [[Aundair]], and they bow to no monarch. The folk of the Reaches value talent over titles. The Eldeen people respect the guidance of the [[druid]]s, but they all work together to solve their problems; no one gives orders to a Reacher. 

!! Cities and Sites

Most people of the Eldeen Reaches live in villages and
on farms. Some folk in the Towering Wood make their
homes in the vast trees, while others are wanderers. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

The farmers of the eastern Eldeen seceded from [[Aundair]] during the [[Last War]], and tensions between the two
nations remain high. Most Reachers believe it's only a
matter of time until Aundair tries to reclaim the region,
and every village has a militia ready to serve.

The people of the Reaches value hospitality and regard all people as equals, but the fear of Aundairian
aggression can cause Reachers to treat foreigners with
suspicion or hostility. 
The ultimate expression of [[illithid|mind flayer]] domination, an elder brain sprawls within a vat of dimly glowing viscous brine infused with [[psionic|psionics]] energy, touching the thoughts of creatures near and far. It scrawls upon the canvas of their minds, rewriting their thoughts and authoring their dreams.

!! Psychic Infiltrators

When an elder brain infiltrates a mind, it alters the creature's perception and deceives its senses, causing it to see, hear, touch, taste, or feel reality according to the elder brain's intent. From across great distances, it implants subconscious suggestions or subtly influences dreams to compel creatures toward a course of action that benefits its grand plan.

When its insidious suggestions fail to take hold, an elder brain asserts its dominance more directly. It seizes control of a resistant mind and controls the creature's body as it would a puppet. Against the rare, strong-willed stalwart that defies it or attacks it, an elder brain sends a blast of overwhelming psychic force to crush the upstart's mind, rendering the creature a thoughtless, drooling shell.

!! Devourer of Thoughts

An elder brain sustains itself by consuming the brains of other creatures. When the [[mind flayer]] servants that guard and tend to an elder brain don't bring its meals directly to it, the elder brain reaches out with tendrils of thought, mentally compelling creatures to come to it so that it may feed upon them.

When a mind flayer perishes, the elder brain's servants feed the contents of its skull to their master, which absorbs the illithid's brain and all the knowledge and experience contained therein. In this way the elder brain continually increases its knowledge, uniting the thoughts and experiences of the illithid colony into a unified whole. Mind flayers conceive of this "oneness" as a sacred state in the same way that a religious human might view an eternal afterlife—for an elder brain can evoke the persona of any illithid it has ever absorbed.

Non-illithids call this creature an elder brain because it acts as the central communication hub for an entire mind flayer colony just as a brain does for a living body. Linked to the elder brain, the colony acts like a single organism, acting in concert as if each illithid were the digit of a hand.
The Eldritch Groves are a forest in southern [[Aundair]], near the town of [[Arcanix]].
An eldritch knight combines martial mastery with the careful study of [[arcane magic]]. Often found in the ranks of [[Aundair]]'s [[Knights Arcane]], eldritch knights use magical techniques similar to those practiced by [[wizard]]s, focusing their study on [[abjuration]] and [[evocation]] magic. Abjuration [[spell]]s grant an eldritch knight additional protection in battle, and evocation spells deal damage to many foes at once, extending the knight's reach in combat.
In a [[Cannith]] [[enclave]], a team of [[artificer]]s maintain a
[[creation forge]] that produces [[warforged]]. In the [[Shadow Marches]], [[druid]]s guard the seals that hold the [[daelkyr]]
at bay. In the sewers below [[Sharn]], a mad [[necromancer|necromancy]]
puts the final touches on a device that will turn the
city's residents into [[undead]]. Such contraptions are
categorized as eldritch machines—magical devices of
immense power that are too large to be moved easily. Eldritch machines are marvels of magic and engineering
that require special components and conditions to function. For example, a particular eldritch machine might
function only in a [[manifest zone]] where two or more
[[plane]]s are coterminous.

Ultimately, eldritch machines are plot devices that can
represent the culmination of a villain's master plan or a
last defense against evil. 

!! Eldritch Machines

<<list-links-article "[tag{!!title}sort[title]]">>
Eldritch whorlwood is a rare gnarled wood found in the jungles of [[Xen'drik]]. The twists in the wood are caused by the intrinsic magical power trapped in the wood. When used to make wands or staffs, [[spell]]s cast from the [[implement|magical implement]] can release some of this power, causing the wood to gradually untwist. When it is perfectly straight, the magic is expended.
Pure elementals are incarnations of the elements that make up the universe: air, earth, fire, and water. Though little more than animated energy on their own planes of existence, they can be called on by spellcasters and powerful beings to take shape and perform tasks.

On its home [[plane]], a pure elemental is a bodiless life force. Its dim consciousness manifests as a physical shape only when focused by the power of magic. A wild spirit of elemental force has no desire except to course through the element of its native plane. Like beasts of the Material Plane, these elemental spirits have no society or culture, and little sense of being.

Certain spells and magic items can conjure an elemental. Elementals instinctively resent being pulled from their native planes and bound into service. A creature that summons an elemental must assert force of will to control it.

Powerful magic can bind an elemental spirit into a material template that defines a specific use and function. For example, elementals can also be bound into [[elemental vessel]]s to power vehicles such as [[airship]]s and the [[lightning rail]]. [[Golems|golem]] are elemental spirits bound to physical forms, but weaker materials such as flesh and clay can't bind elemental power sufficiently. Durable materials such as stone and iron require stronger magic, which consequently binds an elemental more securely.

!! Types of Pure Elemental

* An ''air elemental'' is a funneling cloud of whirling air with a vague semblance of a face.
* A ''fire elemental'' is a force of capricious devastation. A faint humanoid shape threads through the core of this wild, moving flame. 
* An ''earth elemental'' plods forward like a walking hill, club-like arms of jagged stone swinging at its sides. Its head and body consist of dirt and stone, occasionally set with chunks of metal, gems, and bright minerals.
* A ''water elemental'' is a cresting wave that rolls across the ground, becoming nearly invisible at it courses through a larger body of water.

!! Other Types of Elemental

The "elementals" described above, which are little more than animate masses of their respective elements, are the most recognizable on [[Eberron]]. However, other elementals exist that have biological forms infused with [[immortal]] elemental energy. 

<<list-links-article "[tag{!!title}sort[title]]">>
Choose one creature you can see within 90 feet, and choose one of the following damage types: acid, cold, fire, or lightning. If the target can't resist the spell, then for up to one minute, they are vulnerable to that damage type.

If you are able to cast [[legendary-tier|spell tier]] spells, you can cast this as such to target up to two additional creatures.
The most common form of cannon on [[Khorvaire]] is the elemental cannon produced by the [[gnome]]s
of [[Zilargo]], which uses the essence of a bound earth [[elemental]]
to project stone cannonballs with tremendous force; Zilargo
began supplying [[Breland]] with these weapons toward the
end of the [[Last War]]. While [[Cannith]] and the [[Five Nations]]
experimented with other cannon models, the [[siege staff]]
typically filled this role on the battlefield.
The crews of the [[Chaos Fleet]] are more akin to [[zombie]]s than sapient [[humanoid]]s. But these are no [[undead]]. Like their captain [[Magwroth]], these sailors are
elemental creatures wearing humanoid flesh. Their horrid features include eyes of fire, teeth and fingernails of ice, and wounds that bleed mud.

The elemental spirits that inhabit drudges are not native to any of the [[plane]]s of [[Eberron]]; they appear to be a strange amalgam of malign elemental energy, originating from a [[demiplane]]s somehow connected to the mist-shrouded waters around the island of [[Lastpoint]] in the [[Lhazaar Sea]]. When defeated, a drudge explodes in a burst of raw elemental fire, ice, and lightning.
A House [[Lyrandar]] galleon, also called an elemental
galleon, resembles a Lyrandar [[airship]] except that it has
a water [[elemental]] ring that propels it across oceans and
seas instead of through the air. This vessel has a speed
of 10 miles per hour but otherwise is similar to a Lyrandar airship. 
This gem contains a mote of elemental energy. When you break the gem, an [[elemental]] is summoned as if you had cast the [[conjure elemental]] spell, and the gem's magic is lost. The type of gem determines the elemental summoned by the spell.

|!Gem |!Summoned Elemental |
|Blue sapphire |air |
|Yellow diamond |earth |
|Red corundum |fire |
|Emerald |water |
Long ago, [[gnome]] [[artificer]]s and specialists from House
[[Cannith]] discovered and developed a means of magical
travel. The heart of the process is a set of techniques
for binding [[elemental]]s that uses Khyber [[dragonshard]]s.
This closely guarded procedure requires delicate engineering, arcane skill, and rare materials from around
the world, and different workshops employ varying
esoteric techniques. Building a new vehicle can occupy
a workshop for months while magical energy is painstakingly inlaid into the vessel's hull. Such work is a
complicated task requiring the labor of many; it is not
something that can be undertaken by a lone [[wizard]] for
any amount of compensation.

The construction of elemental vessels requires the use
of two kinds of [[dragonshard]]s. A Khyber dragonshard
of the largest size and finest quality is required to bind
the elemental to the vessel, and a Siberys dragonshard
is needed to craft the vehicle's helm. Production of new
vessels grinds to a halt without a steady supply of both
kinds of dragonshards, and a workshop with an order
to fill will pay a handsome fee to adventurers who can
find them. 

!! Elemental Matrix

Every elemental vessel is imbued with an invisible,
arcane matrix. This magical essence extends from the
containment chamber at the core of the vehicle to the
binding struts, then through the rest of the vehicle's
hull. When a Khyber [[dragonshard]] holding a bound
[[elemental]] is placed in the containment chamber, the matrix comes alive. The unsuppressed elemental emerges
from the shard and flows along the matrix in the way
that blood moves through the arteries and veins of a
living creature. 

The binding struts force the [[elemental]] into a ring
shape and give every elemental vessel its distinctive
appearance. From there, the elemental continues to flow
along the matrix through the hull, appearing as jagged,
snaking lines of living energy that pulse and shift. These
conduits of elemental energy take on an appearance
associated with the type of elemental bound into the vessel. A fire elemental, for example, sends tendrils of flame
along the hull of its ship.

At the command of the vehicle's [[dragonmark]]ed pilot,
the bound elemental can be suppressed, causing its
essence to flow back into the containment chamber and
the matrix to disappear from view. A vehicle whose elemental is suppressed ceases to be propelled. 

!! Controlling the Elemental

Piloting an elemental vessel requires effective communication between the pilot and the bound [[elemental]].
The elemental controls the vehicle's movement, and
everything from basic propulsion to delicate maneuvering is dependent on the ability of the pilot to control
the elemental. If the elemental is uncontrolled and not
suppressed, the vehicle moves according to the elemental's whim until a pilot asserts control again.

A [[dragonmark]]ed heir at the helm of a vessel can command the elemental easily. Without such a pilot, it's very
difficult to control the vessel. A character who is touching either the Khyber [[dragonshard]] where the bound elemental is housed or the magic item at the vessel's helm
can try to communicate with the elemental and persuade it to cooperate, but with no
guarantee of success.

!! Freeing the Elemental

Shattering the Khyber [[dragonshard]] that binds it can
free an [[elemental]], preventing the vehicle from moving.
On most elemental vessels, the shard is sealed in a
protective metal chest, usually
made of iron but sometimes of [[mithral]]
or [[adamantine]]. The chest is often guarded with
a glyph of warding and housed in a room behind locked
and possibly trapped doors.

!! Elemental Vessels

<<list-links-article "[tag{!!title}sort[title]]">>
//Put up your swords and talk of peace, or hide behind your walls of stone. When the host of [[Valenar]] thunders forth, neither will save you.//

<div align="right">—[[Shaeras Vadallia]], High King of Valenar</div>

Tens of thousands of years ago, during the [[Age of Giants]], the elves of the distant
continent of [[Xen'drik]] rose up against the [[giant]]s who
ruled over them. This rebellion is the defining event in
elf history. As the ancient war progressed, the magebreeders of the giants bound magic into the elves who
remained loyal to them, forming the [[drow]]—assassins
bred to prey on their other kin. Ultimately, the elves fled
from Xen'drik and settled the island nation of [[Aerenal]],
where they split into two distinct cultures: the introspective [[Aereni]] and the warlike [[Tairnadal]]. Thus, a war
nearly forty thousand years ago established the pattern
of how elves live today.

Neither the Aereni nor the Tairnadal (which include
the elves of [[Valenar]]) have much interest in human activities, but small numbers of elves have immigrated to [[Khorvaire]] over the centuries and have more or less integrated with the cultures of the [[Five Nations]]. The [[drow]],
though, are virtually unknown on Khorvaire.

As a whole, elves are driven by tradition and respect
for the past. Where humans value innovation, elves
strive to master and perfect the techniques of their
ancestors over the course of studies lasting centuries.
Elf society has changed little over the last five thousand
years, while Khorvaire is constantly evolving. Whatever
the origin of your elf character, consider your relationship with the past: Do you value the traditions of your
ancestors? Or do you fear that your people are too
mired in the past, and need to find a way to adapt and
move forward? 

!! Appearance and Longevity
With their unearthly grace and fine features, elves appear hauntingly beautiful to humans and members of many other races. They are slightly shorter than humans on average, ranging from well under 5 feet tall to just over 6 feet. They are more slender than humans, weighing only 100 to 145 pounds. 

Elves' coloration encompasses the normal human
range and also includes skin in shades of copper,
bronze, and almost bluish-white, hair of green or blue,
and eyes like pools of liquid gold or silver. Elves have no
facial and little body hair. They favor elegant clothing in
bright colors, and they enjoy simple yet lovely jewelry. 

Elves can live well over 700 years, giving them a broad
perspective on events that might trouble the shorter-lived races more deeply.

Another trait that distinguishes elves from many other races is their trance. Elves don't need to sleep. Instead, they meditate deeply, remaining semiconscious, for 4 hours a day. (The Common word for such meditation
is "trance.") While meditating, they can dream after a
fashion; such dreams are actually mental exercises that
have become reflexive through years of practice. After
resting in this way, they gain the same benefit that a
[[human]] does from 8 hours of sleep. This trait grants elves an immunity to any magic that might put a humanoid to sleep, as well as a resistance to [[charm|enchantment]] magic.

!! Subraces

* High Elves: the [[Aereni]]
* Wood Elves: the [[Tairnadal]]
* Dark Elves: the [[Drow|drow]]

!! Elves of the Five Nations

Throughout history, elves have occasionally migrated to
live among the other peoples of [[Khorvaire]]. On rare occasions, entire families have relocated (as House [[Phiarlan]] did, almost three thousand years ago), but more
often wanderers and exiles have come to Khorvaire and
made their way there. Many of the finest wizards and
most renowned artisans in the [[Five Nations]] are [[high elves|Aereni]]. [[Wood elves|Tairnadal]] are found among the rangers and [[druid]]s of the [[Eldeen Reaches]] and stalking the darkest alleys of Sharn.

As an elf born and raised in Khorvaire, your character has grown up among the shorter-lived races. You
might not be as concerned with history and tradition as
the [[Aereni]] and [[Tairnadal]]; you could even live your life
entirely in the moment, with no care for your family or
your legacy. Or you could be fascinated by the history
and traditions of your ancestors and try to relearn the
ways your family has forgotten.

Consider also whether you've outlived [[human]] friends
and how that might affect you. Did you know the parents or grandparents of another member of your party?
Are you trying to repay a debt or fulfill a promise to
that long-dead friend, or are you trying to recapture
some spark of the friendship you felt years ago? Do you
remember a time before the [[Last War]]? Did you fight
in the war? 

!! Elves and Dragonmarks

The [[Mark of Shadow]] first appeared among the elves
of the [[Phiarlan]] line, and the house quickly turned the
mark's powers of shadow and illusion into an economic
dynasty. The suspicion of their kin drove them from
[[Aerenal]] to [[Khorvaire]], and the house splintered during
the [[Last War]], giving rise to House [[Thuranni]]. The two
houses of shadow control the business of espionage
throughout Khorvaire, but they also operate more legitimate ventures related to art and entertainment.

Phiarlan blood still runs among some of the [[Aereni]]
elves, and the [[Mark of Shadow]] appears once or twice in
each elven generation. Elves bearing this mark are always inducted into the elite force of the [[Cairdal Blades]]—an espionage agency in the service of [[Aerenal]]'s [[Sibling Kings]]. 
This clear red liquid has tiny bubbles of light in it, and has a strong unpleasant taste. 

When you drink this potion, it cures any disease or poison afflicting you, and it heals temporary blindness, deafness, and paralysis. Afterwards, you sweat copiously for several minutes, but suffer no other ill effects.

Ellfate's is a small restaurant at the
base of Skysedge Tower. It specializes in omelets, with a
menu including the [[Blood of Vol]] (an omelet made with
[[Karrnath]]i sausage and red pepper sauce), the [[Skyway]]
Special (a very light and fluffy dessert omelet served
atop whipped cream), and the [[Eldeen|Eldeen Reaches]] Banquet (loaded
with vegetables). It is also a favorite meeting place for
zealous mercantilists, a group of political revolutionaries who would like to see the king overthrown and
replaced by a governing council of merchant-princes.
Though their ideals are similar to the secret agenda
of the [[Aurum]], this group is all bluster and no action,
and has no connection to the Aurum.
The Elli Forest is a woodland region in the [[Corvagura]] province of [[Riedra]], near the [[Varuz Bay]].
[[Irian]] is bursting with life. Songbirds, rabbits, and other
creatures roam the [[Garden]]. The streets of the [[Amaranthine City]] are filled with happy people. But the Garden never has
too many rabbits, and there's no risk of the citizens of the
Amaranthine City starving—or needing to go on strike to
prevent it. Sometimes, if you glimpse one out of the corner of
your eye, you might see them differently, as an outline of pale
white light—a glowing shadow.

These are [[manifestation]]s, not living creatures. Called embers,
each one is linked to a spark—a tiny echo of a soul, each one
tied to a living creature. Through this connection, mortals draw
inspiration and hope, and remain linked to the positive energy
that flows to and from all living things. An ember resembles
the mortal whose spark fuels it, but it isn't fully conscious and
doesn't have any complete memories, merely echoes of that
mortal's brightest joys, deepest hopes, and greatest deeds.
There are many more sparks in Irian than there are embers
at any given moment; Irian simply dips into the pool of sparks,
manifesting as many embers as the scene calls for, shaping the
light of each soul into something that looks like them.

Embers don't need to eat, drink, breathe, or sleep. They
follow basic scripts, but can't improvise and don't have much
knowledge beyond what they need for their role. As a rule,
embers are happy, for they don't know any other way to be. An
ember can't be truly killed; its body dissolves, but the spark that
fueled it remains safely within Irian's deep well of light.

While adventuring in [[Irian]], you might see an ember that
resembles you—but it won't recognize you, and might not even
appear the same age. This ember is merely your light-shadow,
manifested by Irian and channeling your life force. It holds the
essence of your best moments and emotions, the light within
you that drives you to goodness—but merely as a spark, not the
fire of a living creature.
What arose as an order of militant knights within the
nation of [[Karrnath]] fell into disgrace and became a
shattered remnant. The Order of the Emerald Claw now
operates as a collection of cells of fanatical warriors,
[[necromancers|necromancy]], and spies. On the surface, its members
seem to be driven by Karrnathi patriotism, and they
purport to be adherents of the [[Blood of Vol]]. The most
cursory investigation reveals that claim to be a facade.

The truth behind the Emerald Claw is that they serve
the [[lich]] [[Lady Illmarrow]], and in her name they carry out
acts of destruction, murder, and necromantic terrorism.
They have been linked to the theft of powerful items
imbued with necromancy magic, and they often employ
vicious [[undead]] minions that make even other Karrns
uncomfortable. Most worshipers of the [[Blood of Vol]] are
quick to point out that they don't accept the order's claim
to membership in their faith, and those true worshipers
vehemently reject the Emerald Claw's violent fanaticism. 

!! The Emerald Claw and the War

During the [[Last War]], [[Karrnath]] was forced to embrace
the practice of [[necromancy]] to bolster the ranks of its
army. At the same time, a number of chivalric orders
were founded by devoted worshipers of the [[Blood of Vol]].
These groups included necromancers and [[bone knight]]s
that were trained to raise and command the [[undead]]
troops used during the war. The Order of the Emerald
Claw was one of the most infamous of these groups, renowned for its fighting skills but often sanctioned for its brutal treatment of enemy soldiers. The Emerald Claw were also accused of slaughtering civilians so they could be raised as skeletons or [[zombie]]s—behavior that was strictly forbidden by the Karrnath commanders.

When King [[Kaius III|Kaius ir'Wynarn III]] came to power near the end of
the war, he turned against the [[Blood of Vol]]. The orders were disbanded, and many members of the Emerald Claw were condemned as war criminals. While the
other orders complied with the king's edict, many knights of the Emerald Claw refused to surrender. The order fragmented as its original members scattered, but
a number of those rebellious knights started their own
cells, rallying all who wanted to see [[Karrnath]] achieve
its rightful glory. The order experienced a surge in membership following the [[Treaty of Thronehold]] because
many Karrns thought that Kaius III had betrayed their
nation by embracing peace. 

Six years ago, shortly after Kaius's accession, a figure
known as [[Lady Illmarrow]] emerged as the leader of the
Order of the Emerald Claw. Few of her followers know
anything about her, other than her great skill as a necromancer; many members of the Order refer to her as Queen of the Dead. Some members of the order believe
she will ultimately raise [[Karrnath]] above all other nations. Others simply trust that she will grant them personal power. They believe that she is poised to become a god of death, and that when she ascends to divinity, they will be granted immortality or at least the eternal life
of undeath. 

!! Emerald Claw Campaign Themes

At low levels, adventurers can clash with Emerald Claw
skeletons and zombies. As the characters grow more
capable, the threats escalate. They might have to protect
a village from a necromancer who is sucking the life out
of the land, or race through a dungeon to acquire a necromantic relic before the Claw can claim it. The Emerald Claw is ideally suited to pulp action; it's a force that
is blatant in its villainy and has hordes of evil minions
to do its bidding. Defeating the schemes of the Emerald
Claw should always feel like the right thing to do.

Although many members of the Emerald Claw believe that they are fighting for [[Karrnath]], they are truly serving the [[lich]] [[Lady Illmarrow]]. The greatest necromancer of the age, she seeks to unlock the secrets of her inactive [[dragonmark]], the [[Mark of Death]]. If she
succeeds, she could come to possess unimaginable power. This makes her a formidable villain to drive the action of an entire campaign. 
Your magic deepens a creature's understanding of its own talent. You touch one willing creature and grant it an advantage whenever performing a non-combat action the creature is already good at. The spell persists for up to an hour.
The Empress of Shadows of the [[Amaranthine City]] of [[Mabar]] is the first and greatest of the [[Dark Power]]s.  Her defining principle is hunger,
the desire to consume all that is light, to expand her empire
across eternity. 

She prefers an elegant [[fiend]]ish form, with
polished horns and chitin plates engraved with arcane sigils,
but she can take the shape of any [[yugoloth]]. She spends much
of her time presiding over the decaying pomp and grandeur of
the Amaranthine City, but also closely monitors the campaigns
in the [[Hinterlands]] and occasionally takes time to torment
her hostages. The sages of [[Syrania]] believe that the Empress
of Shadows chooses which fragments of other planes will be
pulled into [[Mabar]], and planar emissaries sometimes dwell in
the Amaranthine City seeking to negotiate with her.

The [[Irian]] counterpart of the Empress of Shadows is the [[Dawn Empress]].
Enchantment spells affect the minds of others, influencing or controlling their behavior. Such spells can make enemies see the caster as a friend, force creatures to take a course of action, or even control another creature like a puppet.

!!! <<showspells-school {{!!title}}>>
In a small community, a [[dragonmarked house]] might be
represented by a single business. A village might have a
[[Jorasco]] healing house, a tiny [[Sivis]] [[message station|speaking stone]], or a
[[Gold Dragon Inn]] of House [[Ghallanda]], all run by individuals. Large cities and metropolises have dozens of such
house businesses, but they also have ''enclaves''—the citadels
of the dragonmarked houses.

A house enclave is a self-contained community where
a member of a house can spend months without ever
needing to leave. The center of the enclave includes production, training, and administration facilities, living
quarters, and shops catering to the everyday needs of its inhabitants. This region of an enclave is reserved for the
private business of the house, and strangers are allowed
in only under special circumstances. 

The secondary ring of the enclave is where business
occurs, and is the site of [[guild|trade guild]] offices, shops, and other
facilities. Customers, [[dragonmark]]ed heirs, and guild
members with no family connections all cross paths here.
Though the everyday services of house and guild can be
found across [[Khorvaire]], a house’s most expensive services
are exclusive to its enclaves. Courier stations are common
throughout [[Sharn]], for example, but teleportation is
available only at the [[Orien]] enclave in [[Dragon Towers]].
Part shopping center, part production facility, and part
suburb, a house enclave is often the economic center of
the community in which it is found.

!! Enclaves of the Dragonmarked Houses

<ul>
<$list filter="[tag[dragonmarked house]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[enclave]tag<currentTiddler>]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
This [[layer]] of [[Lamannia]] reflects the majesty of the ocean depths. It's home
to a vast array of fish and aquatic beasts, along with [[merfolk]]
tribes and a wide range of water [[elemental]]s, from simple
sentient currents to massive [[leviathan]]s and battling
megafauna. The Endless Ocean is where the [[gnome]] Tasker
encountered an island that turned out to be a totem turtle. True
islands are few and far between, and most are actually portals
to other layers of Lamannia. There are many points in the
Endless Ocean tied to [[manifest zone]]s (most located in ocean
depths) in the Material Plane.
The [[Forest Queen]] rules the Endless Weald within [[Thelanis]], an arboreal realm
inhabited by [[dire beast]]s and wild [[fey]]. [[Faun|faun]]s and [[dryad]]s dance in clearings lit by gleaming [[sprite]]s, and peaceful beasts congregate by glittering springs. A series of paths connect the safe spaces within the woods. But for
those who stray from the path, the Endless Weald lives up to its
name; such fools can be lost indefinitely, until the Queen takes
mercy and leads them out.

The Weald often leaks
into the wood through [[manifest zone]]s found in deep forests;
in such places, [[dryad]]s lurk in the trees and beasts may
possess unusual cunning. Under the right circumstances,
travelers passing through a zone might even slip into the
Weald. Such forests typically have well-worn paths that avoid
these pitfalls, thus strengthening the story of stay on the path.
The [[Greensinger|Greensingers]] [[druid]]s know rituals to connect a forest to
the Endless Weald, establishing a temporary manifest zone in
any deep wood. 
Within [[Adar]] boil [[manifest zone]]s to the realm of pure
chaos—[[Kythri]]—and the whispers of [[Ran Iishiv]] are said
to be audible in the darkest shadows of the mountains.
Some of the mystics who came to Adar found these places
and gained power from them. The strange ways of fate
drew many mad magicians together, and they coalesced
around the desire to see the end of all that was created by
the [[progenitor wyrms|Progenitor Dragons]].

Only dissolution—the utter unmaking of everything—can satisfy an Endseeker. Each one is a lost soul of sorts, often having seen dearly held truths melt away into the
chaos of fate. To these magicians, the universe and all of its
motion are an abomination, and this repugnance must
be unraveled. 

Endseekers are usually quite mad, but it is an
enlightened sort of madness. They know that something
is underneath all of creation, something from which
everything came. It's not a god—it's greater than that,
for it is everything and nothing at the same time. It is
undifferentiated potential. Creation must be returned
to this place. 

Although a few Endseekers are malicious killers who
randomly destroy, those who survive and flourish take calculated actions. A clever Endseeker might help a diabolic cult, then use his power or influence to set forces of good against that cult—internecine conflict culminating
in mutual annihilation of the factions being the goal.
Powerful Endseekers, or groups thereof, have networks
and wide-ranging plans. The head of such an organization is the eye of calm in a maddening vortex. Seemingly unrelated plots all lead to that center. Endseekers don't
work together as a unified whole, though, and might even
be found opposing one another. 

Most Endseekers are spellcasters, and a large number of them are [[warlock]]s who have powers tied to chaos. Even stranger, many Endseeker masters are
contemplative [[cleric]]s, their "religion" centering on the divine notion of unmaking. 

''Getting the PCs Involved:'' Endseekers, rare as
they are, make easy villains. The characters can run
across these mad magicians at any point, finding one
at the center of a web of seemingly unrelated problems. The [[Keepers of the Word]] are on the lookout for
Endseeker plots, and they reward those who end such
machinations.

Endseekers don't just strike within [[Adar]], however.
Some wander into [[Riedra]]—usually perishing sooner
rather than later, and providing fodder for stories of the
demonic magicians of Adar. An Endseeker could be an
ally of characters working against the [[Inspired]] and the
[[Dreaming Dark]]. Such an Endseeker might even expound
the philosophies of unmaking. But how far can the characters trust their "friend"? 

!! Notable Endseekers

<<list-links-article "[tag{!!title}sort[title]]">>
This spellbook, along with anything written on its pages, can't be damaged by fire or immersion in water. In addition, the spellbook doesn't deteriorate with age.
The Endworld Mountains form a natural border between the nation of [[Q'barra]] and the rest of [[Khorvaire]]. There are remnants of an ancient [[dwarven|dwarf]] kingdom in these mountains dating back to early in the [[Age of Monsters]], but its name has been lost to history.
The eneko are the true children of [[Syrkarn]]. They were
born in the wake of the [[Sundering]] in [[Sarlona]], as [[ogre]] or perhaps [[oni]] refugees
mingled their blood with that of the nomadic [[giant]]s from [[Xen'drik]]. The giant explorers were eventually wiped out or fled the continent, and the ogres were assimilated into [[Riedra]]n culture in [[Borunan]], but the true-breeding "mongrel" eneko proved to be remarkably well suited to the harsh environment of [[Syrkarn]].

Eneko are slightly taller than [[ogre]]s. Their skin carries a green tint, and some eneko sport vestigial horns and prominent canine teeth. 
These [[artificer]]-designed heavy leather gloves have iron fingertips and are constantly sparking with magical electricity. You can cast [[shocking grasp]] for free at will. The gauntlets may occasionally run out of charge; you can recharge them by striking a metal object or a [[construct]].
This is a finely crafted child's toy tea set in a wooden case. To activate the tea set's magical properties, you must perform a 10 minute ritual in which you host an imaginary tea party. This requires having a solid, relatively flat surface in which to set up all parts of the tea set (a tablecloth, five plates, five cups, and a teapot). At the end of the ritual, you conjure four invisible servants, as if by the [[unseen servant]] spell. They disappear after 1 hour or until you choose to dismiss any number of them.
As the name implies, most [[warforged]] were
built to fight in the [[Last War]]. The
majority of warforged are [[juggernaut]]s or
[[skirmisher]]s—soldiers and scouts who fought
under the banner of one of the [[Five Nations]].
Warforged envoys, however, were designed
to perform other functions. As an envoy you are lightweight, dextrous, and proficient with some type of toolset that is integrated into your body. When you make
an envoy character, consider the following
questions: what is your purpose? How does your skill and tool reflect that purpose?
What form does your integrated tool take?
If you have embedded [[thieves' tools]], for instance, are your fingers actually lockpicks,
or can you produce keys from various parts
of your body? The following characters are
examples of warforged with integrated tools.

''Lute'' is a [[bard]] with the entertainer
background; his namesake instrument folds
out of his left arm.

''Compass Rose'' is a wizard with the
outlander background. A keen explorer,
she uses her built-in cartographer's tools to
records the paths she travels.

''Masque'' is an infiltrator. A rogue with the 
charlatan background and an integrated
disguise kit, she was built to blend in and
assassinate. [[Cannith]] built six warforged of
her design, and Masque has vowed to hunt
down and destroy the other five.

In developing your integrated tool,
remember that you must have your hands
free to use it. Masque, the infiltrator mentioned above, doesn't shapeshift like a
[[changeling]]; she has to manually adjust her
appearance. 
The equator is the line of latitude that is equidistant from the north pole and south pole.
The present is shaped by the past. The shadow of the [[Last War]]
hangs over [[Khorvaire]], setting the stage for conflicts ahead. But
Khorvaire also bears the marks of struggles far more ancient.
The [[goblin]]s in [[Sharn]]'s slums are descended from the founders
of a mighty empire, and they rightfully feel that [[human]]ity stole
their homeland. The [[purging|Silver Crusade]] of [[lycanthrope]]s early in the ninth
century strains relations between humanity and [[shifter]]s. The
Church of the [[Silver Flame]] was founded at the end of the third
century, but it's simply the latest manifestation of a conflict that
began at the dawn of time—a battle still fought in the shadows
by the [[fiend]]ish [[Lords of Dust]] and the [[dragon]]s of the [[Chamber]].

The history of [[Eberron]] can be split into five eras:

* The [[Dawn of Time|Progenitor Dragons]] (pre-history)
* The [[Age of Demons]] (over 100,000 years ago)
* The [[Age of Giants]] (80,000-40,000 years ago)
* The [[Age of Monsters]] (40,000-5,000 years ago)
* The [[Modern Age]], Age of Humanity, or Dragonmarked Age (5,000 years ago to today)

See [[Khorvaire calendar]] for a summary on timekeeping conventions.
The most beautiful and striking of all lesser and greater [[devil]]s, the erinyes are fierce and disciplined warriors. Sweeping down from the skies, they bring swift death to creatures that have wronged their masters or defied the edicts of the [[Iron Ward]]. The erinyes appear as male or female [[humanoid]]s with statuesque builds and large feathery wings. Most wear stylized armor and horned helms, and carry exquisite swords and bows. A few also use [[ropes of entanglement|rope of entanglement]] to ensnare powerful foes.
This artificial eye replaces a real one that was lost or removed. While the ersatz eye is embedded in your eye socket, it can't be removed by anyone other than you, and you can see through the tiny orb as though it were a normal eye.
The Eska Mountains dominate the northern reaches of the [[Tashana Tundra]] in [[Sarlona]]. They are home to the [[Dorann Holds]] [[dwarves|dwarf]], the [[Chuniigi]] [[shifter]]s, various [[human]] nomadic tribes, and the mysterious [[Icebinders]].
Members of the Esoteric Order of [[Aureon]]
take a vow to use their talents to preserve and advance
civilization and to operate within the confines of the law.
The Esoteric Order helped [[Galifar I|Galifar ir'Wynarn]] maintain the rule of
law, and many of its members served [[Breland]] during the
[[Last War]]. Although its members aren't prohibited from
studying any form of magic, the specialties of the order
are abjuration, divination, and evocation magic. [[Wizards|wizard]]
and [[artificer]]s are almost always welcome in the guild. 
[[Sorcerers|sorcerer]] must prove their grasp of arcane theory to
earn a place, and [[warlock]]s are rarely accepted as members. 

The hall of the Esoteric Order of Aureon is in the
district of [[Clifftop]] in [[Upper Dura]]. The Order's tower
is built of white marble, and glamers have been
woven into the stone that cause the tower to shimmer
and glow so that it seems as if it has been crafted of
solid light. The [[Mystic Market]] surrounds the tower.
A creature that inhales this poison and can't resist its effects falls unconscious for up to 8 hours. The creature wakes up if it takes damage or if another creature shakes it awake.
//As the creature rears up from a reptilian coil of tail and limbs, its passing resemblance to some sort of dragon quickly fades. Bony plates ripple across its emaciated wingless frame, grinding as taloned claws rend the ground. A twisted spike at the end of its tail glows a dull red, and the beast's razortoothed maw splits wide as it screams.//

The [[Inspired]]'s long dominance of [[Sarlona]] has seen
most of the [[aberration]]s that once roamed the continent
systematically hunted to extinction. The essence reaver
remains a notable—and deadly— exception.

The essence reaver is a fast-moving, voracious, and
insane killing machine drawn inexorably to sources of
both [[psionic|psionics]] and magical power—spellcasters and manifesters in particular. The creatures are highly intelligent,
but their inherent mania makes them unpredictable at
best. Any party given the opportunity to flee from an
essence reaver is generally wise to do so, but these creatures are prone to stalk magical or psionic targets for days
before attacking without warning.

Physically, essence reavers resemble wingless black
[[dragon]]s, but dead white eyes and a whiplike tail give away
their aberrant nature. A glowing membrane at the end of
its spike-tipped tail allows a reaver to absorb magical or
psionic energy from creatures or items. A reaver's long
maw is filled with razor-sharp teeth, and ropes of viscous
spittle hang from its jaws. 

Essence reavers are found throughout the deserts and
hills of [[Sarlona]], from the [[Tashana Tundra]] to the steppes of [[Syrkarn]].
Though universally feared by the people of the Tundra,
[[Syrkarn]], and the [[Riedra]]n frontier for their willingness to prey on virtually anything that moves, essence reavers are best known for their [[psionic|psionics]] and magical hunger—and their particular appetite for manifesters, spellcasters, and [[magic item]]s.

In combat, essence reavers trust their [[psionics]] detection and magic detection more than their mundane senses. Normally solitary predators, essence
reavers often kill others of their kind. However, bands of
up to six essence reavers have been known to congregate
in packs around high levels of magical or psionic power.
Where these packs form, they hunt with a chilling degree
of cunning.

The essence reaver is one of the few apex predators
that the [[Inspired]] have made no effort to exterminate
in [[Sarlona]], since the creatures' occasional forays into
[[Riedra]] are outweighed by the their usefulness as they
hunt down rogue manifesters and spellcasters in the
[[Tundra|Tashana Tundra]] and [[Syrkarn]]. Rumors emerging from [[Adar]]
suggest that the Inspired have long sought to introduce
essence reavers into the [[mountains|Ahnadiv Mountains]] of that nation, but the creatures' tendency to kill any creature that comes within
sight makes them difficult to relocate. 
Once the seat of House [[Cannith]], this was a place of
wonders—a city where "magic comes to life." Marvels
of the city included the Clockwork Menagerie, showcasing the [[golem]]s and [[homunculi|homunculus]] made by generations of
[[artificer]]s; production facilities that housed three [[creation forge]]s, and the miraculous Steel Gardens, an early breakthrough that paved the way for
the living [[warforged]]. If you're an [[artificer]] or have ties to
House [[Cannith]], you might have roots in Eston. 

!! Before and After the [[Mourning]]

House Cannith was born in Eston, and the house's labors transformed the city into a place of wonders. Clockwork birds perched and sang in silvery trees covered in
steel bark. [[Skycoaches|skycoach]] carried smiths and [[magewright]]s
from forge to forge, and an iridescent dome protected
the city from storms and harsh winds. On the proving
grounds of the [[Cannith]] [[creation forge]]s, cadres of newborn [[warforged]] learned the combat skills that would
prepare them for active duty.

Eston began as a successful mining settlement,
extracting iron and rare ores from the nearby hills.
Drawing on these resources, the Cannith [[artificer]]s in
Eston spent decades researching all sorts of artificial
creatures, which eventually gave rise to the warforged.

Because of these wonders, Eston is an irresistible attraction for treasure hunters hoping to access the vaults
of House Cannith. Reports suggest, however, that it has
become a strange and deadly place. It's said that the city
is overrun by [[living spell]]s. In addition to the remnants of
damaging spells, there are stranger phenomena: living continual flames that
crawl along the streets, cling to lampposts, and flee from
strangers, and living scrying spells that shift and shimmer, displaying distant scenes on their amorphous skin.

Eston was renowned for its Clockwork Menagerie and
its Steel Gardens, a showcase that chronicles House
Cannith's centuries of work developing [[construct]]s and
homunculi. These creatures have been twisted by the
[[Mourning]] and have become deadly monsters. Stories
tell of an enormous gorgon golem, of razor-winged
swarms of silver songbirds, and many other equally
strange things. 
Queen Etrigani met her husband [[Kaius III|Kaius ir'Wynarn III]] of [[Karrnath]] when she appeared before his court on behalf of the [[Sibling Kings]] of [[Aerenal]] during a diplomatic tour of the [[Five Nations]]. An intense courtship followed, and the two were married in 993 YK, on the second anniversary of Kaius's ascension to the throne. The queen has taken an active interest in the affairs of her adopted nation, and alongside Lady [[Moranna]], performs most of the daily tasks of governing.
An ettin is a two-headed giant with [[orc]]-like characteristics. Its thick skin is usually encrusted with a thick layer of dirt and grime beneath the stinking hides it wears. Its long stringy hair hangs in an unkempt mess about its faces, and its breath reeks from mouths filled with crooked teeth and tusks.

The twin heads of an ettin are two individuals trapped in the same body. Each head has its own mind, personality, and name, and possesses unique preferences and quirks. Bound from birth, both minds only rarely experience privacy or solitude. This familiarity breeds contempt, and often an ettin bullies and argues with itself.

When other creatures refer to an ettin, they combine its double names to form a single compound name that applies to the creature as a whole. If an ettin has one head named Harg and another named Shagol, other creatures call the ettin Hargshagol.

As much as an ettin argues with itself, it is even less tolerant of other ettins, since a conversation between two ettins almost always amounts to a shouting match between a crowd of four belligerent heads. Most ettins are solitary creatures as a result, tolerating one another only to reproduce.

On [[Eberron]], ettins are native to [[Khorvaire]], and are distantly related to [[orc]]s. The largest populations of ettins dwell in the mountains of [[Droaam]].
This piece of clothing cannot be dirtied or stained, and always carries the faint scent of soap. This enchantment is often placed on [[clothes of mending]].
''District Type:'' Magic district<br/>
''Buildings:'' Magic item dealers (8), spellcasters for
hire (20), temple ([[Aureon]]), shrine (The [[Shadow]]),
upscale food (20), exotic trades (45), upscale trades
(65), upscale services (40), upscale residences (80)<br/>
''First Impression:'' [[Everbright lantern|everbright lantern]]s keep the towers
here well illuminated, and other magical effects are
visible everywhere—from [[soarsled]]s carrying people
through the air to [[construct]]s following their masters
as they visit different shops<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Warden Towers]] (northwest); [[Little Plains]] (northeast); [[Platinate]] (southeast); [[Cassan Bridge]] (southwest); [[Dragon Towers]] (bridge, north); [[Kenton]] (bridge, south); [[Center Bridge]] (below); [[University District]] (above)

Everbright might not be home to the majority of
[[Sharn]]'s [[magic item]] dealers and spellcasters for hire,
but it certainly can boast the largest concentration of
them in any one district. While magic item dealers
in the [[Central Plateau]] cater to wealthy collectors,
those in Everbright tend to keep a more practical
focus, selling items to the people who are most likely
to actually use them—adventurers. For this reason, dealers in Everbright are far more willing to buy
(and likely to sell) items that are not fully charged
or are otherwise partially used up. Similarly, Everbright is the best place to find spellcasters for hire, whose talents are rare and in significant demand in Sharn.

While the spellcasters and dealers of Everbright
are accustomed to trading with adventurers, they are
also (for the most part) law-abiding citizens. Characters who need spells cast with no questions asked
are better advised to seek out spellcasters affiliated
with Sharn's criminal gangs rather than walking
into a spellcaster's office in Everbright.

!! Noteworthy Locations

* The [[Shrine of the Shadow]]. Hidden down a dark alley, the shrine of The [[Shadow]] represents the dark side of Everbright.
This bullseye lantern contains an Eberron [[dragonshard]]
that sheds light comparable to that produced by a [[continual flame]] spell. The effect looks like a regular flame, but it creates no heat and doesn't use oxygen. An everbright lantern sheds light in a
120-foot cone; the closest 60 feet is bright light, and the
farthest 60 feet is dim light. 
At the world's poles—Everice to the south and the [[Frostfell]] to the north—you might...

* Discover an ancient civilization hidden beneath the ice.
* Search for the survivors of a lost expedition.
*  Find the source of a mysterious mystical signal.

It's common knowledge that Everice is the domain of
the [[Queen of Winter]], an [[archfey]] who commands a host
of winter wolves and knights carved from living ice. The
queen lives in a glacial palace, and those who overcome
her guards and the deadly weather to earn her favor can
gain powerful boons. 

It's also common knowledge that Everice is the home
of [[frost giant]]s who escaped the destruction of [[Xen'drik]].
Now they hone their arctic magic and plot vengeance.
However, a clan of [[white dragon]]s battle the [[giant]]s to
keep them from growing too powerful. Woe betide the
people of [[Khorvaire]] if dragon and giant ever set aside
their ancient vendetta and join forces! 

Mystery shrouds the poles of [[Eberron]]. A few expeditions have ventured to the [[Frostfell]], but no one from
[[Khorvaire]] has set foot in Everice in living memory and
returned to speak of it. 

!! The Poles' Influence in Khorvaire

In [[Khorvaire]], you might...

* Clash with a cabal of winter [[warlock]]s serving a sinister power stirring in Everice.
* Encounter a group of frost [[giant]]s or [[Frostfell]] dwarves establishing a foothold in [[Khorvaire]].
* Discover a journal from a Frostfell expedition that reveals a horrifying threat.

The people of Khorvaire have no commerce with the
arctic regions and no certainty about what lives there. If
a threat comes from Everice, it might take time for people to identify its origin.

With this in mind, relics from Everice or the Frostfell
could take any form. Are these treasures created by [[giant]]s, [[fey]], or [[dwarves|dwarf]]? Are they carved from eternal ice,
or are they forged from dwarven steel? 

!!! Trinkets from the Frostfell and Everice

| !<<dr d8>> |!Trinket |
| 1 |A small prism carved from ice that doesn't melt |
| 2 |A rusted iron coin, depicting a dwarf lord and the worlds "Five Rex Undra" |
| 3 |A pair of eight-sided dice carved from ice that doesn't melt |
| 4 |A swatch of silvery fur that's cold to the touch, possibly from a winter wolf |
| 5 |A snowball; it doesn't melt and can't be compressed into ice |
| 6 |A tiny [[white dragon]] sculpted from ice that doesn't melt |
| 7 |A key carved from ice that doesn't melt |
| 8 |A single scale from a [[white dragon]] |
Smoke leaks from the lead-stoppered mouth of this brass bottle, which weighs 1 pound. When you remove the stopper, a cloud of thick smoke pours out in a 60-foot radius from the bottle. The cloud's area is heavily obscured. Each minute the bottle remains open and within the cloud, the radius increases by 10 feet until it reaches its maximum radius of 120 feet.

The cloud persists as long as the bottle is open. Closing the bottle requires you to speak its command word. Once the bottle is closed, the cloud disperses after 10 minutes; a strong wind can disperse the cloud in just a few seconds.
A member of the [[Sharn]] [[Sixty]],
Evix ir'Marasha ([[human]] councilor for [[Skyway]]) owns the [[Celestial Vista]] in Skyway, along
with a host of other valuable properties. She is one
of the most eloquent members of the [[Council|Sharn Council]],
and she takes a great interest in Sharn's role in the
greater politics of [[Breland]]. She is part of the cabal
who believe that the monarchy should be abolished
when King [[Boranel|Boranel ir'Wynarn]] dies, and she is a close friend of
[[Hass ir'Tain]]. Evix also believes that Sharn should
be recognized as an independent province, a view
shared by [[Sava Kharisa]]. However, first and foremost
she represents the people of [[Skyway]] and the interests
of these wealthiest citizens of [[Sharn]]. Because of this,
she usually sides with [[Javan Tomollan]], [[Maza Thadian]], and [[Bestan ir'Tonn]] in Council debates. 
Evocation spells manipulate magical energy to produce a desired effect. Some call up blasts of fire or lightning. Others channel positive energy to heal wounds.

!!! <<showspells-school {{!!title}}>>
For up to one minute, your eyes become an inky void imbued with dread power. As long as the spell is active, whenever you spend at least five seconds staring at a creature you can see within 60 feet of you, they must magically resist your gaze or else succumb to one of the following effects of your choice. If you try to target a creature who successfully resisted your magic already, you have disadvantage on subsequent attempts.

''//Asleep.//'' The target falls unconscious, though they can be forcefully shaken awake.<br/>
//''Panicked.''// The target is frightened of you and flees.<br/>
''//Sickened.//'' The target is overwhelmed with nausea and dizziness.
The {{!!title}} is a collection of odd individuals in [[Sharn]] who paint
symbolic eyes on their clothing and
armor and claim to see things others
cannot (in fact, they are a cult dedicated
to the [[daelkyr]] [[Belashyrra]] and serve a
hidden [[beholder]]).
These crystal lenses fit over the eyes. While wearing them, you can cast the [[charm]] spell  up to three times per day, provided that you and the target can see each other. 
These crystal lenses fit over the eyes. While wearing them, a creature with the [[Mark of Finding]] has advantage on perception attempts that rely on sight. In conditions of clear visibility, they can make out details of even extremely distant creatures and objects as small as 2 feet across.
! The Anvil

''Color:'' Silver<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Making|Mark of Making]]<br/>
''Associated Plane:'' [[Fernia]]

When Eyre is full, a keen-eyed observer can pick out on its surface a shadowy shape that vaguely resembles an anvil. According to [[druid]]ic belief, those born under Eyre inherit a solid, practical nature and a gift for nature crafts. Some smiths will wait until Eyre is full to work on especially difficult projects, and House [[Cannith]] [[enclave]]s often hold celebrations when the Anvil is full in the sky.
This [[trade guild]] of House [[Cannith]] runs shops that
produce all manner of mundane equipment, much of
which it creates with the aid of magic. The stamp of
the [[gorgon]]—the symbol of House Cannith—is a sign of
good quality and reasonable price, and can be found
on items as varied as horseshoes, longsword hilts, and
watertight barrels.

The guild maintains some retail establishments,
but it is largely content to focus on production and
leave the selling to others. [[Cannith]] goods can be
found everywhere, both in the emporiums of [[Khorvaire]]’s largest cities and in the general stores on the edges of civilization.
Statues, shrines, and other sacred sites speckle
the countryside of [[Thrane]], holy ground for the
people to send their prayers to the [[Silver Flame]].
Though each is impressive in its own way, none
compares to the Face of Tira. Sculpted from a rocky
crag atop a massive stone outcropping west of
[[Flamekeep]], it bears the likeness of the famed [[Voice of the Flame|Tira Miron]] in 80-foot-tall splendor. Her eyes peer
eastward, her gaze resting on the site where the
Silver Flame was born.
The Faded Forest is a forest in central [[Breland]].
The capital of [[Aundair]] is one of the most beautiful
cities in [[Eberron]]. Stunning displays of magical light
and other arcane wonders enhance the exquisite architecture. This is the seat of the [[University of Wynarn]], a
prestigious institution that draws students from across Khorvaire. As a noble, entertainer, or sage, you might
have your roots in the City of Lights. 

!! Notable Features

Founded soon after [[human]]ity spread across [[Khorvaire]], Fairhaven is a city with a rich history. The capital features straight roads and tidy buildings,
with tree-lined neighborhoods, manicured parks, and
statues depicting great leaders and heroes. Grand
universities fill city blocks, teeming with students and
scholars. Great temples dedicated to the [[Sovereign Host]], mage towers, museums, and more give the city a refined atmosphere. The Royal Court of [[Fairhold]] dominates the metropolis’s impressive
skyline. 

Fairhaven is also Aundair’s commercial crossroad. All the [[dragonmarked house]]s have [[enclave]]s here (the [[Aundair Enclave]] is the headquarters of [[Cannith]] West), and caravans from all across the [[Five Nations]] arrive regularly. Overhead, elemental [[airship]]s drift
through the clouds, descending to dock at the sky
tower, while [[elemental galleon]]s prowl the [[Aundair River]], laden with goods being conveyed to and from distant ports. Merchants and traders wheel and deal
with skeptical peasants from the surrounding farmlands in Fairhaven’s numerous marketplaces. The Distant Exchange, a bustling market specializing in
foreign goods, provides silks, exotic consumables, and brilliant artwork from faraway lands, catering to the city’s elite.

Above all, Fairhaven is a city of learning. Schools
ranging from single classrooms to the sprawling [[University of Wynarn]] are home to students from all cultures and races. This crucible produces regular advances in philosophy, magic, sciences, and commerce. Fairhaven’s reputation for scholarship makes education its greatest industry.
The royal seat of power of [[Aundair]], Fairhold occupies
a significant amount of real estate in the city of [[Fairhaven]]. Rising above the tallest buildings in the city, Fairhold
is a wonder of architectural achievement, a graceful fusion of style and defense. Behind steep walls
pierced by looming gates rest half a dozen towers and
twice as many minarets.

The King’s Hall, where Queen [[Aurala|Aurala ir'Wynarn]] holds audience with
the public, is an impressive chamber capable of permitting fifteen hundred people to stand before Aundair’s crown. 

The Royal Collection of Aundair, housed in the south wing of the estate, provides one of the best libraries
available in northern [[Khorvaire]]. The collection includes
records dating back to the founding of [[Galifar]], as well
as a few older documents that come from the days of the
original [[Five Nations]]. The public can view some parts of
the collection, but large sections are only accessible to those
who receive special dispensation. 

The Courts of Justice,
located in the east wing of the estate, handle the various
trials and mediations that require interpretations and
rulings on the law. Fairhold also maintains a museum
dedicated to the crown, displaying relics that examine
the nation’s history—both as an independent country and
when it was part of the [[Galifar]] kingdom.

Fairhold also houses a garrison of the [[Knights Arcane]], as well as the [[Tower of the Eyes]], the headquarters of the [[Royal Eyes]] of Aundair.
''District Type:'' Slum<br/>
''Buildings:'' Temple (The [[Silver Flame]]), poor lodging (2), poor food (12), poor trades (40), poor
services (20), poor residences (285)<br/>
''First Impression:'' At first glance, this district
looks like a ruin. Huge chunks of stone are scattered around the outer streets. Statues of the gods
look down upon you, but many have shattered features or missing limbs. A few buildings and bridges
have collapsed, in whole or in part, and most of the
surviving buildings show some amount of scarring
and damage.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' the [[Stores]] (northwest); [[Foundation]] (southeast); [[Sharn's Welcome]] (below and west); [[Forgelight Towers]] (bridge, northeast); [[Downstairs]] (bridge, east); [[Mud Caves]] (below and southwest); [[Rattlestone]] (above)

The Fallen district in [[Lower Dura]] was once known as
Godsgate. When the first towers were raised, Godsgate
was the temple district. It had shrines and statues dedicated to the [[Sovereigns|Sovereign Host]], a proud church of the [[Silver Flame]], even a monument to the [[Undying Court]]. But
as [[Sharn]] grew and prospered, religious services were
moved to grander temples in the upper wards. Godsgate became a tenement district, and the shrines and
monuments were forgotten and left to decay. The final
blow to this once-proud district came early in the [[Last War]]. A team of [[Aundair]]ian saboteurs brought down one
of Sharn's floating towers, and the falling spire struck
Godsgate. Buildings collapsed, and hundreds died. Untended corpses led to infection and disease. The [[City Council|Sharn Council]] had no interest in sinking gold into [[Lower Dura]]
to restore the area, and the district was abandoned.

Today, the district known as Fallen is strewn with the
rubble of the fallen tower, mingled with shattered buildings and broken statues. Those who venture into Fallen
must deal with the [[Ravers]], feral savages that lurk in the
shadows. There's no question that the Ravers exist, but
their true nature remains a subject of debate. A common
hypothesis is that they're the descendants of the original inhabitants of the district, who were possessed and
driven mad by the ghosts of those who died when the
tower fell. Others claim that House [[Vadalis]] has been trying to magebreed super-soldiers, and the Ravers are the
result of failed experiments. 

Only the most desperate people live here, and the
forces of the law won't come near it. As a result, the
district has a lot of space available for any cult or secret
society that needs a lair. The followers of a [[radiant idol]],
the [[Cults of the Dragon Below]], or any other cabal could
lay claim to a shattered church in Fallen. 

!! Noteworthy Locations

* [[Blackstone Church]]. [[Sharn]]'s first temple to the [[Silver Flame]], a single priest still holds vigil in this otherwise abandoned church. 
The Finches reside on the outskirts of [[Zarash'ak]],
where civilization pretends to dwell in the heart of
the [[Shadow Marches]]. Their estate is sprawling and
grand, but its fences are rusted, its paths overgrown,
and its walls peeling.

The Finch family has long laid claim to titles of
aristocracy within the scattered, clannish society
of the [[Shadow Marches]]. How much of that claim is
genuine, and how much a pretense to mask the poverty that has slowly overtaken them, even the Finches themselves no longer know. But they have their pride.
They have their ties to the community of [[Zarash'ak]],
where the people are happy to take their coin even
as they whisper behind upraised hands. And the
Finches have their gods: dark, alien powers who they
believe will restore the family’s wealth and power
and set the Finches to rule atop the festering graveyard of twisted flesh once called Eberron.

Oh, yes, and one other thing: Every Finch for
generations uncounted has a burning, inherited
madness.

!! Something Not Quite Right About That Family

The Finches are the perfect candidates for every
creepy, insular, darkness-worshiping, backwoods
family story you’ve ever imagined. They can serve as
a typical evil cult, as a slow cancer eating away at a
(mostly) decent society, as political and mercantile
rivals of the PCs, or as the heart of a Lovecraftian
nightmare. The Finches kill, to protect their secrets
or as sacrifices to their dark gods. They corrupt,
spreading their influence over local governments.
They raid and steal, acquiring wealth and magic
items. They delve deep into secrets mortals were not
meant to know. But because none of the Finches are
overwhelmingly powerful individually, the PCs can
face them at early levels, introducing the characters
to the larger threat of the [[Cults of the Dragon Below]].

!! Rumors and Whispers

The Finches are one of the
region’s oldest families. Family members
mostly keep to themselves, except when they send
servants or younger members into town to buy
goods and supplies. They’re a stiff, proper, unsmiling bunch, but they’ve been decent enough to the community.

The Finch family is ruled with iron fists by Thelonius and Lucretia. They have
one son, Julius, who’s not known for his intellectual
capacity. Their favored heir is Lucretia’s niece, Eliza
Winthrope, who came to live with them when she
was just a child.

Rumor has it that the Finch
estate is haunted, but that the Finches won’t admit
to it in order to avoid shaming the family. This, some
locals say, is the reason for their stern, unbending
demeanor.

!! Meet The Finches

Thelonius and Lucretia look to be in their early fifties. He dresses in somber blacks and grays like an
undertaker, and wears a well-kept but thick beard to
hide the deformed shape of his jaw. She dresses in
fancy gowns with extravagant trains, long enough to
hide the fact that her left leg ends not in a foot, but in
a grotesque, fleshy flipper. Both have dark hair and
soulless eyes.

Julius resembles a younger version of his father, but with an exaggerated musculature. He is incapable of smiling and is well known for his temper. He’s not particularly intelligent, and he looks unintelligent—more primitive than his parents—and he knows it.

Eliza lacks the physical quirks of her relatives; she’s
a trim, attractive young woman. Her eyes, however,
burn with a madness that the rest of the family has
nurtured in her since her childhood.
The Far Strait lies between [[Cape Far]] of mainland [[Lhazaar Principalities]] and the islands of [[Greentarn]] and [[Ninebay|Ninebay Island]].
The frozen island of Farlnen is part of the [[Lhazaar Principalities]]. It is defined by its patchwork of [[Mabar]]an [[manifest zone]]s, as well as [[Port Cairn]], the seat of power of the [[Bloodsails]].

In the aftermath of the destruction of the [[line|Aereni noble line]] of [[Vol]], many [[Aereni]] were exiled from their homeland and sailed north, finding their way to Farlnen and making a new home in the long shadow of the Fingerbone Mountains. Today, many [[elves|elf]] choose to remain in isolated communities deep in the Fingerbones, but others have embraced [[Lhazaar|Lhazaar Principalities]] culture and the life of the sea. The largest of these is the [[Bloodsail|Bloodsails]] principality, centered in [[Port Cairn]].

High in the mountains, protected by the hostile environment as well as powerful [[abjuration]]s, is the fortress of [[Lady Illmarrow]].
Farwatch is an island in the [[Lhazaar Principalities]], located in the [[Eel Bay]]. 
This tag indicates a [[magic item]] or other object whose primary function is to make the wearer look stylish or impressive.

<<list-links-article "[tag{!!title}sort[title]]">>
(Leaellynasaura)

Fastieth are human-sized, two-legged saurians with
large eyes, brightly colored and patterned scales, and
strong legs. They are the most common mounts of the
[[halfling]]s of the [[Talenta Plains]], bred for speed. Although
too small to bear larger riders, a fastieth can carry a halfling with light gear easily and at a good pace. Fastieths are typically stubborn creatures, so specimens with an
even temperament are prized among the Talenta tribes.

Being herbivores, fastieths prefer to flee rather than
fight. However, even though not trained for battle, they
can deliver a vicious bite if pressed. 
''Date: '' [[25 Barrakas|Khorvaire calendar]]

This celebration commemorates a priest of the [[Silver Flame]] who was martyred while exposing [[lycanthrope]]s in [[Sharn]]. The day's activities often cause tension with
the [[shifter]] community. 

See also [[Shrine of Fathen the Martyr]].
You project a phantasmal image of a creature's worst fears. Each creature within 30 feet of you sees terrifying illusory creatures in their minds, visible only to them; if they are not able to resist the illusion, they are frightened for up to one minute, dropping whatever they are holding and fleeing.

If you are able to cast legendary-tier spells, you can cast this as such to extend the range to 120 feet, and afflicted targets suffer psychic damage.
When this spell is cast on a falling creature, the creature's rate of descent slows to 10 feet per second for 1 minute (or until the spell ends by other means). If the creature lands before the spell ends, it takes no falling damage and can land on its feet, and the spell ends for that creature.
This small metal disk is inscribed with the image of a feather. When you fall at least 20 feet while the token is on your person, you descend 10 feet per second and take no damage from falling. The token's magic is expended after you land, whereupon the disk becomes nonmagical.
This thin, light blue liquid has a sparrow's feather suspended in the center. A creature that drinks this potion weighs one tenth of their normal weight, can jump triple the normal distance, and is under the effects of the [[feather fall]] spell for up to 1 hour.
A massive shard of basalt rises out of a vast ocean of magma. A castle sprawls atop the peak, a glittered fortress sculpted from brass. Firefalls of lava tumble down the edge of the spire. A flight of [[red dragon]]s takes to the air, circling the castle and creating a dazzling spectacle of synchronized flames. Welcome to High Hearth: the party's about to begin.

It's simple to say that Fernia embodies the concept of fire. The plane is filled with magma and flame, from massive volcanoes to cities eternally on the verge of being consumed by fire. But Fernia isn't about mundane fire; [[Lamannia]] is the source of simple, natural flame, and holds volcanoes and fire [[elemental]]s. Rather, Fernia is about all
the things we see //in// the flame, all the ideas it represents. It
has layers reflecting wild destruction, where verdant forests
eternally burn. It incorporates industry, with legions of [[azer]]s
forever toiling over fire and forge. And it reflects wild passion,
burning emotions that can't be held in, and glorious spectacle;
these are the realm of the [[efreet|efreeti]], the lords of the [[Sea of Fire]],
forever striving to outshine their rivals.

Fire draws the eye and the attention, but where there's
magma, there's also earth. The [[azer]]s stand between earth and
flame, harvesting the ore they feed to their hungry forges. And
in the deep caverns, the [[dao]] polish jewels and admire their
treasures. Even in these deep layers, the air sears the lungs of
creatures that lack the proper protection, but for adventurers
willing to brave the flames, wonders and wealth are waiting
in the halls of fire and stone. 

!! Universal Properties

The sweltering heat of Fernia can be deadly to unprotected
creatures, and it burns through mortal metabolisms. The
following properties apply to the entire plane.

* //''Deadly Heat.''// All regions of Fernia are subject to extreme heat. In addition, all creatures gain resistance to cold damage, and a creature that is usually resistant to cold damage becomes immune to it.
* //''Empowered Fire.''// Spells and other magical effects involving fire are enhanced.
* //''Fires of Industry.''// A creature has advantage when using tools (such as baking with cook's utensils, or forging an item with smith's tools) when it incorporates Fernian flame into its action in place of mundane flame.
* //''Burning Bright.''// All creatures' metabolisms are doubled. For example, exhaustion sets in faster, but creatures recover from it faster. In Fernia, whether you live or die, it's going to happen quickly!
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.

!! Denizens

Fernia is home to [[celestial]]s and [[fiend]]s, spirits that embody
key concepts of fire and flame. But its primary denizens are
[[elemental]]s of earth and fire. There are no native mortals or
manifestations in Fernia: the elemental population is set in
stone, and when one elemental dies, a new one takes its place.
This can take many forms; new [[mephit]]s spring out of open
flame, while the [[dao]] craft new [[azer]]s out of bronze. But overall,
the population is stable; when an [[efreeti]] pits two legions of
[[salamander]]s against one another in a grand display, they know
the salamanders will eventually be reborn.

!!! Efreet

The [[efreet|efreeti]] are the brightest stars in the firmament of Fernia.
They are aristocrats, dwelling in sprawling mansions and
castles, attended by countless servants, dwelling amidst
astonishing opulence. Fire consumes, and the efreet are
masters of conspicuous consumption.

!!! Dao

Where do the many treasures of [[efreet|efreeti]] come from? Who built
their glorious [[City of Brass]]? The [[dao]] are the answer to both of
these questions. [[Azer|azer]] laborers keep the foundries burning, but
it's the dao who pluck wondrous jewels and pure [[adamantine]]
from the primal earth, and it's they who craft the grandest
and most remarkable wonders.

!!! Lesser Elementals

Fernia is home to raw fire and earth [[elemental]]s (though
these can also be found in [[Lamannia]]), abstract spirits that
want nothing more than to burn or surge. These primordial
creatures are largely ignored by the [[efreet|efreeti]] and [[dao]], and
they're driven by pure instinct. Elementals are Fernia's most
common inhabitants; an efreeti wouldn't be a lord without
subjects to lord over, and these lesser elementals serve that
role. While humanoid in form, they're deeply alien, [[immortal]]
spirits shaped by their element and driven by singular
purpose. An [[azer]] lives for the forge, and a [[mephit]] delights in
mischief. Most lesser elementals are content as long as they
have the opportunity to pursue their purpose, but occasionally
a lesser elemental unexpectedly develops a quirk that drives
it to pursue a new purpose.

The population of these elementals is limited, and thus
their service is valuable to the efreet and dao. The efreet
and dao often barter the service of their elemental subjects,
sending them to allied or rival courts. Typically this doesn't
matter to the elementals, but there have been a few cases of
[[salamander]]s rebelling against a new lord or mephits playing
tricks on their new comrades.

[[Azer|azer]]s, [[mephit]]s, and [[salamander]]s are the most common
elementals, though others might be encountered somewhere
in this plane.

!!! Fiends and Celestials

The [[fiend]]s and [[celestial]]s of Fernia embody specific aspects of
the concept of fire. Fire is an integral part of their appearance;
they may have burning eyes, orange-red skin, or wings and
halos formed of flame.

[[Angels|angel]] represent the comfort fire offers: its life-giving
warmth, the light that holds back the shadows. The angels
of Fernia are typically [[deva]]s or other lesser angels, and they
generally seek to assist and comfort travelers when they can.

[[Demons|demon]] reflect the terrifying destructive power of fire,
the wildfire that can't be contained and the spark that brings
down a mansion. They are wild and violent, and it's rarely a
good thing when adventurers cross paths with them. Demons
yearn to burn all wondrous things. Sometimes this leads
them to target the grand mansion of an [[efreeti]], but during
coterminous periods, they can also influence untended flames
in the Material Plane, or occasionally manipulate mortals
into carelessness with fire. Common demons include [[quasit]]s
(malevolent counterparts to the elemental [[mephit]]s), [[vrock]]s
with burning wings, and terrifying [[balor]]s.

[[Devils|devil]] represent the intentional use of fire as a weapon
or to inspire fear—the burning iron used in torture, the
screams of those dying on burning battlefields. Devils are
rare and exceptionally cruel. They thrive both on causing
pain and suffering in Fernia, and cajoling mortals into acts
of arson or fiery torture in the Material Plane. Like [[demon]]s,
they can usually only influence mortals when the planes are
coterminous, but occasionally a Fernian devil manages to slip
through fire into Eberron. [[Imp|imp]]s, [[barbed devil]]s, and [[pit fiend]]s
can all be found in Fernia.

!! Layers

Fernia is dominated by the vast [[layer]] known as the [[Sea of Fire]]. Where the sky can be seen, it's almost always obscured by ash and smoke. Its smaller layers embody specific concepts, such as infernos and campfires. These can usually be reached
through burning circles on the islands in the Sea of Fire, or
via tunnels in the [[Deep Halls]].

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Here are a few of the ways Fernia can affect the Material Plane.

!!! Manifest Zones

[[Manifest zone|manifest zone]]s tied to Fernia often share one or more of the
plane's universal properties. Those with //Deadly Heat// often have
unusual volcanic or tectonic activity, and are generally shunned.
However, House [[Cannith]] is always searching for Fernian zones
with the //Fires of Industry// property; in addition to enhancing crafting, these zones often allow [[artificer]]s to craft enchantments that can't be replicated elsewhere (especially
those tied to [[evocation]] and flame). A Fernian manifest zone
can provide an unexpected haven in an arctic environment, or
provide unusual geothermal benefits. In [[Karrnath]], the town of
Ember—on the edge of the Icetop Mountains—is renowned for
its pleasant climate and thermal pools.

!!! Coterminous and Remote

While Fernia is coterminous, temperatures rise sharply, and
warmer regions that would normally be safe can become
extremely hot, taking on the //Deadly Heat//, //Empowered Fire//,
and //Burning Bright// properties of the plane. During these times,
on rare occasions, creatures caught in an area of exceptionally
intense flame can find themselves pulled through to Fernia itself.

When Fernia is remote, intense heat loses some of its bite.
Creatures have advantage to resist the
effects of extreme heat, as well as against
[[spell]]s that deal fire damage.
Traditionally, Fernia is coterminous once every five years
during the month of [[Lharvion|Khorvaire calendar]], and it's remote once every five
years during the month of Zarantyr (exactly two and a half
years after it's coterminous).

!!! Fernian Artifacts

The [[dao]] and the foundries of Fernia produce a vast array of
wonders. Many of their creations are effectively trinkets, such
as a gold model of a [[dragon]] that breathes actual fire. Others are
far grander, such as [[figurines of wondrous power|figurine of wondrous power]]. While many Fernian artifacts relate to fire in some way—wands of [[fireball]],
[[flame tongue]] swords—they aren't limited to fire or [[evocation]].
Fernian items are often made from brass, obsidian, or basalt,
but the [[dao]] work with all metals.

Two additional resources from Fernia are [[cold fire]] and
[[Fernian ashes]]. Both of these can occasionally be harvested from Fernian [[manifest zone]]s.

!! Fernian Stories

Fernia is difficult to reach and dangerous to visit, but here are
a few ideas that might spark adventures related to that plane.

//''The Life of the Party.''// The Pasha [[Shashraqa]] of Firefall is
determined to unseat the Sultan [[Azhalar]] with her next gala. And
what's in fashion at the moment? Adventurers. The Pasha whisks
the adventurers to Fernia, promising to reward them well if they
make the gala a success—and to throw them into the [[Sea of Fire]]
should they fail her. Can the characters shine at a party of [[efreet|efreeti]]
and [[dao]]? Do they know which fork to use, especially when one
of them is on fire? What happens when Azhalar's [[salamander]]
general challenges a party member to a duel?

//''The Infernal Machine.''// The adventurers stumble across
an [[Emerald Claw]] camp. These Seekers are working with the
[[dao]] [[Sar Saeran]], who's building them a devastating explosive
device capable of leveling a city. Can the adventurers find out
why Saraean is working with the Emerald Claw? If the dao is
being compelled, can they free him? If it's part of a negotiation,
can they make a better offer? And what will they do if they end
up with the completed bomb?

//''The Back Door.''// The adventurers find a curious brass key.
When inserted into a door, it transforms that door into a portal
to the [[First Hearth|Campfires]], an inn in Fernia. Who does the key belong
to? How often can its power be used? The barkeep Ashe is
always happy to see a few new faces, but who else will the
adventurers meet at the bar?
[[Fernia]]n ashes are a potent component
of [[magic item]]s tied to the [[evocation]] school. In addition, if a
spellcaster discards a pinch of Fernian ashes while casting a
fire [[spell]], that spell is magnified.
This building in [[Krona Peak]] houses the meeting chambers of the [[Iron Council]] of the [[Mror Holds]]. Its utilitarian design gives it a passing resemblance to a titanic lock-box.

The location of Ferrous House continues to be a source of antagonism for rival [[clans|Mror clan]]. The building was constructed on a slope directly below the entrance to
[[Mroranon]]’s estate—traditionally the location where a clan establishes its storehouses and counting rooms. To some, this placement seems symbolic of the [[dwarven|dwarf]] nation being little more than a part of Mroranon’s business interests. Clan leaders dismiss such claims, saying that they raised Ferrous House in its central location to demonstrate the importance of the dwarven confederation.
Festering Holt lies approximately fifty miles
southwest of Ashtakala, the nearest [[humanoid]] habitation to the demon city, a charnel pit of ramshackle structures and ill will. It is a way station of sorts for groups
searching for the fabled demon city, and adventurers, savage humanoids, and even [[fiend]]s seek refuge along its streets. 

While the Holt doesn’t have many
comforts to speak of, it can look like paradise to a traveler
coming across it in the midst of the [[Wastes|Demon Wastes]]. However, more than a few visitors have been known to disappear while staying in
Festering Holt, and it is said that the locals prey on
the weak and injured, always in need of fresh meat
for the cooking pots.

The Holt has a livery of sorts, though the last time it
actually housed mounts not even its proprietor can say.
The general store, tavern, and inn can be found under the
same roof, in the largest structure in the Holt—''Dead Before Morning''. The innkeep, a [[bugbear]] named Karbal, opens the doors every evening and starts the festivities
with the same toast: “Drink well, lads, because it’s a sure bet
we’ll all be dead before morning!” The name stuck.
Fey are magical creatures with [[immortal]] spirits native to the plane of [[Thelanis]]. They dwell in twilight groves and misty forests, seemingly closely tied to the forces of nature. However, the fey of Thelanis aren't part of nature; as creatures tied to the plane of stories, they begin as [[manifestation]]s of the magic that humanoids //want// to see in the natural world. The fey reflect hopes, fears, secrets and desires both conscious and unconscious. Fey live entirely in the moment, with no concept of yesterday or tomorrow and no real depth of personality—until they become part of a story of their own, at which point they can spontaneously develop individual identity, goals, and desires.

Fey include creatures such as [[dryad]]s, [[pixie]]s, [[sprite]]s, and [[satyr]]s, as well as the mighty [[archfey]], the subjects of ancient legends and fables.

!! Types of Fey

<<list-links-article "[tag{!!title}sort[title]]">>
This rose was plucked from a garden in [[Thelanis]], and remains forever youthful and vibrant. Regardless of location, the rose opens at sunrise and closes at sunset.
The feyspires are the cities of the [[Moonlit Vale]] in [[Thelanis]]. Each is
home to a single [[archfey]] whose personal story is reflected
by the spire, along with a few greater [[fey]] and a host of
[[eladrin]] and other mortals. Many feyspires serve as planar
beachheads; they are tied to specific [[manifest zone]]s in
[[Eberron]], and when the time is right, they can slip into
Eberron for a short time. Usually the feyspires are hidden by
powerful [[illusion]]s during these times, but there are stories
of people stumbling into magical cities that are gone the next
day. It's possible that some number of feyspires could be trapped in Eberron following
the [[Mourning]]; it's up to a DM to decide if that's the story they
want to tell.

!! Notable Feyspires

<<list-links-article "[tag{!!title}sort[title]]">>
[[Cyre]] was the site of incessant battles during the [[Last War]], from the first extended campaign—the siege of
[[Eston]] in 895 YK—to the running battle on the Saerun
Road that was cut short when the [[Mourning]] occurred.
Battlefields across the [[Mournland]], both ancient and
recent, stand like open graves as evidence of the horrors
of the war. In some places, armies that were fighting on
the Day of Mourning became stone statues anchored in
position. Others were crystallized or reduced to ash.

On the Field of Ruins—around the Saerun Road in the
southwest part of the [[Mournland]], where allied forces
of [[Thrane]] and [[Breland]] battled an outnumbered Cyran
army on the Day of [[Mourning]]—the fallen soldiers are
preserved just as they fell, with no sign of rot or decay.
Thousands upon thousands of corpses lie scattered
across the field, facedown in the dirt or staring lifelessly
at the gray sky. Even seasoned bands of treasure hunters are loath to enter the Field of Ruins. 

The Field of Ruins is the only known source of [[mournlode]], a newly-discovered ore that is particularly harmful against [[Mabar]]an [[undead]].
This layer is the [[Xoriat]] domain of [[Dyrrn]] the Corruptor. Purple fields
are bathed in ultraviolet light, and fluorescent sculptures shed eerie dim light. //Varr// farmers dance as they tend the fields, but what they cultivate are emotions; anyone walking through a field feels a powerful emotion (fear, sorrow, anger, guilt) washing over them. Each field has an outpost containing an [[elder brain]], with a bright line of thought transmitting the emotions to Dyrrn's tower at the heart of the layer.

Dyrrn's tower is made of glowing threads of pure thought
intertwined around a massive steel spinal column. This tower
is filled with the tools of fleshcrafting. There are pools of
blood and canals of amniotic fluid, massive pulsing organs
waiting for a purpose, and untended tendrils crawling across
the floor. Adventurers might find a chamber that contains half-formed clones of the adventurers themselves... or perhaps the
clones are completed, and consider the adventurers to be evil
[[doppelganger]]s.

The spire amplifies Dyrrn's telepathic abilities, letting it
sense all living creatures within the layer. Dyrrn specializes
in corruption, and it may challenge adventurers with mental
projections, such as people plucked from their memories, who
seek to turn them against their allies.
Fiends are [[immortal]] creatures of wickedness formed in the [[demiplane]]s of [[Khyber]], or in another plane such as [[Shavarath]], [[Fernia]], or [[Dal Quor]]. Fiends cannot be destroyed; unless they are bound, they will always reform some time later after being killed.

Included among their number are [[demon]]s, [[devil]]s, [[quori]], [[night hag]]s, [[rakshasa]]s, and the mighty [[overlord]]s, archfiends who ruled [[Eberron]] during the first age of the world.
A figurine of wondrous power is a statuette of a beast small enough to fit in a pocket. If you speak the command word and throw the figurine to a point on the ground within 60 feet of you, the figurine becomes a living creature. If the space where the creature would appear is occupied by other creatures or objects, or if there isn't enough space for the creature, the figurine doesn't become a creature.

The creature is friendly to you and your companions. It understands your languages and obeys your spoken commands. If you issue no commands, the creature defends itself but takes no other actions.

The creature exists for 12 hours, after which it reverts to its figurine form. It reverts to a figurine early if it is incapacitated or if you speak the command word again while touching it. When the creature becomes a figurine again, its property can't be used again until 7 days have passed.

|!Figurine |!Living Creature |!Notes |
|Bronze Griffon |[[griffon]] |Can be ridden as a mount |
|Ebony Fly |giant horsefly |Can be ridden as a mount |
|Golden Lion |lion |Figurine usually comes in pairs |
|Ivory Goat |giant goat |Can be ridden as a mount |
|Marble Elephant |elephant |Can be ridden as a mount |
|Onyx Dog |mastiff |Can speak Common, has [[truesight]] |
|Serpentine Owl|[[giant owl]] |Can communicate telepathically |
|Silver Raven |raven |Can speak Common |
A final messenger is a tiny homunculus—a delicate winged
creature designed to facilitate communication between
[[warforged]] soldiers during the [[Last War]].

If you are a warforged, you can hold a final messenger and integrate it into your body. You can only have one messenger attached to your body at a time.

A final messenger holds four pieces of data, accessible only
to the warforged it is attached to:

* A destination for the messenger. This can be very specific (a particular apartment in [[Sharn]]) or more general (an open marketplace).
* A target individual. This could be a specific person or a category (“Any [[Karrnath]]i warforged”).
* A single image recorded through the eyes of a warforged attached to the messenger.
* A message of up to 25 words.

While the messenger is attached to you, you can take a moment
to review the data currently stored within the final messenger,
and if you choose, to change any or all of these data points. You
can release the final messenger, at which
point it flies to its destination by the most direct route possible.
Once it reaches the destination it seeks the target individual; if
no target has been set, it approaches the nearest [[warforged]].

If you are incapacitated while a final messenger is
attached to you, it immediately detaches and seeks out its target.
It retains its stored message, but replaces its stored image with
the last thing you saw before losing consciousness.

A final messenger is a tiny [[construct]] with darkvision and a flying speed of 15 mph. A messenger can only remain active for 8 hours after it detaches from a warforged body, after which time its energy dissipates and it falls unconscious. An unconscious messenger must spend at least an hour or two attached to a warforged, after which it regains its energy, as well as repairs any minor damages.
\define lingo-base() $:/language/Manager/
\define rarity-tag() [rarity[$(rarity)$]]
\define results-count() $(count)$ results

See also the [[magic item]] page.

<div class="tc-manager-wrapper">
	<div class="tc-manager-controls">
		<div class="tc-manager-control">
			<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
		</div>
		<div class="tc-manager-control">
			[[Rarity|rarity]]:&nbsp;
				<$list filter="[range[6]]" variable="rarity">
					<$checkbox tiddler="$:/config/Manager/Rarity" tag=<<rarity-tag>>>&nbsp;<$transclude tiddler="RarityNames" index=<<rarity>>/>&nbsp;&nbsp;</$checkbox>
				</$list>
		</div>
		<div class="tc-manager-control">
			<<lingo Controls/FilterByTag/Prompt>> <$select tiddler="$:/config/Manager/ObjectTag" default="">
				<option value="">---</option>
				<$list filter="[category[object]tags[]sort[title]]" variable="tag">
					<option value=<<tag>>><$text text=<<tag>>/></option>
				</$list>
			</$select>
		</div>
		<div class="tc-manager-control">
			Exclude tag: <$select tiddler="$:/config/Manager/ExcludeObjectTag" default="">
				<option value="">---</option>
				<$list filter="[category[object]tags[]sort[title]]" variable="tag">
					<option value=<<tag>>><$text text=<<tag>>/></option>
				</$list>
			</$select>
		</div>
		<div class="tc-manager-control">
			<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/ObjectSort" default="title">
				<$list filter="title rarity" variable="field">
					<option value=<<field>>><$text text=<<field>>/></option>
				</$list>
			</$select>
			&nbsp;&nbsp;
			<$checkbox tiddler="$:/config/Manager/ObjectSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
				<<lingo Controls/Order/Prompt>>
			</$checkbox>
		</div>
		<div class="tc-manager-control">
		<$button><<resetobjects>>Reset All Fields</$button>
		</div>
		<div class="tc-manager-control" align="right">
			<$list filter={{$:/config/Manager/LimitObject}} variable="count">
				<<results-count>><br/>
				<$checkbox tiddler= "$:/config/Manager/LimitObject" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
					Limit display to 50 results?
				</$checkbox>
			</$list>
		</div>
	</div>
	<div class="tc-manager-list">
		<table class="manager-table">
		<tr><th align="left">Item</th><th align="left" width="100px">Rarity</th><th align="left" width="250px">Tags</th></tr>
		<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/ObjectTag}!tag{$:/config/Manager/ExcludeObjectTag}subfilter{$:/config/Manager/Rarity!!tags}category[object]sort[title]order{$:/config/Manager/ObjectSortOrder}sort{$:/config/Manager/ObjectSort}order{$:/config/Manager/ObjectSortOrder}subfilter{$:/config/Manager/LimitObject!!limit50}]">
		<tr><td><$link/></td>
		<td>
			<$transclude tiddler="RarityNames" index={{!!rarity}}/>
		</td>
		<td>
			<$list filter="[is[current]tags[]sort[]butlast[]]">
				<$link/>, 
			</$list>
			<$list filter="[is[current]tags[]sort[]last[]]">
				<$link/>
			</$list>
		</td>
		</tr>
		</$list>
		</table>
		<$reveal type="match" state="$:/config/Manager/LimitObject!!limit50" text="[limit[50]]">
			<$button set="$:/config/Manager/LimitObject!!limit50" setTo="[has[title]]">Show All Results</$button>
		</$reveal>
	</div>
<style>
	.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define tier-tag() [tier[$(tier)$]]
\define results-count() $(count)$ results

See also the main [[spell]] page.

<div class="tc-manager-wrapper">
	<div class="tc-manager-controls">
		<div class="tc-manager-control">
			<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
		</div>
		<div class="tc-manager-control">
			[[Spell Tier|spell tier]]:&nbsp;
				<$list filter="[range[5]]" variable="tier">
					<$checkbox tiddler="$:/config/Manager/SpellTier" tag=<<tier-tag>>>&nbsp;<$transclude tiddler="SpellTierNames" index=<<tier>>/>&nbsp;&nbsp;</$checkbox>
				</$list>
		</div>
		<div class="tc-manager-control">
			<<lingo Controls/FilterByTag/Prompt>> <$select tiddler="$:/config/Manager/SpellTag" default="">
				<option value="">---</option>
				<$list filter="[category[spell]tags[]sort[title]]" variable="tag">
					<option value=<<tag>>><$text text=<<tag>>/></option>
				</$list>
			</$select>
		</div>
		<div class="tc-manager-control">
			<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/SpellSort" default="title">
				<$list filter="title tier" variable="field">
					<option value=<<field>>><$text text=<<field>>/></option>
				</$list>
			</$select>
			&nbsp;&nbsp;
			<$checkbox tiddler="$:/config/Manager/SpellSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
				<<lingo Controls/Order/Prompt>>
			</$checkbox>
		</div>
		<div class="tc-manager-control">
		<$button><<resetspells>>Reset All Fields</$button>
		</div>
		<div class="tc-manager-control" align="right">
			<$list filter={{$:/config/Manager/LimitSpells}} variable="count">
				<<results-count>><br/>
				<$checkbox tiddler= "$:/config/Manager/LimitSpells" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
					Limit display to 50 results?
				</$checkbox>
			</$list>
		</div>
	</div>
	<div class="tc-manager-list">
		<table class="manager-table">
		<tr><th align="left">Item</th><th align="left" width="100px">Spell Tier</th><th align="left" width="250px">Tags</th></tr>
		<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/SpellTag}subfilter{$:/config/Manager/SpellTier!!tags}category[spell]sort[title]order{$:/config/Manager/SpellSortOrder}sort{$:/config/Manager/SpellSort}order{$:/config/Manager/SpellSortOrder}subfilter{$:/config/Manager/LimitSpells!!limit50}]">
		<tr><td><$link/></td>
		<td>
			<$transclude tiddler="SpellTierNames" index={{!!tier}}/>
		</td>
		<td>
			<$list filter="[is[current]tags[]sort[]butlast[]]">
				<$link/>, 
			</$list>
			<$list filter="[is[current]tags[]sort[]last[]]">
				<$link/>
			</$list>
		</td>
		</tr>
		</$list>
		</table>
		<$reveal type="match" state="$:/config/Manager/LimitSpells!!limit50" text="[limit[50]]">
			<$button set="$:/config/Manager/LimitSpells!!limit50" setTo="[has[title]]">Show All Results</$button>
		</$reveal>
	</div>
<style>
	.tc-manager-list {border-style: none;}
</style>
<<tabs "[[Find Items]] [[Find Spells]] [[Find Creatures]] [[Find People]] [[Find Orgs]] [[Find Places]] [[Find Misc]]" "[[Find Items]]">>
The lenses of these garish goggles are carved from Siberys [[dragonshard]]s. While wearing these lenses, a creature with the [[Mark of Finding]] can examine an object to identify the aura of the last creature that touched it. If successful, the wearer can learn the creature's type and can see the creature's aura through any physical barriers up to 1,000 feet away from the wearer. This property can't be used again until the next dawn.
The spellcaster hurls a mote of fire at a creature or object within 120 feet. 
Fire [[giant]]s are broader and stronger than some of their taller kin, resembling huge [[dwarves|dwarf]] with fiery orange hair and beards and soot- or ash-colored skin. They are known among the giants as the most talented crafters of metal and [[magic item]]s, and are thought to be descendents of the mighty [[Sulat League]]. Average height: 18 ft.
Soldiers of this division of the [[Harmonious Shield]] of [[Riedra]] are often used in raids
on [[Adar]], when speed and the ability to hit hard and fast are vital. These highly mobile and versatile troops are often equipped with chain shirts, shortbows, and greatswords.
A bright streak flashes from your pointing finger to a point you choose within 150 feet and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must dodge from the flames or be scorched. The fire spreads around corners.

This spell can be upgraded to legendary-tier for an even more destructive effect.
''District Type:'' Red light district<br/>
''Buildings:'' Temple ([[Olladra]]), average lodging (9),
poor lodging (70), average food (20), poor food (80),
poor trades (80), poor services—brothels, gambling
halls, pawnshops, etc. (140)<br/>
''First Impression:'' Noisy crowds fi ll taverns, casinos, and bordellos, the sound of laughter spilling
out onto the dark streets. A great deal seems to be
going on that appears illegal, but everyone seems to
be having a good time.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Torchfire]] (north); [[Center Bridge]] (northwest); [[Dragoneyes]] (bridge, southeast); [[Black Arch]] (bridge, south); [[Little Plains]] (above)

The Firelight district caters to clients seeking
entertainment of an intimate nature, as well as
hardcore and casual gamblers. While Sharn's other
red-light districts, [[Sharn's Welcome]] and [[Dragoneyes]], are dangerous and disreputable places most
respectable citizens wouldn't dream of visiting,
Firelight has somehow managed to maintain a
reputation as a socially acceptable place to come and
have fun, whatever type of fun one might be interested in having. Crime is much better controlled in Firelight than in the other red-light districts,
so customers are less likely to become victims.
[[Changelings|changeling]] control most of the bordellos here, as
they do in [[Dragoneyes]], but they employ members
of almost all races. 

!! Noteworthy Locations

* The [[Burning Ring]]. This illegal fight club where spectators bet on amateur gladiators moves around [[Lower Menthis]], but is most often found somewhere in [[Firelight]].
* The [[Lucky Nines]]. A casino which employs a great deal of magic in the entertainment and operation of the business.
* [[Savia's]]. The most elegant bordello in Firelight, Savia's is owned by [[city councilor|Sharn Council]] [[Savia Potellas]].
A layer of plains and low hills, this region is permanently lashed
by hurricane winds and endless storms. Beasts huddle in caves
and the limited shelter, while all manner of [[elemental]]s clash
in the storm-lashed plains. A massive [[elder tempest]] drives
the heart of the storm; during the Sundering of [[Sarlona]], an
apocalyptic cult in [[Ohr Kaluun]] sought to bring this elemental to
Eberron, believing it would destroy the world.
At first glance, First Tower
doesn’t appear to deserve a mention alongside such massive
population centers as [[Sharn]] and [[Wroat]]. If a settlement
were judged solely on the number of permanent residents (just over 300),
then the place might not even appear on a [[Brelish|Breland]] map.
As the gateway to Sharn from the northern land passages,
however, First Tower earns prominence and notoriety
befitting the number of travelers who regularly pass
through its humble environs.

The town grew up around a single stone tower,
maybe thirty feet high, that legends claim was the first
tower built in the greater [[Sharn]] region. Long before
any of Sharn’s massive structures climbed into the sky,
the people of First Tower believe, the stones of their
ancient spire were stacked one atop the other. Historians dispute this legend, because the tower and the ramshackle inn that has been built around it are clearly
not as old as the ancient [[goblinoid]] foundations upon
which Sharn grew. The people of First Tower nod, smile
politely, and leave the scholars to their delusions, for
they know in their hearts that they live in an historic
and significant location.

Regardless of the accuracy of the place’s history, First
Tower serves an important role in the cycle of life around
[[Sharn]]. Those traveling to or from Sharn by land, whether
walking, riding, or as passengers in a caravan or lightning
rail, have only one route they can take. This route cuts
through the crags and cliffs upon which Sharn sits, slices
north, and passes through the settlement of First Tower. Whether coming from or going to Sharn, if you travel by
land you must pass through First Tower.

All the residents of First Tower earn a living by catering to the travelers moving through the settlement. The inn employs most of them, for travelers need to eat, drink,
relax, and have a place to stay while waiting for the next
outbound caravan or for their papers to clear so they can
enter the City of Towers.

The [[lightning rail]] station, the caravan stables, a general store, and the crown’s checkpoint make up the rest of
the town, as well as a scattering of houses where the locals
live. Royal clerks stationed at the checkpoint examine the
identification and traveling papers of everyone seeking to
travel to [[Sharn]] proper. The checkpoint maintains a small
garrison that enforces order in First Tower and keeps the
place safe from bandits and marauders who sometimes slip
out of the [[King's Forest]]. 
This active volcano in the southern [[Ironroot Mountains]] is a sacred site to followers
of the [[Sovereign Host]], particularly those who worship [[Onatar]], the god of forge and fire. It is said that Onatar dwells within the volcano, and that his divine
forge provides its unearthly heat. A strong source
of magical power lurks deep within the rumbling
mountain—thought by some to be an incredible cache
of [[dragonshard]]s whose worth would be greater than
all the other wealth of the [[Holds|Mror Holds]] combined.
The Fists of Dal Quor are a [[kalashtar]] [[monk]] combat order drawing
supernatural power from the [[Region of Dreams|Dal Quor]]. These powerful [[psionic|psionics]] martial artists manifest physical projections of their "astral self", or their [[quori]] inhabitant, into the Material Plane. Fists of Dal Quor among the [[Haztaratain]] or [[Tashalatora]] monks of [[Adar]] can be seen striking with extra pairs of spectral arms or the luminous visage of a [[quori]] surrounding them. 
The {{!!title}} is a street gang of 
[[changeling]] pickpockets who work
[[Middle Menthis]], [[Sharn]].
In the modern age, the greatest power was the kingdom of [[Galifar]], which covered most of the continent
of [[Khorvaire]]. The Five Nations—[[Aundair]], [[Breland]],
[[Karrnath]], [[Thrane]], and [[Cyre]]—formed the heart of the
kingdom. Although each has a unique cultural identity,
they share this unified foundation. Families are spread
across the Five Nations; the rulers of the Five Nations
descend from the Wynarns, the royal bloodline of Galifar. Despite their differences, an Aundairian has more
in common with a Thrane than with a [[Zil|Zilargo]] [[gnome]] or a
[[Lhazaar|Lhazaar Principalities]] pirate.

A century ago Galifar collapsed into civil war, and the
Five Nations became separate countries at odds with
their neighbors. The [[Last War]] came to an end after Cyre
was destroyed in a cataclysm known as the [[Mourning]].
The Five Nations remain divided today, sharing Khorvaire with the new nations established by the [[Treaty of Thronehold]]. The remaining Five Nations remain the
largest and most powerful countries in Khorvaire.

The term "Five Nations" even predates the founding of [[Galifar]], however. The five pre-Galifar nations of [[Daskara]], [[Korth]], [[Metrol]], [[Thaliost]], and [[Wroat]], were well established in Khorvaire by about [[2500 years ago|Modern Age]]. 

!! The Treaty of Thronehold

The [[Treaty of Thronehold]] officially ended the [[Last War]].
The treaty recognized the following nations as sovereign states: [[Aundair]], [[Breland]], [[Darguun]], the [[Eldeen Reaches]], [[Karrnath]], the [[Lhazaar Principalities]], the [[Mror Holds]], [[Q'barra]], the [[Talenta Plains]], [[Thrane]], [[Valenar]], and
[[Zilargo]]. These nations abide by a common set of laws
and maintain diplomatic relations. The [[Demon Wastes]]
and [[Shadow Marches]] regions have no unified government. [[Droaam]] has declared itself a nation but has yet to
be recognized by the treaty nations. 
This tag indicates a [[magic item]] or other object that is installed in place, as opposed to a portable, personal item.

<<list-links-article "[tag{!!title}sort[title]]">>
By speaking this magic sword's command word, you can cause flames to erupt from the blade. While the sword is ablaze, it deals additional fire damage to any target it hits. The flames last until you speak the command word again or until you drop or sheathe the sword.
The Flamebrow Clan guards an [[Age of Demons]] ruin in the [[Q'barra]]n jungle, a mere 50 miles from the city of [[Newthrone]]. High Elder [[Bhisma Na'kala Flamebrow]], ruler of [[Ka'rhashan]], hails from this clan.

{{dragonborn clanhold}}
Built where the divine battle between the [[paladin]]
[[Tira Miron]] and the abomination of darkness and
shadow was fought, Flamekeep began as a small
temple built around the purified fire. In time, a
cathedral replaced the temple, and the church’s
evolution from cult to religion brought people from
all over the realm until a city took shape. The city
bears the signs of its devotion in all things—icons,
flame imagery, and stone placards bearing sacred
texts adorn nearly every surface. Architects were
commissioned to use light and soaring construction
to capture the nation’s devotion to the [[Silver Flame]],
giving the city its distinctive look.

The spiritual heart and capital of [[Thrane]], Flamekeep is
a massive fortress city. Pilgrims descend on the city from all over the
nation and beyond to behold its beauty, to enter the
[[Cathedral of the Silver Flame]], and, if they are lucky,
to catch a glimpse of the miraculous flames within.
Although the presence of the divine infuses the city,
with statues and imagery devoted to the church wherever space allows, the city is also a hotbed of intrigue. Influential religious officials, foreign emissaries, and
others meet to negotiate secret alliances and make
backroom deals to advance their agendas and grow
their power. Flamekeep is also home to [[Thalingard]], the ancestral palace of the rulers of Thrane and current residence of Queen [[Diani ir'Wynarn]]. 

Most of the city rises from a tiered pedestal of land
surrounded by a deep channel. The waterway leads
all the way south from [[Scions Sound]], enabling ships
to sail in and dock at the low-lying western ports.
Three bridges span the water, to the north, east, and
south.
Only found in [[Thrane]], this metal is considered sacred by the Church of the [[Silver Flame]]. Weapons fashioned from flametouched iron are particularly devastating against [[undead]] and [[fiend]]s.
A [[sphinx]] with oracular powers came
back to [[Morgrave University]] with a [[Xen'drik]] expedition two years ago, and took up residence there in [[Lareth Hall]]. In
addition to her first-hand knowledge of Xen'drik, she
is one of the few non-[[dragon]]s to have made extensive
study of the [[Draconic Prophecy]]. She sometimes
sends adventurers on missions by uttering a cryptic
prophecy. "It is time for the Globe of Seven Lights to
be brought out of Xen'drik," she might say. She never
explains her proclamations, and never provides information on mundane affairs.
The [[Mockery]] is the lord of pain and vengeance, the deceiver who destroys. His [[monk]]s embrace suffering; through ritual torture, they overcome weakness of body and mind. As part of this training, a monk flays strips of their skin, treating the muscle below with an alchemical substance that toughens it. Once an initiate has learned to endure pain, they are taught to inflict it. The monks of the Flayed Hand are master torturers and deadly warriors. A monk of the Mockery seeks communion with her god through violence and treachery. Many members of the order sell their services as mercenaries and assassins. Others cause pain in more subtle ways by destroying hopes and dreams instead of spilling blood.
This spell creates a circular, horizontal plane of force, 3 feet in diameter and 1 inch thick, that floats 3 feet above the ground in an unoccupied space of your choice that you can see within 30 feet. The disk remains for up to 1 hour, and can hold up to 500 pounds. If more weight is placed on it, the spell ends, and everything on the disk falls to the ground.

The disk is immobile while you are within 20 feet of it. If you move more than 20 feet away from it, the disk follows you so that it remains within 20 feet of you. It can move across uneven terrain, up or down stairs, slopes and the like, but it can't cross an elevation change of 10 feet or more. For example, the disk can't move across a 10-foot-deep pit, nor could it leave such a pit if it was created at the bottom.

If you move more than 100 feet from the disk (typically because it can't move around an obstacle to follow you), the spell ends.
You create a 20-foot-radius sphere of fog centered on a point within 120 feet. The sphere spreads around corners, and its area is heavily obscured. It lasts for up to 1 hour or until a wind of moderate or greater speed (at least 10 miles per hour) disperses it.

If you are able to cast [[rare-tier|spell tier]] spells, you can cast this as such to increase the radius of the fog to up to 80 feet.
This object appears as a wooden box that measures 12 inches long, 6 inches wide, and 6 inches deep. It weighs 4 pounds and floats. It can be opened to store items inside. This item also has three command words.

One command word causes the box to unfold into a boat 10 feet long, 4 feet wide, and 2 feet deep. The boat has one pair of oars, an anchor, a mast, and a lateen sail. The boat can hold up to four human-sized creatures comfortably.

The second command word causes the box to unfold into a ship 24 feet long, 8 feet wide, and 6 feet deep. The ship has a deck, rowing seats, five sets of oars, a steering oar, an anchor, a deck cabin, and a mast with a square sail. The ship can hold fifteen human-sized creatures comfortably.

When the box becomes a vessel, its weight becomes that of a normal vessel its size, and anything that was stored in the box remains in the boat.

The third command word causes the folding boat to fold back into a box, provided that no creatures are aboard. Any objects in the vessel that can't fit inside the box remain outside the box as it folds. Any objects in the vessel that can fit inside the box do so.
This fine grey cloth, soft as silk, is folded up to the dimensions of a handkerchief. It unfolds into a circular sheet 3 feet in diameter. When unfolded, it activates the [[floating disk]] spell imbued within. The fabric circle then functions as the plane of force created by that spell, and lasts until you fold the disk or your attunement to this item is broken.
Folly is the [[barony]] of [[Fortune's Fool]]. Here, great misfortunes
regularly occur, but invariably lead to unlikely success. Folly contains
a charming village and a number of threats—a [[dragon]], a [[giant]]—
that can't be defeated with weapons alone. However, other actions can be used to achieve things that might seem impossible in reality. For example, one could convince the dragon to eat its own hoard. This is a place where wits are more important than brawn, though it
may take time for the adventurers to discover this.
The most hideous and wicked of all [[giantkind|giant]] are the fomorians, whose deformed bodies reflect their vile demeanors. Some have facial features randomly distributed around their misshapen, warty heads. Others have limbs of grossly different sizes and shapes, or emit terrible howls each time they draw breath through misshapen mouths. 

The fomorians are native to the [[plane]] of story and song, [[Thelanis]], where they live in a brutal civilization maintained by enslaved [[fey]]. Some say that fomorians are sapient [[manifestation]]s of the plane, formed as a storybook reflection of the [[Cul'sir]] titans and their fabled assault on the [[feyspire]] [[Shae Tirias Tolai]] and subsequent subjugation of the [[elves|elf]]. This may explain the fomorians' wretched appearance and dependence on slaves, as these elements of the story are emphasized in elves' retellings of the events of the [[Age of Giants]].
<<list-links-article "[tag{!!title}sort[title]]">>
The spellcaster unleashes a bolt of mystical power at a creature or object within 180 feet. On a hit, the target feels an impact akin to being struck with a hammer.
The Forest of Lurking Shadows is a massive woodland in the north of the province of [[Nulakesh]] in [[Riedra]]. It holds several [[manifest zone]]s to [[Lamannia]], but it is also closely linked to the [[demiplane]] of [[Khyber]] known as the [[Abyssal Forest of Khaar]].
//There was a time when the world was the wood, when there were no towns or steel. The Forest Queen ruled the [[Endless Weald]], maintaining peace between people and beasts. But as ages passed, her children grew restless in the shade of her leaves. Her eldest son came to her and said, “Mother, I dream of war! I want to build a fortress and wield a blade of steel.” The Queen replied, “Then leave the wood, but do not bring your metal into my domain.” And so he left the wood and founded the kingdom of [[Karrnath]]. The next day the eldest daughter came before the Queen. “Mother, I dream of magic! I want to build a tower and conjure fire!” The Queen replied, “Then leave the wood, but do not cast your spells in my domain.” And so she left the wood and founded the kingdom of [[Thaliost]]. One by one, the Queen's children left her, until she was alone in the woods with the spirits and the beasts. And as each child raised a kingdom, the woods grew smaller and farther apart, and the heart of the Forest Queen grew bitter and cold. The people are her great-grandchildren, and she will not harm those who stay on the path and respect the beasts of the forest. But those who stray from the path, who conjure fire or hunt with steel, those fools will be lost in the Endless Weald and never again see the light of day.//

From the Towering Wood in the [[Eldeen Reaches]] to the
[[Harrowcrowns]] of [[Thrane]], from the [[Greenhaunt]] of [[Breland]]
to the [[Shadowmount Forest]] of [[Karrnath]], wherever people
dwell by the deep forest, they share stories of the Forest
Queen. She is the archdryad, linked to every root and bough.
She is proud, and when protecting her subjects, she can
be ruthless; but she shares many wonders with those who
enter her woods with empty hands and open eyes. The
story above is clearly apocryphal, but it's a common tale
with many variations, such as her children founding nearby
towns instead of nations. Regardless, the message is the
same: //there is a power that watches over the woods//. Stories
often depend on the character of the local forest; near the
[[Towering Woods|Eldeen Reaches]], the Forest Queen is often depicted as
benevolent, while near the [[Nightwood]] of [[Karrnath]], they talk
of how the betrayals of her children froze the heart of the
Forest Queen, leaving her cruel and hungry for revenge.

The Forest Queen rules the [[Endless Weald]] within [[Thelanis]], an arboreal realm
inhabited by [[dire beast]]s and wild [[fey]]. The Queen's influence can also be felt in any
forest in times when [[Eberron]] and [[Thelanis]] are coterminous.
Just like the stories, the Queen's personality often reflects the
forest where she's currently manifesting; the Forest Queen
is more likely to be benevolent in the [[Twilight Demesne]]
and cruel in the [[Nightwood]].

!! The Queen as Ally or Patron 

The Forest Queen has close ties to the [[Greensingers]], and any Greensinger [[druid]] or ranger could have the Forest Queen as a patron. She's an option for
a [[warlock]], but the magic she teaches is primal in nature, not arcane. This doesn't change the spells available to the warlock; their spells simply draw on elemental
forces and the power of the [[fey]] rather than arcane formulas.
As a more exotic option, a character could have slipped into the [[Endless Weald]] as a
child and been raised in the court of the Forest Queen.

Regardless of origin, any character allied with the Forest
Queen is expected to follow her rules.

* Don't use weapons or armor of metal. ([[bronzewood]] is a suitable alternative)
* Don't kill a natural beast with magic or for sport.
* Protect those who travel on a marked path, unless they harm the forest with their actions.
* Help any [[fey]] of the forest who comes to you in need.

Beyond these basic principles, the Forest Queen's quests
typically relate to the woods in some way. An agent of the
Forest Queen could be tasked to reconsecrate a grove, to
destroy an infestation of [[aberration]]s or other unnatural
predators, or to prevent an ambitious [[dragonmarked house]]
from expanding into woodlands. Beyond the forest, an agent
could be tasked to recover a relic stolen from the [[Endless Weald]] (and once reclaimed, perhaps entrusted to carry this artifact on their adventures). Agents of the Forest Queen might be charged to act as envoys, negotiating with agents of other
[[archfey]] or dealing with the [[feyspire]]s. Or perhaps there's a
darkness in the Endless Weald, a canker that appeared when
the forests of [[Cyre]] were consumed by the [[Mourning]]. The
Forest Queen could task mortals to explore this region within
the Weald, or charge them to explore the [[Mournland]] and to
seek a cure for the wounded land.

!! The Queen as an Enemy

One could make an enemy of
the Queen by breaking one of her rules while in her woods,
or perhaps by killing one of her favored beasts or devoted
agents. Such a personal enmity could lead to a character
being targeted by natural threats—singled out by aggressive
beasts, led astray on journeys through wild regions, or
targeted by malicious [[sprite]]s. A character could also earn
her ire by taking one of her relics from a forest, perhaps not
knowing that the [[magic item]] is tied to the wood. On a larger
scale, the Forest Queen could grow tired of civilization
itself. The forests containing her [[manifest zone]]s could
expand, with [[fey]] and feral beasts attacking villages and
towns as they're overgrown. Could adventurers find a way
to placate the bitter Queen, or must they defeat her to end
this advance?
The Forge Maiden is a brilliant artisan. What she
invents depends on the story; she can be an [[alchemist]],
a smith, or even a [[wizard]] devising new [[spell]]s. She
often creates things that solve problems, but other
stories begin when she creates something that causes
a problem—a metal beast that ravages the land, or a
potion of immortality that doesn't grant eternal youth.
Depending on her depiction, she's also known as the
Mother of Invention. 

Her [[barony]] is the [[Assembly]].
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this quiet district. Children play
in the streets and couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Downstairs]] (south); [[Center Bridge]] (southeast); [[Fallen]] (bridge, southwest); the [[Stores]] (bridge, northwest); [[Granite Halls]] (bridge, north); [[Warden Towers]] (above)

Forgelight Towers mostly succeeds where [[Center Bridge]] fails in being a relatively quiet residential neighborhood amid the rowdy chaos of [[Lower Menthis]]. A number of older citizens live in Forgelight Towers, long-time homeowners who established
their residence here before the ward became quite
so seedy. Many of them are fond of complaining how
far downhill the neighborhood has gone; others are
more interested in sampling the wares in [[Downstairs]]
and [[Torchfire]].
//Once there was a prince of a grand kingdom, the youngest of eight sons. His brothers were celebrated as heroes of the realm, but whatever the youngest prince did, his deeds were never noticed; the shadows cast by his brothers were too long. Even when he saved the kingdom from a cruel dragon, the people assumed one of his brothers had done the deed. But in that dragon's lair, the prince discovered a strange sack. Reaching inside it, he found a toy he'd loved as a child and long forgotten about, a comb lost by his sister, and a map of a nation that no longer exists. Curious, he climbed into the sack and found a castle within it, filled with forgotten wonders. No one ever noticed he was gone, and no one remembers his name or his deeds. But the Forgotten Prince still dwells in his [[Castle of Lost Things]]. When you forget something you love, or when something you need is nowhere to be found, it's because the Forgotten Prince has taken it for his hoard.//

When a sock goes missing or a tool is misplaced, people
curse the Forgotten Prince for stealing it away. When
someone forgets what they were about to say, they might
remark “The Prince has taken my thought.” Needless
to say, his reach is not truly as wide as such stories
make out; but the Forgotten Prince and his minions do
indeed steal unappreciated things, both material items
and even ideas themselves, keeping them in the vaults
and library of his [[Castle of Lost Things]]. Often such thefts
are never noticed, but he might take things that are
quite valuable if he believes them to be unloved or
unappreciated by those who have them. Sometimes
this is done to teach a lesson, how the loss of a simple
and undervalued item or idea can have disastrous
consequences. Battles have been lost and cities fallen
because of the Prince's thefts—though often people
fail to appreciate the lesson, as they never recall
what was lost to begin with.

The Forgotten Prince dwells in the [[Castle of Lost Things]] in
[[Thelanis]]. His attendants are sly and cunning [[fey]], along with
mortals who were unappreciated in their mundane lives. Some
say that the [[kenku]] are servants of the Forgotten Prince who
fled from his service—that he stole their voices as punishment
for their betrayal, but that a kenku can earn it back with
clever deeds. True or not, the Prince has followers
scattered across [[Khorvaire]]—thieves who sacrifice
unloved objects and undervalued secrets to the Prince
in exchange for his guidance and gifts. Followers of the
Forgotten Prince rarely work together, but they can be
found in many positions of influence. There are [[elves|elf]] in
the Shadow Houses ([[Phiarlan]] and [[Thuranni]]) who receive visions from the Prince
when they trance, and [[changeling]]s among the [[Tyrants]] of
[[Sharn]] who engage in more subtle thefts on behalf of the
Prince, stealing hearts or faces. While his thefts often go
unnoticed by the greater world, the Forgotten Prince also
takes pleasure in seeing celebrated people whose reputations
are undeserved brought low, and his agents may act to expose
such poseurs. Adventurers could also be forced to deal with
the Prince if he has something they need—perhaps an artifact
or secret long forgotten, now sealed away in the vaults of his
dark castle.

!! The Prince as Ally or Patron

The Forgotten Prince may reach out to people who have themselves been forgotten or
unappreciated, provided he sees potential in them. Sometimes
he brings them to the [[Castle of Lost Things]]; in other cases, he
offers these agents purpose, rewarding them for their service
with gifts or secrets. The urchin background is an excellent
option for someone forgotten by the world but chosen by the
Prince, while the hermit background could reflect someone who
spent much of their life in the Castle of Lost Things, perhaps having discovered a long-forgotten secret or artifact they discovered in the Castle. The Forgotten Prince could be
an [[archfey]] patron for a [[warlock]], or a Hexblade warlock could
also receive their weapon as a gift from the Prince; what is the
forgotten history and destiny of this weapon? The Forgotten
Prince can also be an interesting patron for a [[bard]] of the College of Lore; the Prince values secrets no one else considers valuable, and the Cutting Words feature can be depicted as stealing opportunity from a foe—a trick taught by the Forgotten Prince. The Forgotten Prince could teach a rogue the talents of an [[arcane trickster]] or the skills of a thief, provided they are willing to use those skills on his behalf.

Missions issued by the Prince typically involve
the theft of an object or a secret. These things
may not be seen as valuable by the people that
possess them, and such a task could easily
be added on top of the mission for an existing
adventure—“While you're in [[Dreadhold]], steal the
ring under the warden's bed.” The Prince could
teach his agents a ten-minute ritual which allows
him to pull the requested item into [[Thelanis]]
(this only works with objects the Prince //wants//,
so it's not a way to dispose of just any item).
The Prince may also task agents with actions to
expose or bring down people whose reputations
are undeserved, or to assist those who are
unappreciated. Note that good and evil don't
enter into these judgments; the Prince could call
on agents to bring down someone who's using
their undeserved reputation for a good cause,
or to help an unappreciated serial killer!

!! The Prince as an Enemy

The simplest way for the Prince to enter a story is for one of his agents to steal something that the adventurers need, or to take actions that cripple an organization or patron that the characters work for. This ties to the
idea that the Prince may target someone
with an undeserved reputation even if they
are using it to do good; the adventurers
themselves could be targeted if they acquire
fame that the Prince considers unearned. Or the characters might discover they need something stolen long ago by the Prince—or an object they've recently acquired and
desperately need has gone missing, and no
one else seems to remember it. Characters
could also be set against the Prince by
another immortal patron; perhaps the
Prince has stolen one of the memories of
the [[Forest Queen]], and she wants it back.

A defining part of the Forgotten Prince's story is
that he himself has been forgotten.
Should a character somehow learn the
true name of the Forgotten Prince
during their adventures, they can gain
advantage on actions taken against him.
The Forsaken Forest is a small forest in the mainland [[Lhazaar Principalities]], near the town of [[Skairn]].
//“It is time for us to embrace peace. Let us sheathe our swords and let our dead finally rest.”//
<div align="right">—King [[Kaius ir'Wynarn III]], addressing the [[Thronehold]] Assembly</div>

Fort Bones lies far from the heart of [[Karrnath]]. No
[[lightning rail]] leads to this bleak citadel, and roads
shattered by war have yet to be repaired. The bones
of fallen enemies are fused to its walls, and skeletal
warriors keep silent vigil on the ramparts. As a show
of good faith and dedication to peace, Kaius III withdrew most of Karrnath's [[undead]] legions and sealed
them in the vaults below the city of [[Atur]]. Only a few
elite units remain in the service of the crown, scattered across the nation. Fort Bones is one of the only places where the dead outnumber the living. Here [[bone knight]]s lead fleshless cavalry
against [[Valenar]] raiders, while the [[Corpse Collectors]]
pioneer new forms of [[necromancy]] in preparation for
wars to come. 

!! During the Last War

The citadel now known as Fort Bones was once
the seat of Gyrnar Shult, a priest of the [[Blood of Vol]]
and the reeve of the agricultural region of Odakyr. The [[Cyran|Cyre]] warlord Kaina ir'Durna claimed Gyrnar's keep
at the start of the [[Last War]]. The warlord
dismissed Gyrnar's warnings about the power of
the [[Mabar]] [[manifest zone]] surrounding the keep and the importance of his rites. Then, when Mabar entered a coterminous phase, its
dark power flowed out of the keep and leached the
life from the land. Across Odakyr, crops failed and
livestock withered. This event was just one among
those that led to the first crippling famine, but it was
one that could have been prevented.

When [[Kaius I|Kaius ir'Wynarn I]] embraced the aid of the [[Blood of Vol]], Gyrnar returned as commander of the newly fortified keep. He rechristened it Fort Bones, swearing that the bones of every Karrn that had fallen
would serve as a wall to protect those still alive. It
would be decades before actual bones would be
incorporated into the walls, but Gyrnar devoted
himself to improving the military applications of
[[necromancy]]. It was during this time that Gyrnar and the high priest [[Malevanor]]—then a living person—developed and perfected the [[Odakyr Rites]],
the ritual that produces the infamous [[Karrnathi undead]]. While [[Atur]] became the primary seat for
the production of undead, the power of the [[Mabar]]
[[manifest zone]] ensured that Fort Bones remained a
vital center for the development of undead and the
training of [[bone knight]]s.

Fort Bones weathered many sieges without falling, and no one expected the outright devastation that accompanied the Long Night in 990 YK. The finest [[druid]]s and [[wizard]]s of the [[Valenar]] joined together for the attack, shattering the fort's walls with earthquakes and storms. By the time relief arrived from [[Fort Zombie]], the fortress had been obliterated. The
new commander swore to rebuild the walls with the
bones of her enemies, and this was no idle threat.
Bones of humans and elves are embedded into the
pale stone and mortar of the restored fortress, and
they moan softly when enemies approach. 

!! Fort Bones Today

Even within [[Karrnath]], many people despise the role
that the [[undead]] played in the war. [[Kaius I|Kaius ir'Wynarn I]] was forced
to use undead soldiers out of desperation, but many
of the warlords believe that his decision was a stain
on Karrnath's proud martial history—that [[Rekkenmark|Rekkenmark Academy]]'s finest could have found a way to overcome
the odds. Beyond this, heavy reliance on undead greatly increased the influence of the [[Blood of Vol]] across Karrnath, something that concerned [[Kaius III|Kaius ir'Wynarn III]] and Regent [[Moranna]]. The decision to seal the
legions below [[Atur]] and to cease the mass production
of undead in the City of Night was a vital move to
strengthen Kaius's position both within and beyond
Karrnath's borders. However, Kaius isn't willing to
let this power go. Fort Bones is far from Atur and the
public eye. The fortress serves as a vital watchtower
against [[Valenar]] incursion, but it is also the primary
research facility for the [[Corpse Collectors]], the royal
necromancers of Karrnath.

[[Alinda Dorn]] is the military commander of Fort Bones. 
Fort Zombie is a fortress in [[Karrnath]] that was built to guard the border with [[Cyre]]. Today it stands thirty miles from the wall of [[dead-gray mists]] that cover the [[Mournland]]. Like [[Fort Bones]], Fort Zombie was the site of [[necromantic|necromancy]] research during the [[Last War]].

On the Day of [[Mourning]], [[warforged]] soldiers guarding Fort Zombie abandoned their posts and marched across the [[Cyre River]] to found the mysterious [[Becoming God]] cult.
The [[archfey]] known as Fortune's Fool is forever stumbling into a new disaster,
though miraculously she invariably emerges unscathed.
Her arrival usually bodes ill for those unfortunate enough
to be around her, though sometimes others can profit
from the chaos that follows in her wake. Her formal title
in the [[Moon Court]] is Lady Perilous, and her [[barony]] is [[Folly]].
''District Type:'' Apartment townhomes<br/>
''Buildings: ''Average residences (40), poor
residences (220)<br/>
''First Impression:'' This district is solid and unremarkable, filled with low-income housing for the
people who work the [[Cogs]] and the caravan districts
of [[Terminus]] and [[Wroann's Gate]].<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Fallen]] (northwest); [[Black Arch]] (east); [[Downstairs]] (bridge, north); [[Center Bridge]] (bridge, northeast); [[Mud Caves]] (below and south); [[Kenton]] (above)

Foundation is a simple residential area, home to
[[Cogs]] and caravan workers. It is a poor district, plain
and unremarkable, made from bare gray stone. 
The Four Sails restaurant is the
exception to the general rule of [[Downstairs]] that
drink comes first, food second. Known as one of
[[Sharn]]'s hidden dining treasures, regular patrons
of Four Sails claim that it has the best seafood in
Sharn. Located at the base of Seventh Tower, Four
Sails is owned by a [[Lhazaarite|Lhazaar Principalities]] named Ulfen Marcrot ([[human]]), who
certainly knows his seafood. Though he prefers not
to discuss his past with the tourists and slumming
upper-ward residents who come to Four Sails for
the dining experience, Ulfen has a colorful history
he does enjoy sharing with adventurers. Born and
raised a pirate in the [[Lhazaar Principalities]], he took
up an adventuring career later in life and has even
explored [[Argonnessen]]'s coast. 
//"Big country, Syrkarn. Lot of places for someone to hide. Just not from me.//

Fraihna is the best tracker in the steppes of [[Syrkarn]]—hard to find and
expensive to hire, but well worth both effort and price.
A lifetime in the wild has burned his leathery skin to the
color of a Syrkarn sunset, and his distinctive shock of
bleached hair is often the first indication of his approach
across the plains. Fraihna roams at an easy pace between
the farmsteads of the [[Lamecha]] Lowlands and
the clanholds of the [[Marrah|Mae-Kree]]. Messages can be passed to
him through any of the veteran drovers of the trade roads,
and such are usually returned within the month.

It's possible that Fraihna (and his enhanced hunting hound, Creysaa) could be an adversary of the PCs, hired to track them for an enemy or rival group. The
[[eneko]] ranger cares more about survival and his reputation
than about the moral particulars of a given situation. 
The Legion of Freedom reflects the ideal of war fought to end oppression. They rarely field large armies and instead use swift strikes and guerrilla war; these [[angel]]s
embody the idea of champions who fight impossible odds for a
noble cause, even if this forces them to follow ignoble paths.
When you hit with an attack using this magic sword, the target takes extra cold damage. In addition, while you hold the sword, you have resistance to fire.

In freezing temperatures, the blade sheds bright light in a 10-foot radius and dim light for an additional 10 feet.

When you draw this weapon, you can extinguish all nonmagical flames within 30 feet of you. This property can be used no more than once per hour.
Frost [[giant]]s have hair and beards that are pale white or light blue, matted with frost and clattering with icicles. Their flesh is as blue as glacial ice. They reside in [[Everice]], but the oldest among them dwell in the [[plane]] of [[Risia]]. Average height: 21 ft.
At the world's poles—[[Everice]] to the south and the Frostfell to the north—you might...

* Discover an ancient civilization hidden beneath the ice.
* Search for the survivors of a lost expedition.
*  Find the source of a mysterious mystical signal.

The Frostfell is thought to be the original homeland of
the [[dwarves|dwarf]], and some believe that an ancient nation of
dwarves still thrives under the ice. Others say that the
Frostfell was once a verdant realm until the dwarves
uncovered the prison of an [[archfiend|overlord]], which buried their
nation under endless ice. These scholars warn against
disturbing this overlord, lest a new age of ice be unleashed across the entire world. 

Mystery shrouds the poles of [[Eberron]]. A few expeditions have ventured to the Frostfell, but no one from
[[Khorvaire]] has set foot in [[Everice]] in living memory and
returned to speak of it. 

!! The Poles' Influence in Khorvaire

In [[Khorvaire]], you might...

* Clash with a cabal of winter [[warlock]]s serving a sinister power stirring in [[Everice]].
* Encounter a group of [[frost giant]]s or Frostfell dwarves establishing a foothold in Khorvaire.
* Discover a journal from a Frostfell expedition that reveals a horrifying threat.

The people of Khorvaire have no commerce with the
arctic regions and no certainty about what lives there. If
a threat comes from Frostfell, it might take time for people to identify its origin.

With this in mind, relics from Everice or the Frostfell
could take any form. Are these treasures created by [[giant]]s, [[fey]], or [[dwarves|dwarf]]? Are they carved from eternal ice,
or are they forged from dwarven steel? If the civilization
of the dwarves truly began in the Frostfell, did it fall
into ruin, or are there progenitor dwarves who possess
spells and weapons beyond anything known in [[Khorvaire]]? And how would these ancient dwarf lords react to
their [[Mror|Mror Holds]] descendants? 

!!! Trinkets from the Frostfell and Everice

| !<<dr d8>> |!Trinket |
| 1 |A small prism carved from ice that doesn't melt |
| 2 |A rusted iron coin, depicting a dwarf lord and the worlds "Five Rex Undra" |
| 3 |A pair of eight-sided dice carved from ice that doesn't melt |
| 4 |A swatch of silvery fur that's cold to the touch, possibly from a winter wolf |
| 5 |A snowball; it doesn't melt and can't be compressed into ice |
| 6 |A tiny [[white dragon]] sculpted from ice that doesn't melt |
| 7 |A key carved from ice that doesn't melt |
| 8 |A single scale from a [[white dragon]] |
This city is the capital of Clans [[Toldorath and Tordannon]], located near the shores of [[Mirror Lake]]. Some of the finest healers in the [[Mror Holds]] historically came from this city, and even today, Frosthaven's [[Jorasco]] [[enclave]] is well-renowned for clinical research using local medicinal herbs and expertise.
This seemingly endless range of mountains, formed of solid
ice, is surrounded by a sea of dense mist in this [[layer]] of [[Risia]]. Perhaps land lies
somewhere far below, or the mountains might continue down
indefinitely into the darkness. Frostmantle is the primary
home of the [[frost giant]]s of Il'Ara, who have carved citadels
from the ice of the mountains. The three largest fortresses
are called Freehearth, Remorse, and Winter. Remorse holds
many [[giant]]s who have chosen to enter icy stasis out of
eternal boredom, while Winter is the abode of Il'Ara herself.
Numerous smaller keeps are spread across the peaks, the
abodes of individual giants. [[Yeti|yeti]]s and occasionally other cold-suited creatures native to [[Eberron]] can be found in cave dwellings throughout the mountains.

Clouds hide the sky above Frostmantle, but the light is steady
and unchanging; night never falls here. Travelers must deal
with the effects of high altitude as well as the lethal cold.
The Frostwall Mountains in [[Dor Maleer]], [[Riedra]], stretch from the coast of the [[Sea of Rage]] to the [[Kelneluun]].
Imagine an ocean frozen in a single instant. There's no
sign of any shore, just waves caught mid-crest alongside
the frozen funnels of maelstroms. And scattered across the
realm, there are countless ships—vessels pulled from the
oceans of [[Eberron]] in moments when the moons were right
and [[Risia]] was coterminous. Some are shattered or wrecked,
caught halfway through the process of sinking. Others are
in perfect condition, frozen under the thinnest layer of ice.
Ships from throughout history can be found here, [[Lyrandar]]
[[elemental galleon]]s alongside massive ships built by the
ancient [[giant]]s of [[Xen'drik]]. There could be age-old survivors
here, sheltering in their trapped vessels, or a [[frost giant]]
might have raised a tower of ice above the frozen water.
But the spirits are strong here as well, preying on survivors
and pulling them down into the frozen depths.

It's always night on the Frozen Sea; the moon [[Dravago]] is
fixed in the cloudless sky, shedding dim light on the water.
After rolling dice, if your highest die is a 6, it's a full success. Things go well. You accomplish what you set out to accomplish, either with no associated [[consequence]]s or with some added bonus.

Rolling two or more 6's is a ''critical success'', and grants you some additional bonus. 

<<<
Side note: You can only roll a critical if you are rolling at a +2 or higher; if you are at zero or negative dice, and therefore are rolling two dice and taking the single lowest result, you don't get a critical if you roll two 6's.
<<<
The Fury is a silent whisper that can drive you to doubt or
despair. She is reckless rage and all-consuming passion.
Instinct is the voice of the Fury, guiding us when rational
thought fails. And she is the Sovereign of revenge, promising
vengeance to those willing to surrender to her. Her father
the [[Devourer]] embodies the devastating power of the storm
outside us; the Fury is the storm that rages within us, the
wild emotions we fight to control.

Devotees of the Fury generally follow one of two paths.
Revelers believe that suppressing emotion causes anguish,
and that people should embrace their emotions fully
and act on impulse and instinct. They hold wild, ecstatic
celebrations as a way for participants to throw off the
chains of civilization for a moment and experience
life and emotion fully. A player character who follows
this path might be a Berserker barbarian or a [[bard]]
using the College of Glamour—either embracing their own primal emotion or
inspiring it in others. A [[sorcerer]] might attribute their power to
wild emotion; they can only access their magic when they let
the Fury guide them.

The other path of the Fury is the road of revenge. People
who have suffered grievously can call on the Fury to give them
the will and strength to take vengeance into their own hands.
Or rather than seeking revenge themselves, one tradition calls
for someone who has been wronged to place a red candle in
a window, inscribed with the name of their tormentor. This is
an invitation for the Fury to take vengeance on their behalf.
A player character following this path could be charged to
investigate and fulfill these calls for revenge. While this could
be the path of a [[cleric]] or [[paladin]], it could just as easily suit an
assassin, a [[bard]] of the College of Whispers, or a [[warlock]].

The fury's symbols include a winged wyrm with woman's head and arms.
The Gaala River in [[Adar]] flows into the [[Jathara Sound]] near [[Kasshta Keep]].
Every rule has its exception, and
[[Torchfire]]'s reputation for lowbrow entertainment
is broken by Gailan's. The model of the restaurant
and dinner theater (copied extensively in [[Middle Menthis]] particularly) originated with the innovation of Gailan Uthran ([[half-orc]]),
who felt he could put on better shows if the audiences had something to do besides heckle the performers. His idea has clearly worked, and performing in
Gailan's is now the dream of every chorus member
in [[Ten Torches]]—the first step toward a successful
musical career. 
By general consensus, one of
the finest restaurants in [[Sharn]] is Galdin's Garden.
An elegant setting for a fine meal situated at the top
of [[Seventh Tower]], a garden of exotic and fragrant
flowers, particularly roses and orchids, surrounds
the establishment. Both indoor and outdoor seating
is available, and some of the tables offer views of the
distant ocean to the south on (the relatively rare)
clear days. The menu consists of spicy [[Brelish|Breland]] offerings, while the wine list includes the best vintages
from the [[Eldeen Reaches]] and [[Aundair]].
The metallic head of this javelin is embellished with three small wings. When you speak a command word while throwing this magic weapon, a swirling vortex of wind follows its path through the air, extending 10 feet from the javelin's path. Creatures hit by the wind or by the javelin who can't resist the wind are pushed backward, and possibly knocked prone.
''Capital:'' [[Thronehold]]

In the modern age, the greatest power was the kingdom of Galifar, which covered most of the continent of [[Khorvaire]]. After a century of [[civil war|Last War]], Galifar is no more, carved into separate nations as defined by the [[Treaty of Thronehold]].

[[Karrn the Conqueror]] failed to unite [[Khorvaire]] by force, but
centuries later, his descendant [[Galifar ir'Wynarn]] succeeded
through might and clever diplomacy. Galifar didn’t just want
power—he wanted to build a better world, and on many
levels, he succeeded. He abolished slavery and instituted
laws that promised justice for all. Over time, the kingdom
would promote public education and the rise of the merchant
class. It can be argued that Galifar stumbled in giving the
[[dragonmarked house]]s too much economic power; while the
[[Korth Edicts]] prevent dragonmarked heirs from holding lands
or titles, they also lay the foundation for the near-monopolies
the houses hold today.

Galifar can also be faulted for his precarious system of
succession. By this tradition, the children of the reigning
monarch served as governors of the [[five provinces|Five Nations]], with the
eldest governing [[Cyre]]. The previous governors served as
regents until an heir came of age, at which point they were
expected to step aside. This system led to multiple rebellions
and attempted secessions over the course of history, the [[Last War]] simply the largest and last of them.

!! Why Does It Matter?

A century of brutal war has divided the people of the [[Five Nations]], but they are still united by a host of common laws and
customs—the legacy of Galifar. And there are still many who
look back to Galifar as a golden age, who would be willing to go
to war again for a chance to return to that supposed paradise.

Many of the institutions that define the nations—the [[Arcane Congress]], the [[King's Citadel]], [[Rekkenmark Academy]]—were
originally dedicated to the common good of Galifar. Members of
the longer-lived races, such as [[elves|elf]] and [[dwarves|dwarf]], likely trained
at these institutions, regardless of the nations they serve today.
King Galifar ir'Wynarn ([[-45 YK—53 YK|Khorvaire calendar]]) was the founder of the Kingdom of [[Galifar]]. He was succeeded by his youngest (but oldest surviving) child [[Cyre ir'Wynarn]]. Galifar's kingdom would span the continent of [[Khorvaire]] for almost 900 years before the [[Last War]] sundered the nation.
The [[Lhazaar Principalities]] developed during the same period
when the [[Five Nations]] were formed, more than a thousand
years before the birth of [[Galifar]]. By the time King [[Galifar I|Galifar ir'Wynarn]] was uniting the Five Nations, the Principalities were well
established, as was their inhabitants’ well-deserved reputation as raiders and pirates. When Galifar proclaimed that his kingdom “stretched across the width and breadth
of [[Khorvaire]],” the Lhazaar princes ignored him. Their
domains were far from the great cities of the Five Nations,
separated by a formidable [[mountain range|Ironroot Mountains]] and the endless seas over which the princes ruled supreme.

By 28 YK, King Galifar had fortified his hold over the
[[Five Nations]] and turned his attention to the threat from
the east. The Lhazaar princes and sea barons were wreaking havoc among the coastal communities, interfering with
shipping and refusing to bend to the will of the crown.
Thus began the Galifar-Lhazaar War, a series of naval
engagements that lasted nearly a decade. The sea barons
knew the currents better and started out with better vessels,
but Galifar dedicated his efforts to building a powerful
navy. Aided by magic and the help of some of the [[dragonmarked house]]s, Galifar was able to garner enough victories to force the Lhazaar princes to meet to discuss terms. In the end, the Principalities became part of Galifar’s kingdom but remained autonomous, the Lhazaar princes more or less independent within their own domains yet agreeing to
pay tribute to Galifar and recognize him as the legitimate ruler of the mainland kingdom.
This Chosen supposedly rules [[Mokush]], though she is lazy
and decadent, and very resentful of being housed with
[[ogre]]s. Her tedious nature, lack of focus and discipline,
and childish petulance have gained her no friends in
the courts of [[Riedra]]. Now, she feels she has wasted her
life and deserves her exile. She has given up. Only when
[[Yrnuxi]] assumes Galshani's form does the lady of Mokush
seem interested in goings on in the town. 
The Garden of [[Irian]] lives up to its name; it's a vast zoological garden
filled with foliage. It contains every plant that can be found
in the Material Plane, along with many that can't. There
are winding paths, peaceful pools, wondrous topiaries, and complicated hedge mazes. In contrast to the wilds of [[Lamannia]],
this is very carefully cultivated. The Garden is suffused with a
sense of peace, beauty, and the wondrous things life can create. It is the realm of the [[Gardener]], an [[Architect]] whose principle is life.

The many layers of the Garden realm showcase various
elements of fertility and the triumph of life. There are a few
layers that are slightly darker than the rest of [[Irian]], though still
suffused with dim light in their darkest corners—these reflect
the principle that life overcomes hardship. The message of the
ruined castle isn't to dwell on the destruction, but to see the
flowers blooming on the walls. Most of the [[ember]]s in the region
take animal form, and [[ki-rin]] are the most common [[celestial]]s.

The Gardener, an [[Architect]] whose defining principle is life, tends the [[Garden]] of [[Irian]]. He's a blend of [[angel]] and plant—more
[[humanoid]] than [[treant]], but with skin of bark, a beard of leaves,
and a crown of flowers. Like all of the Architects, he's devoted
to his planar seeds, but he also spends time wandering the
garden, both tending it and appreciating its wonders. He
appreciates those who nurture and heal others, and this is
the behavior he expects of any mortals he associates with.
Each ward in the [[Riedra]]n city of [[Dar Jin]] includes a
place for people to come and meditate. These gardens
of reflection contain lovely foliage, but the primary
attractions are the mosaics of crystal and [[sentira]]. These
psiactive displays hold specific emotional chords; [[Riedrans]] focus on these mosaics to clear their own thoughts.

Priests of the [[Path of Inspiration]] are always present, willing to offer spiritual guidance to anyone in need—even troubled outlanders. Those who undergo meditation with a priest occasionally have guiding dreams the following night; this could be the work of manipulative [[quori]], a [[dreamtouched]] scion using [[dream of contact]], or the
spirit of [[Riedra]] itself, if such a thing exists. 
The inanimate gargoyles that perch atop great buildings are inspired by these malevolent creatures of elemental earth that resemble grotesque, fiendish statues. 

Gargoyles are likely native to [[Eberron]], though some scholars hypothesize they are creations of the [[daelkyr]] [[Orlassk]]. They can be found throughout [[Khorvaire]] (but especially [[Droaam]]), as well as [[Xen'drik]].

!! Gargoyles in Droaam

Since the rise of the [[Daughters|Daughters of Sora Kell]], gargoyles have
been deployed across [[Droaam]]; they are also favorite recruits
of House [[Tharashk]]. Civilian gargoyles serve as messengers
and couriers, while most warlords also have a unit of combat-ready gargoyles that serve as scouts and rapid response. As
[[elemental]]s, gargoyles don't eat, sleep, or drink, and they can
remain motionless for months or years. While gargoyles have
traditionally been depicted as cruel predators, the fact is that
they love the //thrill// of hunting. They yearn for challenge, and
love riddles and puzzles almost as much as hunting prey. 
You transform a willing creature you touch, along with everything it's wearing and carrying, into a misty cloud for up to one hour. The spell ends if the creature is incapacitated. An incorporeal creature isn't affected.

While in this form, the target's only method of movement is flying (about 2 mph without wind). The target can pass through small holes, narrow openings, and even mere cracks, though it treats liquids as though they were solid surfaces. 

While in the form of a misty cloud, the target can't talk or manipulate objects, and any objects it was carrying or holding can't be dropped, used, or otherwise interacted with. The target can't attack or cast spells.

''District Type:'' Tenement district<br/>
''Buildings:'' Poor residences (240)<br/>
''First Impression:'' The great gate from which this
district takes its name was stripped of its gilt plating
many centuries ago. Old mansions and towers that
once belonged to wealthy lords and merchants have
been converted into tenement housing for the poor,
and the inhabitants appear lean and hungry.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Oldkeep]] (northwest); [[Malleon's Gate]] (north); [[Callestan]] (southwest); [[Ashblack]] (below); [[Hareth's Folly]] (above)

Once home to many of the founding families of
[[Sharn]], Gate of Gold is now little more than a slum.
Small and wretched townhomes crowd the crime
ridden, extremely dangerous district. 
The [[Arcanix]] towers house strange
artifacts and relics, but few compare in size and scope
to the Gate of Xabra. A circle of menhirs sits atop one
of the residential towers. The standing stones, and
indeed the very earth they rest upon, came to Arcanix
from an ancient [[Q'barra]]n ruin ages ago after the mages
discovered that the stones could bridge the [[plane]]s. On
each stone is a magic rune. When the stones are activated in a specific sequence, everything inside the ring
is whisked to another plane. Concentrated research
has uncovered a few sequences so far, sometimes with
disastrous results, but the studies continue.
In Carosten Park, near the edge of the plateau, stands a small stone building. Passersby generally assume the building belongs to the park caretakers and pay it no heed, but it is actually a sacred site to the sect of [[druid]]s known as the [[Gatekeepers]]. From this small shrine in the midst of a “natural” site in the City of Towers, the Gatekeepers monitor the [[manifest zone]], the [[sewers]] and ruins below, and the activity of powerful spellcasters in Sharn to ensure that no dangerous planar breach appears in the city. They are not overly concerned with ordinary summoning spells and have little worry that the angels of [[Syrania]] are planning an invasion of the Material Plane, but they are deeply worried about recent events in the Depths.
//We, the Gatekeepers, protect the natural world from the forces that come from outside it, from those beings that slither in from the darkness beyond. //

The Gatekeepers are a [[druid]]ic sect dedicated to protecting the natural world from unnatural forces. They battle
[[aberration]]s and guard against extraplanar invasions
and the release of ancient evils.

The Gatekeepers maintain the oldest druidic tradition on [[Khorvaire]]. Over fifteen thousand years ago, the [[dragon]] [[Vvaraak]] came to the [[Shadow Marches]]
and gathered a following from among the [[orc]]s of the
region. In her studies of the [[Prophecy|Draconic Prophecy]], Vvaraak had
foreseen a great threat that could be stopped only by
the younger races. So she taught the orcs the secret
language of the natural world and showed them how
to work with stone and soil, and how to read the future
in the movement of the Ring of [[Siberys]]. She charged
her students to remain ever vigilant against the threat
that was to come, and to protect nature from those that
would corrupt it. 

Thousands of years later, the [[daelkyr]] opened gates from the plane of [[Xoriat]] and unleashed hordes of [[mind flayer]]s, [[beholder]]s, and other foul creatures into the world. The conflict that followed destroyed
the [[goblin]] empire of [[Dhakaan]], and the daelkyr's invasion left scars across [[Khorvaire]]. Ultimately, Vvaraak's students sealed the gates and imprisoned the daelkyr
in [[Khyber]]. Even after this triumph, the orcs couldn't be
sure if they had turned back the threat Vvaraak had foreseen, or if a greater danger lay ahead. So, in addition to
guarding the [[seals|dimensional seal]] that bind the daelkyr and keep Xoriat
at bay, the Gatekeepers remained vigilant against the
possibility of worse to come. 

In the millennia since that struggle ended, the Gatekeepers have shared Vvaraak's wisdom and druidic
magic with [[human]]s, [[shifter]]s, and others who came
to Khorvaire. New interpretations of Vvaraak's teachings gave birth to new druid sects: the [[Wardens of the Wood]], the [[Greensingers]], and the [[Ashbound]]. Today, the
Gatekeepers are one of the smaller sects, and many of
the sites of their long-ago battles have been abandoned
and forgotten. But some Gatekeepers still remain in the
[[Shadow Marches]] and the [[Eldeen Reaches]], continuing
their vigil to this day. 

!! The Gatekeepers in the War

The [[Last War]] had only minimal impact on the Gatekeepers, and vice versa. The druids' primary concern was to prevent military activity from disrupting the seals
they guarded. Occasionally the Gatekeepers attacked
groups of scouts or military patrols, driving them away
to ensure that battles didn't erupt in their vicinity. Sometimes the Gatekeepers failed in those efforts, and [[Xoriat]]'s corruption spread over some remote regions while
the war raged around them. 

!! Gatekeeper Seals

The [[seals|dimensional seal]] forged by the Gatekeepers have a variety of
purposes and forms. Some are tied to specific [[daelkyr]],
keeping those individuals bound in [[Khyber]] and stripping them of some of their powers. Others ward against [[aberration]]s in general, or suppress the influence of the
plane of [[Xoriat]]. Some seals are amulets, objects that can be carried and stolen. It's said that one of the seals is a druidic bloodline, and it will last until the last member of the line is slain.

The most common form of Gatekeeper seal is a great stone slab set into the ground or a cavern wall. It is carved with mystical symbols that hedge out the influence of [[Xoriat]] and maintain the barrier. Often, druidic trappings and dwellings surround it. 

A seal is a protected site, usually attended at all times
by Gatekeepers who live at or near the seal. A circle of standing stones serves to focus the magic of the area toward the seal itself, and the stones also serve as a place of
worship for the druids' devotions and ceremonies. 

!!! Gatekeeper Seal Adventures

The location of a Gatekeeper seal might be the site of
an adventure's climax, or the characters might need to
find one in order to consult with the guardians there.
The table below presents some
possibilities.

| !<<dr d4>> |!Adventure Goal |
| 1 |Deliver a specially treated Khyber [[dragonshard]] to the Gatekeepers to repair a widening crack in the seal. |
| 2 |Petition the keepers of a seal for information on an [[aberration]] that has been terrorizing the countryside. |
| 3 |Assist the Gatekeepers in an annual ritual that will reenergize the seal and keep it shut for another year. |
| 4 |Escort a new Gatekeeper guardian safely to the seal after its previous guardians were corrupted. |

!! Gatekeeper NPCs

Gatekeepers are sworn to protect the world, and thus
are more likely to be encountered as allies than as enemies. It's always possible, though, for even noble Gatekeepers to fall prey to madness and corruption, thus
becoming the very evils they are sworn to fight.

| !<<dr d4>> |!NPC |
| 1 |The spirit of a long-dead Gatekeeper lives on in the body of an ancient toad. It speaks in a deep, croaking voice. |
| 2 |A [[half-orc]] Gatekeeper works in House [[Tharashk]] as an investigator, searching for signs of planar disturbances. |
| 3 |A [[human]] Gatekeeper is on a pilgrimage, carrying an amulet that serves as a seal on a journey to a number of sacred sites to restore its power. |
| 4 |An old [[orc]] ranger is murdering people in [[Sharn]], claiming that they've been corrupted by the [[daelkyr]]. |

!! Gatekeeper Campaign Themes

The Gatekeepers are the remnants of an ancient order. Once they saved the world. Now they are all but forgotten, and the world needs saving again. The surviving Gatekeepers might not have the strength to win the fight alone, and that's where adventurers come in. Gatekeepers can serve as patrons or advisors, providing crucial information or setting the adventurers on the proper path. They can also come to the rescue of adventurers who are close to being overwhelmed by [[mind flayer]]s or [[dolgaunt]]s.

At certain points in a campaign, the Gatekeepers might seem to be villains. The druids' mission to protect their seals and to oppose the rise of [[aberration]]s is of the utmost importance. Anyone who threatens a seal or assists the machinations of the [[daelkyr]], no matter how unwittingly, risks making relentless enemies in the Gatekeepers. A simple shift in circumstances, such as the death of a noble that causes ownership of a trackless
parcel of land to change hands, could bring the characters into sudden conflict with the Gatekeepers. 

!! Gatekeeper Adventure Hooks

Gatekeepers can be at the center of any number of potential stories. The table below offers some options.

| !<<dr d8>> |!Gatekeeper Adventure Hook |
| 1 |While pursuing rumors of [[lycanthrope]] activity, the characters discover a good-aligned werebear that is working with the Gatekeepers to stop an incursion from [[Khyber]]. |
| 2 |A Gatekeeper seal in the form of a stone tablet falls into the characters' hands. They must return the seal to the Gatekeepers before its magic fades. |
| 3 |A logging operation is moving close to the area protected by a seal, and the party must convince the loggers to relocate before their work touches off a conflict with the Gatekeepers. |
| 4 |Working with an agent of the [[Chamber]], the Gatekeepers are convinced the actions of the characters will bring a [[daelkyr]] one step closer to freedom. |
| 5 |The characters discover evidence suggesting that the rituals performed by the local Gatekeepers are weakening their seal, not empowering it. |
| 6 |Pilgrims traveling through a forest draw the attention of Gatekeepers, who think they are spies sent to sabotage the nearby seal. |
| 7 |One of the kidnapped victims who was rescued from a marauding band of [[aberration]]s turns out to be a Gatekeeper initiate. |
| 8 |The adventurers are sent to the [[Mror Holds]] to investigate the activity of [[Dyrrn]] the Corruptor and uncover a daelkyr cult among the dwarves. |
This [[densewood]] structure is the physical and spiritual heart of [[Shae Lias]].
Dedicated to the [[Undying Court]], it serves as crypt,
temple, and embassy. Citizens of [[Aerenal]] who die in [[Sharn]] are embalmed in the Gates and preserved
until their remains can be transported back to the
island kingdom. [[Mayne Jhaelian]] and the other
priests act as spiritual advisers and political ambassadors, performing in the interests of citizens of Aerenal. Jhaelian has ties to the [[Deathguard]] of Aerenal, and it is possible that he might ask adventurers
to help resolve a situation involving the [[Blood of Vol]]
or other [[undead]] menaces. 
The Gates of Sorrow is a bay off the southwest coast of [[Aerenal]].
Built into a rocky outcropping along the eastern shore of [[Lake Cyre]], Gatherhold has space for 15,000 or more [[halfling]]s, though its population approaches that number only a few times a year. Fewer than 2000 residents live here full time, and these are nearly all representatives of the [[dragonmarked house]]s.

House [[Ghallanda]] built and maintains Gatherhold,
both as its [[headquarters|Ghallanda Enclave]] and as a place where all
the [[Talenta|Talenta Plains]] tribes might gather and meet as equals.
Gatherhold’s houses are for the use of visitors from
other parts of [[Khorvaire]]. Years ago, people came by boat through [[Cyre]]; now
the [[Mourning]] has cut off that passage. The [[halfling]]s prefer to put
up their tents along the surrounding hills rather than
stay cooped up inside “boxes,” as they call even the
most lavish set of rooms.

House [[Jorasco]] has a strong presence in Gatherhold,
though its [[headquarters|Vedykar Enclave]] was moved years ago to
[[Vedykar]] in [[Karrnath]]. Many Talenta halflings resent
what they see as Jorasco’s abandonment of their homeland and values for the world of the human cities. However, the house continues to operate a handful of
mobile clinics that travel throughout the Plains, dispensing healing and comfort to the tribes they meet.

At least three times a year, Gatherhold hosts a
meeting of the tribal council. All tribes are welcome
to attend, but attendance by the [[lathon|Lathon Halpum]] and the //laths//
of the five largest tribes is mandatory. During the five
or ten days that the council remains in session, the
town’s population swells as a continuous stream of
tribes passes through.
A great [[Ghallanda]] stronghold on the eastern shore of [[Lake Cyre]], the cliff dwellings of [[Gatherhold]] are the jumping-off point for many an adventure in
eastern [[Khorvaire]]. The ramps that connect one cliff
dwelling to another are always teeming with nomadic
[[Talenta|Talenta Plains]] tribesmen, caravans en route to [[Valenar]] or
[[Q'barra]], or adventurers embarking on expeditions
into the eastern [[Mournland]]. The house’s baron,
[[Yoren d'Ghallanda]], has his personal domain deep in
the cliff-tunnels.
The [[Adarans]] and [[kalashtar]] are concentrated on the northern edge of [[Overlook]]. Adaran citizens have pooled their resources to
rent a large hall, the Gathering Light, that serves as
an anchor for the community. During the day, the
hall functions as a school, where people come to study
kalashtar martial arts and meditation techniques.
In the evenings, the people gather to celebrate their
heritage. Activities at the gatherings vary considerably. Some nights song, dance, or other forms of
art play a dominate role, while other nights involve
serious discussions of philosophy, metaphysics, or
current events.

[[Selkatari]] oversees martial training and monastic discipline at the
Gathering Light, while [[Hanamelk]] serves as the resident scholar
and sage. These two also work together to protect the
community from crime and violence, using diplomacy
when possible and force when reason fails. 
House [[Deneith]] has carefully reestablished relations with the
Lhesh [[Haruuc|Haruuc Shaarat'kor]], leader of the insurrection that led to the founding of [[Darguun]]). This relationship is one
of convenience: Darguun gets diplomatic legitimacy through the association, and
House Deneith gets a steady stream of
[[goblin]] mercenaries. But some within
the house are still bitter about Haruuc’s
insurrection; the [[enclave]] in Darguun is
a tense place to do business.

This fortress [[enclave]] sits just outside the city of [[Rhukaan Draal]], and serves as a staging area for [[goblin]] mercenaries who wish to work
for the house. It provides a stable and secure haven for
travelers passing through the region, provided you're on
good terms with House Deneith. Many [[Blademarks|Blademarks Guild]] receive their initial training in large-unit tactics here.

This fortress is one of two parts of the [[Rhukaan Draal]] enclave. The other is a diplomatic stronghold within Rhukaan Draal called Fort Cail, named after Lord Cail d’Deneith, who first recruited goblins to fight under the Deneith banner more than a century ago.
While you wear both of these steel gauntlets, any non-magical weapon you grasp with either gauntlet is treated as a magic weapon. You can use the gauntlets to cause magical flames to envelop one or two melee weapons in your grasp. The flames last until you sheath or let go of either weapon.
While wearing these gauntlets, your physical strength is like that of an [[ogre]].
These solid, heavy gauntlets are made of intricately forged silver, [[byeshk]], and tiny Khyber [[dragonshard]]s. 

The wearer can cast [[dispel magic]] on a creature conjured from another [[plane]], banishing that creature to its native plane. In addition, if the wearer uses the gauntlet to touch an [[immortal]] native to a different plane as it dies, the time before the immortal can be reborn is doubled.
This pair of gauntlets is covered in black scales that glitter with a violet sheen. While wearing these gauntlets, the wearer can speak a command word to shroud the gauntlets and whatever weapon they are holding in a faint black mist. Anything attacked by this weapon rapidly decays, suffering additional necrotic damage. Any small plants or animals touched by the gauntlets while they are active immediately wilt away and die.
This pair of gauntlets are made of plates of tarnished iron and a deep black leather made from [[Mabar]]an [[quintessence]]. The wearer can sacrifice some of their own life force to the gauntlets in exchange for enhanced strength and dexterity in battle. The more life sacrificed, the greater the bonus. The wearer can make the sacrifice as often as they like, but the effects only last for ten minutes.
A gauth is a hungry, tyrannical [[beholder]]-like creature that feeds on magic. Its body is about 4 feet in diameter, with six eyestalks, a central eye (sometimes surrounded by multiple smaller eyes), and four small grasping tentacles near its mouth. It has color and texture variations similar to a true beholder.

''//Magical Metabolism.//''A gauth can survive on meat but prefers to sustain itself with power drained from magical auras and [[objects|magic item]]. If starved of magic for several weeks, it is forced back to its home [[plane]] of [[Xoriat]], so it constantly seeks new items to drain. A gauth might employ creatures to serve it by bringing it items that provide it with sustenance. 

When a gauth is killed, the magical energy within it explodes, blasting everything within 10 feet with force damage as well as a completely unpredictable array of spell effects.

//''Accidental Summoning.''// When the ritual to summon a [[spectator]] goes wrong, a gauth might push itself through the flawed connection, arriving immediately or several minutes later. It might present itself as a [[beholder]] to ignorant creatures in an attempt to intimidate them, or as a spectator to its summoner in order to drain [[magic item]]s it is expected to guard.
This wooden gavel is nearly the size of a warhammer in human hands. 

You can use the gavel to strike a point on a hard surface. The first time in the next minute that a creature within 60 feet of that point deals damage to another creature with an attack that hits, the attacker suffers psychic damage equal to the damage it dealt to the target. The gavel can create this effect a few times each day before it must recharge.
A gazer is a tiny manifestation of a [[beholder]]'s dreams. It resembles the beholder who dreamed it into existence, but its body is only 8 inches wide, and it has only four eyestalks. It follows its creator like a devoted, aggressive puppy, and sometimes small packs of these creatures patrol their master's lair for vermin to kill and lone creatures to harass.

A gazer can't speak any languages but can approximate mimicking words and sentences in a high-pitched, mocking manner. [[Beholder|beholder]]s find gazers amusing and tolerate their presence like spoiled pets. A gazer can't be tamed by anyone but its creator, except through the use of magic or by bonding with a spellcaster. Some beholders with [[wizard]] minions insist they take a gazer as a [[familiar]] because they can see through the eyes of these creatures.
This spell takes 1 minute to cast. You place a magical command on a creature that you can see within 60 feet, forcing it to carry out some service or refrain from some action or course of activity as you decide. If the creature can understand you, and if it cannot resist your enchantment, it becomes charmed by you for up to 30 days. While the creature is charmed by you, it experiences agonizing psychic pain each time it acts in a manner directly counter to your instructions, but no more than once each day. A creature that can't understand you is unaffected by the spell.

You can issue any command you choose, short of an activity that would result in certain death. Should you issue a suicidal command, the spell ends.

You can end the spell early by choosing to dismiss it. A [[remove curse]] or [[wish]] spell also ends it.

If you are able to cast legendary-tier spells, you can cast this as such to extend the duration to 1 year.
Gelatinous cubes, [[ooze]]s that usually take the form of a cube about 10 feet to a side, scour dungeon passages in silent, predictable patterns, leaving perfectly clean paths in their wake. They consume living tissue while leaving bones and other materials undissolved.

A gelatinous cube is all but transparent, making it hard to spot until it attacks. A cube that is well fed can be easier to spot, since its victims' bones, coins, and other objects can be seen suspended inside the creature.
When you activate this gem, you have [[truesight]] out to 120 feet when you peer through it. The gem has 30 minutes of charge, and each time you activate it, it stays activated for minimum of 10 minutes.

Genies are rare elemental creatures out of story and legend. Only a few can be found on the Material Plane. The rest reside on the other planes, namely [[Fernia]] and [[Thelanis]], where they rule from lavish palaces and are attended by worshipful slaves.

Genies are as brilliant as they are mighty, as proud as they are majestic. Haughty and decadent, they have a profound sense of entitlement that stems from the knowledge that few creatures except the gods and other genies can challenge their power.

A genie is born when the soul of a sentient living creature melds with the primordial matter of an elemental plane. Only under rare circumstances does such an [[elemental]]-infused soul coalesce into a manifest form and create a genie.

A genie usually retains no connection to the soul that gave it form. That life force is a building block that determines the genie's form and apparent gender, as well as one or two key personality traits. Although they resemble [[humanoid]] beings, genies are elemental spirits given physical form. They don't mate with other genies or produce genie offspring, as all new genies are born out of the same mysterious fusion of spirit energy and elemental power.

Some genies can veil themselves in illusion to pass as other similarly shaped creatures. The most potent genies, such as those among the nobility, are able to cast [[wish]] on the behalf of a mortal.

!! Types of Genie

<<list-links-article "[tag{!!title}sort[title]]">>
Gerazan Sandaili is a master weaver in [[Nderitese]],
[[Syrkarn]]'s largest settlement. He has lived in Syrkarn
since fleeing [[Riedra]] some fifteen years ago, but unknown
to even those closest to him is the full story of the life
he led there. A secretly practicing [[psion]], Gerazan was
a member of the [[Broken Throne]], studying the mental
techniques of old [[Dor Maleer]]. As a law-abiding [[Riedran|Riedrans]],
Gerazan fully expected to be punished should his gift be
discovered. What he hadn't counted on were agents of
the [[Thousand Eyes]] slaying his wife and child when they
finally came for him.

Gerazan is now part of the Watch—an unofficial organization of Riedran refugees who make it their business to
uncover agents of the [[Inspired]] in [[Syrkarn]]'s larger centers.
No stranger enters [[Nderitese]] without passing through
the market corner. No stranger leaves the market corner
without having come under Gerazan's watchful eye. 
The Ghaal River in [[Khorvaire]] flows from the [[Seawall Mountains]] in [[Darguun]], past [[Rhukaan Draal]], and into the [[Kraken Bay]].
The Ghaal'dar [[goblinoid]] tribes arose from the remnants of the
[[Dhakaan]]i Empire. [[Hobgoblins|hobgoblin]] are the leaders of the
Ghaal'dar, enforcing their will on their [[goblin]] and [[bugbear]] peers; in fact, the Dhakaani word "ghaal'dar" simply means "hobgoblin". The history of the Ghaal'dar is filled with strife; when they weren't fighting [[Galifar]] or [[Zilargo]], the
tribes usually turned on one another. This came to an
end with the [[Last War]]. House [[Deneith]] hired Ghaal'dar
mercenaries, and this gave focus to the divided tribes.
A brilliant hobgoblin, [[Haruuc Shaarat'kor]], united the Ghaal'dar,
and under his leadership they seized control of what is
now [[Darguun]]. The aging Lhesh Haruuc
remains as the ruler of Darguun, and many fear that his
death could throw the region into chaos.

The Ghaal'dar are an alliance of tribes. The Lhesh Haruuc belongs to the largest of these, the Rhukaan Taash. The name means “Razor Crown,” and a line of
scars encircles the head of each Rhukaan warrior, the
result of a ritual marking when a hobgoblin becomes
a soldier. The Lhesh Haruuc has greatly improved the
lives of his people, but unless he finds a capable successor, the Ghaal'dar chieftains seem certain to turn
on one another once he is gone.
This three-foot warhorn, a revered artifact of [[Dhakaan]], is carved
from the tip of a [[red dragon]]'s horn, banded with [[adamantine]],
and covered with runes of power. An inscription in Goblin reads
“A mighty dirge for the fallen foe.” Ghaal'duur was crafted by
[[Jhazaal Dhakaan]], a legendary [[dirge singer]] who united the
ancient warring clans. Any kech warlord who obtained it would
gain great influence among the [[Heirs of Dhakaan]]—and any non-Dhakaani that possesses it bears a dangerous burden.

The wielder of this horn's natural charisma is greatly enhanced by the presence of Jhazaal's spiritual aura. Blowing the horn magically inspires all allies who hear it (especially [[goblinoid]]s), and disheartens all foes who hear it.
The Ghaash'kala (a name that roughly translates as "ghost guardians") [[orc]] tribes dwell in the [[Labyrinth]] of the [[Demon Wastes]], and believe they have a sacred duty to prevent evil from escaping that blasted land. They act to keep travelers from entering the Wastes, and consider anything that emerges from the Wastes (including barbarians of the [[Carrion Tribes]] or even travelers returning from an expedition) to be hopelessly tainted, and they strike against such creatures without warning or mercy.

The Ghaash'kala worship an entity they call Kalok Shash, the "Binding Flame." This is the same ancient divine force that channelers of the [[Silver Flame]] have access to, but the traditions are entirely separate; their faith predates [[human]] civilization itself. Kalok Shash is a harsh faith that requires all able-bodied folk to fight in the endless war against the forces of darkness.

The four clans of the Ghaash'kala are: 

* the ''Jaasakah''
* the ''Kastar''
* the [[Maruk]]
* the ''Vanka''

The clans consist of mostly orcs, but [[half-orc]]s, [[human]]s, and even a few [[tiefling]]s can be found among their numbers.

Each clan has two leaders: the //kizshmit//, the chieftain and war leader, and the //sar'malaan//, the spiritual leader who communes with the Binding Flame and offers guidance.

The Ghaash'kala risk their lives every day to
protect all mortals from the evils of the Wastes. They typically
consider the people of “the south”—meaning everywhere
south of the Demon Wastes—to be weak and naive, but still
see it as their duty to protect these innocents from evil. They
don't care that they receive no acknowledgment for their
eternal vigilance; it is a war that must be fought.
This ceramic jug appears to be able to hold a gallon of liquid and weighs 12 pounds whether full or empty. Sloshing sounds can be heard from within the jug when it is shaken, even if the jug is empty.

A person with the [[Mark of Hospitality]] can name one liquid from the table below to cause the jug to produce the chosen liquid. Afterward, they can uncork the jug and pour that liquid out, up to 2 gallons per minute. The maximum amount of liquid the jug can produce depends on the liquid they named.

Once the jug starts producing a liquid, it can't produce a different one, or more of one that has reached its maximum, until the next dawn.

|!Liquid |!Max Amount |
|Acid |8 ounces |
|Basic poison |1/2 ounce |
|Beer |4 gallons |
|Honey |1 gallon |
|Mayonnaise |2 gallons |
|Oil |1 quart |
|Vinegar |2 gallons |
|Water, fresh |8 gallons |
|Water, salt |12 gallons |
|Wine |1 gallon |
''Leader:'' [[Yoren d'Ghallanda]]<br/>
''Headquarters:'' [[Gatherhold Enclave]] ([[Gatherhold]], [[Talenta Plains]])<br/>
''Dragonmark:'' [[Mark of Hospitality]]

//Welcome, welcome! So good to see you again. Let me get your drink—blackroot tal with honey, yes? And then you have to listen to this story I've heard about the strange things going on in the Cogs.//

<div align="right">—Alara d'Ghallanda, halfling bartender</div>

The majority of inns, taverns, and restaurants in the
[[Five Nations]] are either directly owned by House Ghallanda or licensed by its Hosteler's Guild. Most people
give little thought to House Ghallanda; when compared
to the soldiers of House [[Deneith]] and the factories of
House [[Cannith]], an alliance of innkeepers seems harmless and inconsequential. But Ghallanda's strength lies
in charm and connections. A Ghallanda innkeeper hears
many things—if you want to know what's really going
on in a community, talk to the [[halfling]] bartender. The
leaders of House Ghallanda don't sell information; they
prefer to build friendship and deal in favors. But should
a Ghallanda baron ever truly need something, they likely
have a favor they can call in.

Ghallanda has a number of "bound businesses"—franchises run directly by the house. The [[Gold Dragon Inn]] is such a business, with Gold Dragon Inns being found in every major city, each serving a familiar menu and providing similar services. But many Ghallanda heirs take
pride in creating their own unique businesses. There are
also many independent restaurants, inns, and taverns
licensed by House Ghallanda. The [[blink dog]] emblem is
an assurance that a locale meets Ghallanda standards of
health and quality—but not every inn is run by a [[halfling]].

House Ghallanda's mandate extends beyond providing
creature comforts to travelers. Every one of the house's
[[enclave]]s—which are more numerous than those of any
other [[dragonmarked house]]—is a sanctuary beyond the
legal reach of any government or [[dragonmarked house]].
Baron [[Yoren|Yoren d'Ghallanda]] and his daughter [[Chervina|Chervina d'Cannith]] have greatly expanded the house's presence even in remote areas such as the edge of the [[Demon Wastes]], guided by their study
of the [[Draconic Prophecy]]. 

!! History of House {{!!title}}

More than 3,000 years ago, the [[Mark of Hospitality]] started appearing
among the nomadic [[halfling]] tribes of
the [[Talenta Plains]]. Those who manifested the mark tended to congregate
together and eventually took the name
Ghallanda, meaning “helpful hounds.”
Moving from oasis to outpost across
eastern [[Khorvaire]], the Ghallandas
offered food and shelter to any fellow
travelers, and they were instrumental
in quelling feuds, monster depredations,
and other local concerns at each stop.

When [[Karrn the Conqueror]] explored the [[Talenta Plains]], the other [[dragonmarked house]]s discovered the Ghallandas. After countless hours at
the bargaining table, the other houses recognized
the Ghallandas as a full-fledged house, and House
Ghallanda started spreading across [[Khorvaire]], first
establishing inns and taverns and then constructing
[[enclave]]s from the [[Barren Sea]] to the [[Lhazaar Sea]].

!!! The Last War

When House [[Deneith]] mercenaries marched into battle early in the [[Last War]], they
had a contingent from House Ghallanda marching with them to provide food and shelter in the field. Other armies noticed how useful the magical creations of the Ghallandas were, and eventually all sides were hiring House Ghallanda to furnish provisions and supplies for their rear echelons. In the
chaos of war, House Ghallanda sometimes found
itself on the front lines, and its promises to remain a
noncombatant weren’t always kept. As a result, House
Ghallanda has more than a few capable veteran soldiers among its ranks today.

!! Guilds and Organizations

<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
Engraved with arcane sigils and imbued with ground Siberys
[[shards|dragonshard]], this cauldron allows someone with the [[Mark of Hospitality]] to prepare food in the blink of an eye. While you have to provide the raw materials, the
Ghallanda cauldron can mystically heat, chill, or flavor contents,
allowing precise control over temperature and replicating the
flavor of spices or herbs you don't possess. While cooking food
in the cauldron, you can reduce its cooking time by 90%, and
you gain advantage on your attempts to prepare the meal.
//Ghallanda Hall has more fugitives, scoundrels, and mysterious strangers per square foot than anywhere else in Eberron.//
<div align="right">—An anonymous [[Sentinel Marshal|Sentinel Marshals]]</div>

While many of the finest inns
have left Underlook, one exceptional establishment
remains. Ghallanda Hall was the first outpost House
[[Ghallanda]] established in [[Sharn]], and while it is not as
fancy as the [[enclave]] in [[Dragon Towers]], it still makes for
an imposing place. The hall is divided into three sections, each catering to customers with different financial means—effectively, an upscale, average, and poor
lodging combined into one. Some rooms have been
specially prepared for members of different races, so
[[halfling]]s and [[gnome]]s can feel at home in a smaller
environment. While each section of the inn has its
own common room, there is also a grand hall open
to all that features a tavern and a stage. Acts change
on a nightly basis, and Ghallanda Hall generally has
the best entertainment in [[Middle Dura]].

Ghallanda Hall is one of the few locations where
the house hosts its heroes' feasts. A private dining room in
the upscale quarter of the hall is reserved for this function, and the clients receive exceptional treatment and
entertainment to accompany the enchanted meal.

The [[Sentinel Marshals]], the
[[Dark Lanterns|King's Dark Lanterns]], the [[Sharn Watch]], spies from across
the [[Five Nations]], the Order of the [[Emerald Claw]],
and elements from many of the other [[dragonmarked house]]s would very much like to extract specific people from the hospitality of the [[Ghallanda]]s here, but House Ghallanda’s ironclad diplomatic immunity and a cadre of well-trained veteran Ghallanda soldiers ensure that the house’s guests remain unmolested as long as they remain within the walls of Ghallanda Hall.

The current Lord of Ghallanda Hall, [[Keslo d'Ghallanda]], bears the [[Mark of Hospitality]]. Keslo is a man of many talents, a diplomat,
a poet, and a master chef. Eight elite Ghallanda
guards provide security, and two [[clawfoot]] dinosaurs can be brought into
play during serious altercations.
Ghosts are formed when a [[shade]] clings to a particular
memory with such intensity that even [[Dolurrh]] can't completely
eradicate it—perhaps a terrible mistake or a bitter grudge. The
rest of the spirit's memories fade, and it becomes immune to
ennui, but this ember remains, defining its existence. Ghosts
are driven by a primal desire to return to [[Eberron]], to haunt the
place where they died or where their anchoring memory was
forged; they might escape to the Material Plane when Dolurrh
is coterminous or when a resurrection goes wrong. Ghosts that
are destroyed eventually reform; they can only find peace if
their unfinished business is resolved.
This shimmering, semi-translucent cloak is made of a mysterious lightweight material. Once per day, the user can use the cloak's magic to assume a spectral form for up to one hour. The user becomes incorporeal, and cannot interact with the material world. They can pass through walls and cannot be seen by most living creatures, though some can sense their cold presence.
South of a wide point in the waterway [[Adarans]] call
[[Jathara Sound]]—the wide area known as Kasshta's Belly—
sits the hidden fortress of Ghoza. Although Ghoza is
built high on the cliffs near the sound, it has rooms that
occupy caverns to the waterline. These natural chambers lead to flooded grottos that eventually open into Kasshta's Belly. Ghoza's warriors are expert swimmers
and more free spirited than many of [[Adar]]'s monks. The
magic of local elemental binders (some affiliated with the
[[Keepers of the Word]]) allowed Ghozan specialists to build
a few vessels that permit limited underwater operations.
However, most missions rely on people instead of craft.
For centuries, Ghozans have caused trouble for [[Riedra]]n shipping—problems easily blamed on weather, the creatures that inhabit the sound, or the "mongrel ogres" ([[eneko]]) of [[Syrkarn]]. Riedra's activities on the sound are limited now, and much of its supplies pass overland. 
The Ghoza River in [[Adar]] flows into the [[Jathara Sound]] near [[Ghoza]].
Giants are humanoid creatures of exceptionally large size. Details of their appearance and capabilities depends on the type of giant, of which six are known:

* [[hill giant]]
* [[stone giant]]
* [[frost giant]]
* [[fire giant]]
* [[cloud giant]]
* [[storm giant]]

!! Giants in Eberron

Some [[eighty thousand years ago|Age of Giants]], [[Xen'drik]] was home to
Eberron's first civilized race—the giants, towering beings
possessing tremendous strength and intellect. By studying the continent's ruins, sages have been able to develop
a general sense of the lives and history of this lost age, but
the precise nature of its people remains a mystery. Scholars believe that the first giants were of a type unknown in
the modern age, both wiser and more powerful than the
giants of the present day. Some who study them refer to
these mighty founders as “titans.”

Though Xen'drik has likely always been a dangerous land, over the course of twenty thousand years, the
giants rose from savagery to create a stable and advanced
civilization. The lesser races and creatures of Xen'drik
were all brought under giant dominion in time. Among
the giants' slaves were the [[elves|elf]], who became common
throughout their masters' cities and settlements.

Sixty thousand years ago, something happened that
would change the giants and the fate of Xen'drik forever.
Giant explorers made contact with the [[dragon]]s of [[Argonnessen]], and a group of dragons took a great interest in
the fledgling kingdoms. Flights of dragons migrated to
Xen'drik to take up residence among the giants, sharing
their knowledge of magic with the younger race. The
giants quickly mastered these mystical arts, creating artifacts and wondrous locations still beyond the knowledge of modern civilization. The giant nations even taught
their elf slaves to use magic, with the elves' talent for the arcane arts allowing them to overcome the limitations of their size. For a time, dragon and giant lived in harmony,
but conflict in Argonnessen eventually drew the dragons
away from Xen'drik. In centuries to come, the dragons
became insular and broke off contact with the giants;
they would not return for thousands of years.

The civilization of the giants prospered for another twenty thousand years, and its empires spread across the continent. Then, forty thousand years ago, the collapse of Xen'drik was set in motion by an extraplanar invasion from [[Dal Quor]], the Region of Dreams. Living nightmares tore into the nations of the giants, and reality
itself was scarred by their battles. In the end, an alliance
of giant arcanists drew on cataclysmic powers to sever the
connection between Dal Quor and Eberron—an action
that unleashed destruction nearly as disastrous as the war
it sought to end.

For almost a thousand years, magical curses and
plagues swept through the land, civil war raging even as
the giants' [[elf]] and [[drow]] slaves seized the opportunity to
throw off their chains. Desperately weakened, the giants
prepared to call again on the powerful magic that had
banished the [[quori]]—magic that might have destroyed
Eberron if not for the intervention of the [[dragon]]s. No one
knows the full extent of the power the lords of [[Argonnessen]] brought to bear, but in the aftermath, the Xen'drik of old was no more. Eldritch energy spread across the land,
leaving a twisted environment and bizarre monsters in its
wake. The giants were reduced to savagery and have never
recovered, their cities falling to ruin. 

!! Other "Giants"

Other creatures of Eberron are classified as giants due to their oversized humanoid stature, despite being completely unrelated to the "true" giants of [[Xen'drik]]. These include [[ettin]]s (which are distantly related to [[orc]]s), [[ogre]]s, [[troll]]s, [[oni]], and the fey [[fomorian]]s.
Giant owls originated in the forests of the [[Eldeen Reaches]], but were brought to [[Sharn]] hundreds of years ago to participate in the [[Race of Eight Winds]]. While far from the fastest participants in the race, they are the most intelligent, able to speak languages and even cast a few spells (such as [[mage hand]]), enabling them to use cunning and trickery to gain an edge.

A few former racing owls are now merchants in the [[Bazaar]], and one even serves on the [[Sharn Council]] ([[Hruitt]]). 
The gibbering mouther's body is an amorphous mass of mouths and eyes that propels itself by oozing forward, fastening several mouths to the ground and pulling its bulk behind. Though it moves slowly, it swims through water, mud, and quicksand with ease.

When a gibbering mouther senses prey, its mouths begin to murmur and chatter, each with a different voice: deep or shrill, wailing or ululating, crying out in agony or ecstasy. This cacophonous gibbering overcomes the senses of any creature that hears it, causing most to flee in terror. Others are overcome with madness or stand paralyzed, fixated on the horrific creature as it oozes forward to consume them.

Driven to devour any creature it can reach, a gibbering mouther flows over victims transfixed by its mad ranting, its multitudinous voices temporarily silenced as it gnaws and swallows living flesh. The monster liquefies stone with which it comes into contact, hindering creatures that overcome its gibbering and attempt to flee.

A gibbering mouther leaves nothing of its prey behind. However, even as the last of a victim's body is consumed, its eyes and mouth boil to the surface, ready to join the chorus of tormented gibbering that welcomes the monster's next meal.
This small green stone amulet hangs on a silver chain. The faint scent of eucalyptus emanates from the smooth gem.

Mundane, non-dire insects and arachnids cannot get within five feet of the wearer. If a bug does happen to get past the barrier, it explodes loudly and violently.
The warlike githyanki and the contemplative githzerai are a sundered people—two cultures that utterly despise one another. The two races look very similar to outsiders, with appearances like that of angular humans with pointed ears and pale yellow or green skin.

!! Githzerai

Focused philosophers and austere ascetics, the githzerai pursue lives of rigid order. Lean and muscular, they wear unadorned clothing free of ornamentation, keeping their own counsel and trusting few creatures outside of their own kind. Having turned their backs on their warlike githyanki kin, the githzerai maintain a strict monastic lifestyle, dwelling on islands of order in the vast sea of chaos that is the [[plane]] of [[Kythri]].

!! Githyanki

The githyanki plunder countless worlds from the decks of their astral vessels and the backs of [[red dragon]]s. Feathers, beads, gems, and precious metals decorate their armor and weapons—the legendary silver swords with which they cut through their foes. Since winning their freedom from the [[mind flayer]]s, the githyanki have become ruthless conquerors under the rulership of their dread [[lich]]-queen, Vlaakith.

!! History of the Gith

Long ago, a proud empire was crushed by the [[daelkyr]]. But this
wasn't the Empire of [[Dhakaan]], but a nation of gifted psychics
who lived in towers of [[crysteel]] and [[sentira]]. [[Dyrrn]] the Corruptor
transformed their champions into the first [[illithid|mind flayer]]s, using them as
living weapons to subjugate their own people. When defeat was
inevitable, the great leader Gith led a planar exodus, fleeing into
[[Kythri]]. The Churning Chaos hid the refugees from pursuit, and
through absolute discipline, they imposed stability upon chaos.

Once the refugees regained their strength, a bitter divide split
their people. Zerthimon the Wise maintained that the people of
Gith should remain within Kythri. He believed mental discipline
was the ultimate key to victory and that, in time, they could gain
the power to reclaim their reality. But Gith was a warrior, and her
followers yearned for battle. They wanted to build their strength
and resources by raiding every layer of reality until they found a
way to destroy [[Xoriat]].

This situation remains today. The githzerai dwell in their
monastery vessels in [[Kythri]], gaining strength through the
endless imposition of order upon chaos. The githyanki dwell in
vast fortress-ships the size of cities, anchored in the trackless
wastes between [[plane]]s, but their raiders can attack any plane. They slaughter [[devil]]s in [[Shavarath]] and pillage the grand
galas of [[Fernia]]. At any time, a githyanki warship could attack
a major city in [[Khorvaire]]; it's up to the DM if this has ever
happened before, or if the githyanki have left [[Eberron]] alone.
Alternately, a githyanki merchant could be a recurring NPC,
showing up and offering items pillaged from across the planes.
Where the githzerai are serene and disciplined, the githyanki
are passionate and aggressive. All gith despise the [[daelkyr]] and
slaughter illithids whenever they can, and they could be curious
and unexpected allies against a [[cult of the Dragon Below|Cults of the Dragon Below]].

Hearing this tale, one might well ask: where are the gith
from? They're from [[Eberron]]—but not the Eberron that exists
today. They came from a world surrounded by the Ring of
[[Siberys]], but there were no [[human]]s or [[elves|elf]] on their Eberron.
According to the githzerai, when the [[daelkyr]] completed their
work on Eberron, they wiped the gith world from existence and
created a new reality. If this is true, they may have done this
countless times... and if they break the [[Gatekeeper|Gatekeepers]] [[seals|dimensional seal]], they
could do it again. What the githzerai ultimately hope to achieve
is to reassert their reality onto the Material Plane.

It's possible that the gith are deluded about all of this. Even
if the gith myth is true, it's doubtful the githzerai will ever have
the strength to rewrite reality. But can it be entirely dismissed?
Note that the draconic allies of the githyanki are descended
from dragons from the gith Eberron; they have no loyalty to
[[Argonnessen]], and could be a curious wild card.

Time moves strangely in Kythri and the Astral Plane, and
the gith could've been dwelling in Kythri and raiding reality for
thousands of years—or it could be that from their perspective,
the destruction of reality was barely a century ago. Are the
githyanki led by an ancient lich-queen, or by Gith herself?
The Glamer Bay lies off the coast of [[Zilargo]].
The Glamer River in [[Zilargo]] flows from its headwaters near the city of [[Oskilor]] into the [[Glamer Bay]].
Glamerweave is a fine, light fabric that
has delicate illusions woven into its threads. The color of
glamerweave seems to shift subtly and is hard to describe,
but this property makes for a striking and strangely beautiful appearance.

Rarer and higher-quality glamerweave can have the pattern rise
from the cloth. For example, a glamerweave gown might
be wreathed in harmless, illusory flames, while a glamerweave hat might have illusory butterflies fluttering around it. 
This magically enhanced studded leather armor allows you to create an illusion, causing the armor to assume the appearance of a normal set of clothing or some other kind of armor. You decide what it looks like, including color, style, and accessories, but the armor retains its normal bulk and weight. The illusory appearance lasts until you use this property again or remove the armor.

See also [[glamerweave]] and [[shiftweave]].
The ruins of the city of [[Making]] in the [[Mournland]] is surrounded by a nightmare tableland of flat, pale glass. Jagged formations like blown glass,
sometimes enormous in size, jut up from the ground
here and there. Obsidian makes up the central plateau, forming bladelike protrusions. Liquid glass and magma ooze around the edges of the highland, and
fire flashes deep under the glass. Nothing grows on the plateau, and few creatures haunt its jagged peaks and flat expanse. [[Living spell|living spell]]s, on the other hand, seem drawn to the area.
This set of circular golden frames has no lenses. These "glasses" grant the wearer advantage to see through [[illusion]]s.
While wearing these glasses, you can twist
a knob and cause everything seen through them to be
magnified to twice their size (as a [[spyglass]]). You can twist the knob again and end this effect. 
This pair of glasses has thick, smoked lenses. While worn, these glasses make all metal within sixty feet of the wearer appear to glow slightly, even through walls. The color of the glow will change depending on the type of metal.
This pair of glasses has large, circular lenses made from pink glass. When these glasses are worn, the user can see into and through solid matter out to a radius of 30 feet. To the wearer, solid objects within that radius appear transparent and don't prevent light from passing through them. The vision can penetrate 1 foot of stone, 1 inch of common metal, or up to 3 feet of wood or dirt. Thicker substances block the vision, as does a thin sheet of lead.
(Pteranodon)

These flying reptiles have wingspans of 15 to 20 feet and typically dive for small marine prey, though they are opportunists and will attack any creature that appears edible. A glidewing has no teeth, instead using its sharp beak to stab prey too large to swallow with one gulp.

Glidewings are sometimes used as flying mounts in [[Sharn]], and are seen in the [[Race of Eight Winds]] every year.
The Glimmergleam is a river that flows from [[Mirror Lake]] in the [[Mror Holds]] into [[Karrn Bay]].
This region of the [[Towering Wood]] has strong ties to the [[plane]] of [[Mabar]]. It's charged with negative energy, and [[undead]] and other malevolent creatures lurk in its shadows. 
This inquisitive
agency run by [[Kava Velderan]], a [[dragonmark]]ed heir of the
House of [[Finding|Mark of Finding]], has ties to House [[Tharashk]]. Kava
prides herself on her ability to find anyone, anywhere. Her agents escalate cases to her attention only
when they prove to be nearly impossible to solve.
While wearing this glove, you can hold out your hand toward a [[humanoid]] you can see within 30 feet of you and attempt to compel them to shake your hand. On a success, the target is forced to shake your hand for up to 1 minute. You have disadvantage on the attempt if you are fighting the creature, and the effect ends early if someone in your party harms it.

Once you have used this property, it can't be used again
until the next dawn. 
This pair of red silk gloves allow the wearer to identify and sense the dimensions of any object they touch. If the wearer touches a wall or floor, they can sense the floorplan of the structure within a 60-foot radius.
While wearing these gloves, you can climb and swim as quickly as you can walk, and gain advantage to actions involving climbing or swimming.
These heavy elbow-length gloves are made of dark brown leather. Once per day, the wearer can transform their hands and forearms into large stone fists, chiseled with arcane runes and geometric designs. When in this form, the wearer is capable of performing feats of incredible strength and throwing devastating punches. The form persists for up to 10 minutes.
This pair of soft, tan leather gloves has the symbol of [[Irian]] on the back of each glove in thick silver paint. Three times per day, the wearer can use the magic in the gloves to touch an injured person and heal their wounds.
These gloves seem to almost meld into your hands when you don them. You can deflect or even catch projectiles (if they are small enough to fit in your hand).
This set of two right-hand gloves are made from beautiful red leather. When one glove is worn, the user can telepathically control the second. The empty glove can levitate 10 feet off the ground at a distance of 60 feet, and is capable of lifting 10 pounds.
This pair of brown leather gloves is hemmed with red thread. Anything thrown by the wearer of these gloves reappears in their hands after a few minutes.
Gloves of storing come in pairs, each one tied to a small pocket
dimension. While wearing the gloves and holding an object
that weighs no more than 20 pounds and can be held in one
hand, you can store that object inside
the glove's extradimensional space. When an object is stored
inside the extradimensional space, you can summon it back into your empty hand. You can only store a single object in each glove's extradimensional space, for a total
of two items between the pair.

The gloves' weight is negligible, regardless of their contents.
If a glove is pierced or torn, it ruptures and is destroyed, and
the object it was storing is lost to the cosmos.

Placing gloves of storing inside an extradimensional space
created by a [[bag of holding]], [[portable hole]], or similar item
instantly destroys both items.
While wearing these gloves, you can  snap your fingers and cause a 3-inch jet of flame to shoot out from your thumb. The flame sheds bright light in a 10-foot radius and dim light for an additional 10 feet. The flame can ignite combustible materials and persists until you snap your fingers and end this effect. 

Once this gloves' flame has been activated for a total of 10 minutes, the magic ceases to function until they are allowed to recharge overnight.
These heavy leather gloves are studded with [[dragonshard]]s and bear the sign of House [[Kundarak]]. When worn by a person with the [[Mark of Warding]], they allow the wearer to cast [[arcane lock]] three times per day. In addition, the caster can attach up to 3 separate keys to the spell effect. As a general rule, the customer gets two keys and the third is kept in the House Kundarak [[enclave]]. The gloves can only be used three times per day, no matter who wears them. 
While these silk gloves are worn, the wearer becomes adept at playing keyboard instruments.
These gloves are invisible while worn. While wearing them, you gain advantage to sleight of hand and lockpicking attempts.

Cold violet light illuminates the air and sky for miles around this gash in the northern [[Mournland]]. The glow emanates from deep within the chasm, its source indiscernible from the canyon’s rim. Horrid monsters, some mutated beyond recognition, congregate about the supernatural rift. The bruised luminance continues to warp them if they stay for long.

The [[warforged colossus]] WX-11, "Arkus", lies prone at the bottom of the Glowing Chasm, with one of its arms torn off.
The Glum River in [[Khorvaire]] flows through the swamps of the [[Shadow Marches]], past the city of [[Zarash'ak]], into [[Zarash Bay]]. The river is unpredictable, and prone to floods, which is why Zarash'ak is built on stilts.
Glumtown is a small prospecting town in the [[Shadow Marches]]. It is located near some of the richest [[dragonshard field]]s in the Marches, and is controlled by House [[Tharashk]].
Gnolls are hyena-headed humanoids. Though gnolls usually hunch when standing, a typical gnoll standing to its full height averages 7 to 7½ ft tall, and weighs around 300 lbs.

The gnolls of [[Droaam]], once servants of the [[overlord]]s, broke ties with the [[demon]]s long ago and swore an oath of loyalty to the pack above all else.
Since standing together and being bound by this
[[Znir Pact]], the gnolls have never been subjugated by
any other force, and have never sought to conquer.
Instead, they sell their services as hunters and soldiers, serving all warlords. The gnolls are trusted
across [[Droaam]]. 

!! Gnoll Characteristics

//''Physical Appearance.''// A typical gnoll stands over seven feet
in height, but this is belied by their hunched posture. Males
and females are similar in appearance, and other species have
difficulty telling them apart. Gnolls have thick fur over their
bodies; depending on clan, this can be uniform in color, or
broken up with spots or stripes. Their eyes are yellow or green,
and gleam with reflected light. While these are common traits,
the [[fiend]]ish heritage of the gnoll sometimes manifests itself in
its appearance. An unusual gnoll could have glowing red eyes,
fur with stripes that glow like flames, or other unusual traits.
Typically these don't grant special abilities, though you could
attribute a class ability or feat to such a mutation.

//''Bone Eaters.''// Gnolls possess powerful jaws, as reflected by
their bite attack. They can chew through and digest bone, and
dislike letting food go to waste. When feral gnolls raid a village,
they consume even the bones of their victims. [[Znir|Znir Pact]] gnolls won't
eat their fallen foes if they're in the company of creatures who
are uncomfortable with such behavior. But they often eat a
small piece of any creature they slay—even if it's just a finger—to
form a bond with the victim. The Znir believe that those you kill
wait for you in the realm of death, and honoring them ensures
that they won't be hungry when you travel to that land.

//''Pack Instincts.''// Gnolls have very strong pack instincts. They
instinctively work together in combat, and think nothing of
placing themselves in harm's way to protect their kin. Znir gnolls
won't deceive members of their pack; if there are problems,
they call them out directly. If a gnoll character adopts a group of
adventurers as their temporary pack, these things apply to the
other characters—but the gnoll will be surprised and angry if
their non-gnoll packmates don't show them the same respect.

//''Casual Aggression.''// Gnolls often seem very aggressive to
other creatures. However, gnolls themselves don't consider
casual intimidation to be a hostile act; it's just a way to establish
a place in the hierarchy of the pack, largely ignored once that
hierarchy is established. This manifests in how gnolls make
demands rather than requests, and use active statements
rather than passive queries.

//''Cunning Hunters.''// Gnolls are strong and aggressive by
nature. But both the Znir gnolls and their uncivilized kin
are cunning hunters rather than simple brutes. Gnolls work
together as a pack, always searching for weaknesses in
enemies and supporting injured allies. Znir gnolls won't break
their word, but they don't hold to any idea of honorable conduct
on the battlefield; they are ruthless and efficient, and see nothing wrong with ambushing or tricking a superior foe. Some gnolls have a supernatural knack for mimicry and use this gift to draw enemies into danger.

//''Working Relationships.''// [[Droaam]] is a diverse region, and
the Znir gnolls have always been prepared to work for any
master. They don't judge people by appearance or by their
beliefs; just as they put up with [[demon]]-worshiping [[minotaur]]s
in Droaam, a Znir //hwyri//—Gnoll for "warden", a champion trained to face [[fiend]]s and [[undead]]— can work alongside a templar of the [[Silver Flame]] or a [[warforged]] [[paladin]] of [[Dol Arrah]]. They may not like the people they are working with, and they may think that the beliefs of their companions are vile or foolish. But they place duty before such personal concerns, and won't insult allies or pick fights with them.

//''Communication.''// The Gnoll language is unique, with a
range of pitches that are difficult for humans to hear, let along
duplicate. At first, it sounds much like the vocalizations of
hyenas, with whining and chattering “laughter.” It's possible for
non-gnolls to learn Gnoll, but it's a difficult feat. When stealth
isn't necessary, the Znir are often quite vocal in battle; they
generally coordinate actions and confirm positions with short
bursts in Gnoll. Each Znir gnoll has a //whoop//, a unique call it
uses as a sort of verbal signature; while these are extremely
short, they convey both personal identity and clan loyalty. These
are used to coordinate in the field, and it's common for a gnoll
to whoop when entering a friendly location, as a simple way of
identifying itself and giving allies an opportunity to respond.

Body language and posture—usually slumped—are an
important part of gnoll communication; for example, when
a gnoll feels threatened or angry, its thick crest of fur down
the spine rises up. The Znir dislike written communication,
though they use it for contracts.
//Five words can defeat a thousand swords. //

<div align="right">—Zil proverb</div>

The average gnome has a love of knowledge that borders on obsession, a curiosity that admits no limits, and
a vast collection of potentially useful information on every personal acquaintance. Most gnomes detest physical
violence and prefer to solve their problems with words—whether that's a [[bard]]'s eloquent persuasion, a [[wizard]]'s
words of power, or a rogue's careful threat. They give
an initial impression as friendly busybodies, always
ready to lend a hand or share a story, while asking questions that tend toward the slightly-too-personal. Often, though, a cheerful and amiable gnome is methodically adding to a mental storehouse of knowledge that might one day provide important leverage. 

Gnomes are between 3 and 4 feet tall and average about 40 pounds. They mature at the same rate humans do, and most are expected to settle down into an adult life by around age 40. They can live 350 to almost 500 years.

!! Gnomes of Zilargo

To say that every [[Zil|Zilargo]] gnome is a ruthless schemer would
be a hurtful exaggeration. Intrigue is the favorite pastime of most Zil, though. Every gnome child of Zilargo is taught to manipulate and deceive, and by the time
they reach adulthood most have been involved in dozens
of schemes and feuds, some of which persist well into
adulthood. Even a gnome with a good heart and noble
goals—of which there are many—often still prefers to
use trickery and cunning rather than the unreliable
tools of honesty or brute force.

Most Zil gnomes belong to the [[forest gnome]] subrace.
Their natural talent for illusion aids them in trickery and
entertaining, and they often use small animals as messengers and guides.
When you're making a Zil gnome character, consider
what kinds of schemes you or your family might be
involved in. The table below offers some suggestions, but you should feel free to elaborate on these schemes, even to absurd extremes. 

| !<<dr d10>> |!Scheme |
| 1 |Your family is working on a new form of elemental binding, but they need a lot of Khyber [[dragonshard]]s. |
| 2 |You have an anonymous contact who sends you missions via the [[sending]] spell. When you do as you're asked, you receive handsome rewards. |
| 3 |You've inherited a plot of land in [[Q'barra]]. If you don't visit within a year, you'll lose the claim. |
| 4 |Due to an unusual twist of [[Triumvirate]] law, you share the same name with a number of other Zil, and you're all legally considered to be the same person. |
| 5 |You've acquired a [[spellshard]] that contains a vast amount of text in a strange code. |
| 6 |You know the location of a wanted war criminal, and you've been trying to decide whether to turn them in or try to get something in exchange for your silence. |
| 7 |You've been selling false treasure maps, but now you've found one that might be real. |
| 8 |You've acquired a controlling stake in a [[dragonshard]] mine, which was abandoned long ago. But why? [[Kobold|kobold]]s? [[Aberration|aberration]]s? There's only one way to find out! |
| 9 |Your family is facing financial ruin, and they've taken out a life insurance policy on you. It only pays out if you die under unusual circumstances, and they're encouraging you to seek out more dangerous adventures. |
| 10 |You're peddling a life-extension scheme where clients are petrified by a [[medusa]] and then restored later. |

Additionally, consider your relationship to [[Zilargo]]:
why you have left, and what ties do you still have to it?
Your scheme could provide a good reason for you to
leave. Or you could be a sage gathering information
for the [[Library of Korranberg]] or an investigator sending stories of your adventures back to the [[Korranberg Chronicle]]. Family is important to the Zil, and you could
be pursuing your family's interests. You could even be
working for the mysterious [[Trust]], the conspiracy behind
the [[Triumvirate]]'s throne that quietly maintains order
in Zilargo. If you are working for the Trust, you could
have a specific mission, but you could also be a sleeper
agent—gathering information and allies until you're activated and you are put to your intended use.

//''Zil Names.''// Zil society is divided into major houses,
each of which is composed of multiple families. Each
gnome carries the name of a house and of a family in addition to a personal name. For example, Alina Lorridan Lyrris and Tallian Talius Lyrris are members of different families (Lorridan and Talius) within House Lyrris. Gnome names are long and lyrical; a Zil proverb claims "the sweetest song is the name of a friend." Personal and clan names are usually at least three syllables long, and there is a strong tradition of alliteration. 

!! Gnomes of the Five Nations

As they have for countless generations, insatiable curiosity and endless opportunity draw gnomes from
Zilargo into the wider lands of [[Khorvaire]]. Most of these
dispersed gnomes find new homes and integrate easily
into local cultures. Gnomes can be found in any walk of life, whether they be as merchants, [[magewright]]s, scholars, or scoundrels. While the gnomes of the [[Five Nations]] aren't as inherently devious as their Zil cousins,
they share the Zil emphasis on the importance of family.

As a gnome character from the Five Nations, you
might have a network of connections to the community
your grew up in, likely built on the exchange of information. Alternatively, you might seek your own path in life,
avoiding the intrigues your cousins adore. 

!! Gnomes and Dragonmarks

The [[Mark of Scribing]] appears among the gnomes of
House [[Sivis]]. The gnomes of this house were among
the first of their kind to leave [[Zilargo]] and live in human
lands. They love bureaucracy and intrigue as much as
the gnomes of their homeland, but they have carefully
cultivated a reputation for impartiality and secrecy,
since their services rely on trust.

Today, House Sivis provides avenues of communication across [[Khorvaire]]. Translation, mediation, interpreting, and legal advocacy all fall within House Sivis's
broad purview, and they maintain the network of [[message stations|speaking stone]] that allow cross-continent communication. 
Goblins are small [[goblinoid]]s with flat faces, broad noses, pointed ears, and small, sharp fangs. Their foreheads slope back, and their eyes vary in color from red to yellow. Their skin color ranges from green to yellow through any shade of orange to a deep red. They stand about four feet tall and weigh about 40 lbs. They can see well in darkness, and are often quite nimble. Goblins reach adulthood at age 8 and live up to 60 years. 

The word "goblin" is sometimes used collectively to refer to all goblinoids, including [[hobgoblin]]s and [[bugbear]]s. By contrast, in [[Droaam]], the word "goblin" often refers collectively to goblins and [[kobold]]s.

The [[Dhakaan]]i word for goblins is //golin'dar//, meaning "quick people".

!! Goblins in Droaam

Both goblins and [[kobold]]s were
once oppressed underclasses within the Barrens (present-day [[Droaam]]), dominated
by almost every other species in the plains. Over time, they
developed their own shared culture that's entirely different from
the cultures of either species elsewhere in Khorvaire; when
someone says “goblin” in Droaam, it's understood that they
mean “goblins or kobolds.” Most goblins and kobolds feel a close
kinship and look out for each other. They learned long ago to
value cunning over strength; the heroes of their tales are quick
and clever. They are patient and enduring, and tolerate endless
suffering while waiting for an opportunity to present itself.

Those goblins who serve the [[Daughters of Sora Kell]] lead far better lives than their ancestors in the Barrens, and they are among the most numerous inhabitants of the large cities—and the most devoted supporters of the Daughters of Sora Kell. Most are especially excited about [[Kethelrax the Cunning]], the [[kobold]] warlord; they believe that this marks the beginning of a new age where goblins will be recognized and rewarded for their work. However, there are still goblins in the domains of some warlords—notably [[Turakbar's Fist]]—who live miserable, short lives. While most goblins are content to focus on their work, some seek to help their oppressed kin or take petty vengeance on [[ogre]]s and [[troll]]s for the vast suffering inflicted on their people.
//Hoisting the head by the fading plumes of the ruined helmet, still tied under the chin by a cord, [[Haruuc|Haruuc Shaarat'kor]] raised it in one hand and his bloody sword in the other. "Your lord is dead!" he howled in the human language. "The battle is done! By my sword, I claim this place and name it [[Rhukaan Draal]], the crown city of [[Darguun]], the land of the people!"//

<div align="right">—Don Bassingthwaite, //The Doom of Kings//</div>

The goblinoid species—[[goblin]]s, [[hobgoblin]]s, and [[bugbear]]s—were once the dominant civilization in [[Khorvaire]], with the goblinoid Empire of [[Dhakaan]] ruling the
continent for thousands of years. It was crippled by a
long conflict with the [[daelkyr]] and their aberrant armies;
even though the daelkyr were defeated, the seeds of
madness took root in the empire and tore it apart. Today in Khorvaire there are four primary cultures of //dar// - a goblin word meaning "the people". 

!! City Goblins

Goblins dwell in most of the major cities of the [[Five Nations]]. When humans first came to [[Khorvaire]], they
enslaved many goblins and built their cities on the foundations of [[Dhakaan]]i ruins. [[Galifar|Galifar ir'Wynarn]] ended the practice of
slavery, and these goblins are now citizens of the Five Nations. Gifted goblins can be found in all walks of life,
and goblins served in the armies of the Five Nations
during the [[Last War]]. 

!! The Ghaal'dar

As a [[Ghaal'dar]] goblinoid, you hold your place through
cunning and strength. You may have been a former mercenary now seeking adventure. You could be working
as an emissary for one of the Ghaal'dar tribes or even
Lhesh [[Haruuc|Haruuc Shaarat'kor]] himself. Or you could have been driven
from your tribe by the actions of a rival; perhaps you're
seeking allies to reclaim your birthright. 

!! The Marguul

[[Marguul]] [[bugbear]]s are savage and proud of it. They worship the [[Mockery]] and believe in victory by any means necessary: there is no such thing as honor on the battlefield. It's certainly an unusual choice for a player character, but if you've taken a liking to a particular group of the small folk, you could be a powerful ally. 

!! The Heirs of Dhakaan

Though the [[Dhakaan]]i Empire defeated the alien
[[daelkyr]], the war left seeds of [[corruption|Kapaa'vola]] strewn throughout the empire. As Dhakaan began to fall, a number of generals and governors gathered their forces and
retreated into shelters deep within the earth, determined to preserve their civilization until the Empire could finally be restored. After thousands of years, their
[[descendants|Heirs of Dhakaan]] have finally emerged, competing among
themselves to determine which leader deserves the imperial crown. Once this is settled, they will turn to the
conquest of [[Darguun]] and [[Khorvaire]].

The Dhakaani are far fewer in number than the
Ghaal'dar; they had to carefully limit their population in
the underground vaults they've dwelled in for the past
age. However, the //dar//—a goblin word meaning "the people"— have held onto the martial discipline and techniques that allowed their ancestors to dominate
the continent. Their weaponsmiths are superior even
to the [[artificer]]s of House [[Cannith]], and they are experts
in the working of [[adamantine]] and other exotic metals.
Anyone who presumes to look down upon goblinoids
should be surprised by the skills of the Dhakaani.

The [[Heirs of Dhakaan]] are an agnostic society and
don't have [[cleric]]s, [[paladin]]s, or [[druid]]s. Their focus is
on martial excellence, and their spiritual leaders are
[[bard]]s, who tell tales of past glory. Among the dar,
goblinoids work together. [[Hobgoblins|hobgoblin]] are the strategists
and commanders, typically having the skills of fighters,
bards, or rangers. [[Bugbears|bugbear]] cultivate a focused battle
rage and are typically barbarians. [[Goblins|goblin]] are largely artisans and laborers, but exceptional goblins join the [[Khesh'dar]] ("silent folk"), learning the skills of rogues,
monks, or rangers. The Khesh'dar spread agents across
the [[Five Nations]], and one can never know when a city
goblin might turn out to be an assassin.

As an adventurer from a Dhakaani clan, consider why
are you working with the other player characters? Are
you a scout gathering information? Are you searching
for allies to defeat a rival clan, or to support your own
unlikely bid for the Imperial throne? Are you an exile?
If so, do you hope to regain your position, or have you
abandoned your ties to the dar? 

!! Goblinoid Names

Goblinoid names often feature drawn-out vowel sounds
(represented by doubled letters), as seen in the names of
both their ancient empire ([[Dhakaan]]) and their newborn
country ([[Darguun]]). Goblins, hobgoblins, and bugbears
use the same names and naming conventions, despite
their tribal differences.

//''Masculine Names:''// Aruget, Chetiin, Daavn, Dabrak, Dagii,
Drevduul, Duulan, Fenic, Gudruun, Haluun, Haruuc,
Jhazaal, Kallaad, Krakuul, Krootad, Mazaan, Munta,
Nasaar, Rakari, Reksiit, Tariic, Taruuzh, Thuun,
Vanii, Vanon, Wuudaraj

//''Feminine Names:''// Aaspar, Aguus, Belaluur, Denaal,
Draraar, Duusha, Ekhaas, Eluun, Graal, Gaduul, Hashak, Jheluum, Kelaal, Mulaan, Nasree, Raleen, Razu,
Rekseen, Senen, Shedroor, Tajiin, Tuneer, Valii, Wuun
While wearing these dark lenses, you have darkvision out to a range of 60 feet. If you already have darkvision, wearing the goggles increases its range by 60 feet.

This large tavern is usually filled with off-duty guards of the [[Watch|Sharn Watch]] and
royal soldiers. Anyone wearing the insignia of a
non-[[Brelish|Breland]] military unit, or who can be identified as having served with another nation during
the [[Last War]], receives an unfriendly attitude by
the patrons of The Gold & White. Conversely, any
character who served [[Breland]] during the war gets
a bonus to gather information in the tavern,
in addition to any bonus received from being a
regular customer. 
Powerful and majestic, a gold [[dragon]] has a sagacious face anointed with flexible spines that resemble whiskers. Its horns sweep back from its nose and brow, echoing twin frills that adorn its long neck. A gold dragon's sail-like wings start at its shoulders and trace down to the tip of its tail, letting it fly with a distinctive rippling motion as if swimming through the air. 

A gold dragon wyrmling has scales of dark yellow with metallic flecks. Those flecks grow larger as the dragon matures. As a gold dragon ages, its pupils fade until its eyes resemble pools of molten gold.

Gold dragons can eat just about anything, but their preferred diet consists of pearls and gems.

Gold dragons are respected by the other dragons for their wisdom, but they are the most aloof and grim of the dragons. They value their privacy to the extent that they rarely fraternize with other dragons except their own mates and offspring.

Older gold dragons can assume animal and [[humanoid]] forms. Rarely does a gold dragon in disguise reveal its true form. In the guise of a peddler, it might regularly visit a town to catch up on local gossip, patronize honest businesses, and lend a helping hand in unseen ways. In the guise of an animal, the dragon might befriend a lost child, a wandering minstrel, or an innkeeper, serving as a companion for days or weeks on end.

!! Magic and Breath Weapon

The gold dragon can exhale fiery breath, as well as a cloud of gas that temporarily weakens any creature who breathes it. As innate spellcasters, adult gold dragons can cast spells such as [[hold]], [[invisibility]], [[dimension door]], [[wall of fire]], and [[immolation]].

{{DragonAgeCategories}}
Travelers and explorers making their way across [[Khorvaire]], especially in out-of-the-way areas, often find themselves in need of a safe place to spend the night. Thanks
to the efforts of House [[Ghallanda]], there's no better
place to take a rest than at one of the hundreds of Gold
Dragon Inns that the house operates. 

Every city, most towns, and even some villages have a
Gold Dragon Inn, and a large city might boast several.
Every major road through the countryside has Gold
Dragon Inns along much of its length, spaced roughly a
day's travel apart. Sometimes an inn is the nucleus of a
small community whose industry is focused on providing for the needs of travelers. A few Gold Dragon Inns
are found in locations that offer no other comforts for
the weary traveler—for example, high in a pass through
the [[Byeshk Mountains]], deep in the [[Karrnwood]], or beneath the surface of the [[Mror Holds]]. 

!! Inn Features and Amenities

Every Gold Dragon Inn provides a standard menu of
reliable services at reasonable rates. Prices are fixed, and the quality of services is reliably modest, with some comfortable upgrades available. Every inn uses
one of a small number of possible floor plans, and every
inn's restaurant offers the same menu.

The size and number of guest rooms can vary from
inn to inn: a small roadside inn has four rooms and a
moderately sized common room, while a thriving inn in
a large city has forty rooms, a restaurant, and a separate common room, with two stages for entertainment.
Because the inns are owned by House [[Ghallanda]], the
buildings all include accommodations for [[halfling]]-sized
guests as well as taller folk.

Because travelers often carry valuables with them,
each inn has a heavy strongbox secured with an [[arcane lock]] spell. To make a traveler's stay more enjoyable,
perhaps even memorable, House [[Ghallanda]] has arranged with House [[Thuranni]] and House [[Phiarlan]] to
employ guild-licensed entertainers at almost every Gold
Dragon Inn. 

!! Inn Attractions

The table below offers some ideas for unique
twists on an inn's character or atmosphere.

| !<<dr d6>> |!Attraction |
| 1 |The bartender is a [[changeling]] who is always mimicking the patrons for a laugh. |
| 2 |The innkeeper is 7 feet tall, claiming to have grown 2 feet after venturing into the mist of the [[Mournland]]. |
| 3 |Rumor has it that the innkeeper here is a [[gold dragon]] cloaked in a humanoid guise. |
| 4 |This inn is haunted by a ghost who loves to sit by the fireplace and tell stories—but it has been accused of more sinister activities once the fire burns down to embers and the guests are in their beds. |
| 5 |The inn has a [[blink dog]] that wanders around with her five pups, all of them eager for attention and treats. |
| 6 |This inn offers "the true [[Talenta|Talenta Plains]] experience"—the [[halfling]] family that runs it keeps pet [[dinosaur]]s. |

!! Gold Dragon Inns in Dar Jin

House [[Ghallanda]] has three Gold Dragon Inns spread across the [[Jhodra]] of [[Dar Jin]] in [[Riedra]]. All three are virtually identical, providing reliable room and board for
0.2c per night. A House [[Phiarlan]] entertainer is typically on duty in the each inn; the lineup changes each night, alternating between song, dance, and comedy.
This upscale inn is the local
outpost of the [[Circle of Song]]. It has a considerable area set
aside for members of the Circle, including a library,
meeting hall, and even a small concert hall. The
proprietor of the Horn is a man named Mandyran
([[half-elf]]). A former wanderer, the old man has settled down and opened the
inn to help support the Circle.
The Goldwings are a division of the [[Sharn Watch]], an air cavalry unit who use [[Vadalis]]-trained [[hippogriff]]s to scout for trouble and to respond to mid-air crimes. The unit is stationed in [[Daggerwatch Garrison]] in [[Upper Dura]].
Golems are magically created [[construct]]s. They are made from humble materials—clay, flesh and bones, iron, or stone—but they possess astonishing power and durability. A golem has no ambitions, needs no sustenance, feels no pain, and knows no remorse. An unstoppable juggernaut, it exists to follow its creator's orders, and it protects or attacks as that creator demands.

The construction of a golem begins with the building of its body, requiring great command of the craft of sculpting, stonecutting, ironworking, or surgery. Sometimes a golem's creator is the master of the art, but often the individual who desires a golem must enlist master artisans to do the work.

After constructing the body, the golem's creator infuses it with an [[elemental]] spirit. This tiny spark of life has no memory, personality, or history. It is simply the impetus to move and obey. This process binds the spirit to the artificial body and subjects it to the will of the golem's creator.

The "average" golem's [[creature tier]] is 3, but depending on the skill of the [[wizard]] or [[artificer]] creating it, it could be a tier 2 or 4 creature.
Holding a sprig aloft, you channel the primal power of [[Lamannia]], causing up to ten berries to instantly grow on the branch. These berries are infused with magic. Eating a berry slightly accelerates the healing of injuries, and the berry provides enough nourishment to sustain a creature for one day.

The berries lose their potency if they have not been consumed within 24 hours of the casting of this spell.
This 100-mile-long gash in the
earth splits the [[Ironroot Mountains]] and drops down into the depths of [[Khyber]]. The
canyon is reputedly home to a foul beast, greater in
size and power than the largest [[dragon]]s. However,
it is rumored that explorers who brave the perils of
Goradra will find themselves in a massive undiscovered section of the [[Realm Below]], which may hold more secrets of the origins of the [[dwarf]] kingdom. Perhaps distant kin of the surface dwarves live there to this day.
Few creatures that encounter a gorgon live to tell about it. Its body is covered in iron plates, and its nostrils fume with green vapor.

A gorgon's iron plates range from steely black to gleaming silver, but this natural armor in no way hinders its movement or mobility. The oils of its body lubricate the armor. A sick or inactive gorgon gathers rust like fungus or mange. When a rusty gorgon moves, its plates squeal as they rub together.

When a gorgon spots potential prey, it charges with a hideous clamor of metal on metal. When the gorgon hits, it pulverizes the foe and sends its sprawling, then tramples it to death with its cruel hooves. Faced with multiple foes, the gorgon exhales its deadly vapor to overcome the creatures it touches by turning them to stone. When it grows hungry, it smashes its petrified prey to rubble and uses its strong teeth to grind the stone into a powder that provides nourishment. The crisscrossing network of trampled trails and splintered trees that surrounds a gorgon lair is strewn with the uneaten fragments of its shattered foes.
This fortified village lies close to the [[Mournland]]. Once it
maintained the front line against [[Cyre]]. Now, the [[hobgoblin]]s stationed here protect their people from the horrors
that crawl out of the warped realm. If you're a [[goblin]]
soldier, you might have served in Gorgonhorn. It's also a
base for the scavengers and salvagers who venture into
the Mournland. 
One of the most powerful [[warlord]]s serving the [[Daughters of Sora Kell]], the [[fire giant]] Gorodan Ashlord is a
[[Xen'drik]] exile and one of the few of his kind in [[Khorvaire]]. Gorodan rules [[Vralkek]], the only port in [[Droaam]].

The king of a [[fire giant]] realm in
[[Xen'drik]] exiled Gorodan for seeking power above his
station. Gorodan came to [[Droaam]] more than twenty
years ago, bringing an entourage of [[azer]]s and [[salamander]]s
with him.

Carving out a large fiefdom on the shores of the
[[Thunder Sea]], Gorodan subjugated the [[ogre]]s and [[goblin]]s of the area, then built a fortress on the bluffs east
of the [[Scar River]]. When the [[Daughters of Sora Kell]]
came to power in [[Droaam]], they won the [[fire giant]]’s
grudging allegiance, granting him the resources to
raise a settlement around his fortress.

Though Gorodan has a reputation
as a warrior, he is also a mystic of sorts. He knows
only a little magic, but he is constantly seeking ways
to emulate his fire titan ancestors.
Another of the theaters in [[Upper Menthis]], the Grand Stage generally produces a more
conservative and traditional repertoire than the others, including a mixture of classic works and more
modern plays echoing the style and conventions of the
classics. The well-beloved //The Changeling's Prophecy//, by the
ancient playwright Duthic Olan, appears on the Grand
Stage's docket every two to three years. This is not the
place to see avant-garde productions that wrestle with
existential concerns in the wake of the [[Last War]], but
rather the Grand Stage presents a constant selection
of the great cultural heritage of [[Galifar]].
''District Type:''  Shops<br/>
''Buildings:'' Temple ([[Arawai]]), shrine ([[Kol Korran]]),
average lodging (15), average food (40), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (10), average services
(40), poor services (8)<br/>
''First Impression:'' Quirky boutiques and art galleries
stand out among a host of more mundane shops.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Vallia Towers]] (north); [[Olladra's Kitchen]] (northeast); [[Forgelight Towers]] (bridge, southwest); [[Center Bridge]] (bridge, south); [[Torchfire]] (bridge, southeast); [[Dragon Towers]] (above)

Granite Halls is one of [[Lower Central]]'s two mercantile districts. Compared to [[North Towers]], it has more
art galleries and fewer bookstores, but otherwise the
two districts are very similar.

Granite Halls is home to Sava's Gallery, a trendy art gallery owned by city councilor [[Sava Kharisa]].
A luxurious inn near the
pinnacle of the Tower of Gold, the Gray Dragon
offers elegant suites to visiting dignitaries and
others with wealth to spare. 
This manor is one of the oldest in the district, and it has a few unusual features; most notably, it has no windows. The outlines of windows have been engraved into the outer walls, but the walls are solid; apparently the architect considered it to be some sort of artistic statement. The Gray House has passed through the hands of a number of [[Karrnath]]i nobles over the last three centuries. While the people of [[Ocean View]] generally distrust foreigners, the inhabitants of the Gray House are invariably charming and
charismatic—and [[vampire]]s. The Gray House has long
been used as a safe house for [[undead]] associated with
the Order of the [[Emerald Claw]]. The current lady of
the house is [[Jesel Tarra'az]]. She spends most of her time
tending to her “family investments,” but occasionally
appears at evening galas or other after-dark events. 
A gray ooze is stone transmuted to semi-sapient liquid. When it moves, it slithers like a liquid snake, rising to strike. The ooze is very corrosive, particularly to metal; an ooze can eat through an inch of nonmagical metal in as few as three seconds.

Some gray oozes spontaneously develop heightened intelligence as well as [[psionic|psionics]] abilities such as telekinesis. It is not yet known what causes this transformation.
[[Changeling|changeling]]s have always been viewed with suspicion by most of the people of [[Khorvaire]], and occasionally that fear has boiled over into something worse. Thirteen hundred years ago, the lords of the nations now known as [[Karrnath]], [[Cyre]], and [[Thrane]] began a campaign of extermination against the changeling race. Many changelings fled to [[Breland]] or [[Aundair]], hiding among [[human]]ity. But one among them was not satisfied with survival. This changeling was named [[Kel]], and they had a vision of a changeling homeland: a realm on the edge of the world, where changelings could live away from the fearful scrutiny of humanity. They traveled the land, speaking to family after family, and slowly an exodus began—a journey that ended on the island of [[Lastpoint]]. There, staring into the haunting gray mist that lingers over the waters, Kel declared that they had found their home.

No outsider knows the full size of the Gray Tide principality. Some estimates say that there are over fifty thousand [[changeling]]s in the [[Lhazaar Principalities]], though it is impossible to know for certain. Changelings have spread out across the islands, and many of the brothels and theaters in the Principalities are run by changelings. [[Lastpoint]] changelings also serve as guides, interpreters, and mediators, serving as hirelings on ships of other princes. Some Lhazaarites fear that the changelings have spread far deeper into Lhazaar society than anyone knows. But most are willing to see the changelings as brothers on the sea, and they are more accepted in this region than anywhere else in [[Khorvaire]].

The Gray Tide principality is still ruled by Prince [[Kel]], or someone maintaining their persona, to this day. It is thought to have four ships, and common belief holds that it does participate in piracy. However, a host of rumors has circulated about the principality. Some say that the [[changeling]]s can enter the gray mists of [[Lastpoint]] without danger, and that they have a fleet hidden within it. Other tales claim that the changelings have developed ships that can shift appearance, so that their acts of piracy are blamed on others. The truth of these tales is in the hands of the DM.
The Gray Wood is a small forest in northern [[Aundair]], overlooking [[Stormhome]].
''District Type:'' Waterfront district<br/>
''Buildings:'' Other (20), temples ([[Kol Korran]],
[[Balinor]], [[Onatar]], [[Aureon]]), poor lodging (20), poor
food (36), poor trades (100), poor services (140), poor
residences (80)<br/>
''First Impression:'' Most of the traffic here consists of
sailors in search of entertainment. Bars, flophouses,
and small shops—many of which don't bother to
advertise the nature of their business—line the street,
which winds precariously along the edge of a steep
cliff overlooking the river.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Sharn's Welcome]] (southeast); [[Ship's Towers]] (south)

Grayflood, a seedy waterfront district, fills roughly the northern half of the docks and wharves running along the [[Dagger River]]. Gigantic cranes empowered by magic haul freight from ships at dock to the warehouse district of [[Precarious]], while the crews of those ships restock and recharge at the shops and taverns that line the bottom of the great cliffs.
''District Type:'' Average residential, [[Karrn|Karrnath]]<br/>
''Buildings:'' Temple (Blood of Vol), upscale residences (40), average food (2), average lodging (2),
average residences (280), poor lodging (2), poor
residences (40)<br/>
''First Impression:'' The people of Graystone are somber
and serious, and outsiders receive a cold welcome. A
visitor with a good ear notes the predominance of
Karrn accents and spots Karrn features among the
inhabitants of the district.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Tavick's Market]] (northwest); [[Cornerstone]] (northeast); [[Dancing Shadows]] (south); [[Smoky Towers]] (bridge, southwest); [[Cogsgate]] (below); [[Twelve Pillars]] (above)

The culture of [[Karrnath]] existed long before the [[Last War]], and in [[Sharn]] it found a home in the Graystone
district. As Sharn grew and became an important
center for trade and commerce in the kingdom of
[[Galifar]], and as Karrn merchants and crafters settled
in the city, many made their home in Graystone.
Today Graystone is a quiet, close-knit community.
The local families know each other well, and they
dislike outsiders—with the notable exception of visitors from Karrnath, who receive a warm welcome and demands for the latest news from “the old country.”
In practice, the people of Graystone are unfriendly
toward most outsiders, but friendly toward anyone of Karrn descent. Due to prejudices and incidents
that occurred during the [[Last War]], anyone attached
to the [[Sharn City Watch|Sharn Watch]] (especially the [[Guardians of the Gate]]) are treated with near-hostility. In general, City Watch patrols avoid
Graystone; the people maintain a small local militia
that patrols the district and settles disputes.

For the most part, Graystone is a peaceful
district. Most of the inhabitants are honest, hardworking people. However, the people of the district share something besides Karrn descent, something
that sets them apart from the Karrn immigrants in
[[Middle Menthis]]—most of the people of Graystone
are devoted followers of the [[Blood of Vol]]. Sad to see the way in which their religion has
been suppressed even in their homeland, they
continue to carry on the old traditions. And even if
the people of Graystone won't actively assist the Order
of the [[Emerald Claw]], they certainly do provide agents
of the Claw with shelter and support. 

!! Noteworthy Locations

* The [[Bloody Mug]]. This inn caters to visitors from [[Karrnath]].
* [[Slogar's]]. This modest restaurant serves traditional Karrnathi cuisine. The ambience is a bit gloomy, but the prices are reasonable, and the food is very filling. 
* The [[House of Hazal]]. The largest estate in the district is also home to [[Sharn]]'s only temple to the [[Blood of Vol]].
Known as the Gateway to [[Droaam]], this city sits on the
border to [[Breland]]. Though dominated by monsters
and ruled by a [[mind flayer]], Graywall is both a center
for trade and a haven for deserters and fugitives. The
[[dragonmarked house]]s maintain outposts in Graywall,
and House [[Tharashk]] governs the Calabas, the foreign
quarter inhabited by [[human]]s and other people from
elsewhere in [[Khorvaire]]. 
This mountain range separates [[Breland]] from [[Droaam]]. The Graywalls are home to [[ettin]]s, [[ogre]]s, and [[harpies|harpy]]; many harpies reside in a hidden [[Irian]] [[manifest zone]] known as the [[Shining Valley]].

A significant number of [[Dhakaan]]i ruins along and below the mountain range, including a set of thousand-foot statues commemorate the [[six kings|Jhazaal Dhakaan]] who came together to form the ancient Empire of Dhakaan.

The [[Droaam]] city of [[Graywall]] takes its name from its proximity to this mountain range.
Early in the [[Last War]], House
[[Deneith]] accepted a contract from [[Breland]] to guard a
key mountain pass in the [[Graywall Mountains]] between central Breland and what is now [[Droaam]]. In 987 YK, when King [[Boranel|Boranel ir'Wynarn]]’s armies retreated from the Graywalls, House Deneith remained in a stubborn effort to
hold up its end of the contract. For the next nine years,
the soldiers of the house were often near starvation, frequently under siege, and always surrounded, but they held the mountain pass. Even the war’s end couldn’t
dislodge House Deneith, and it has built a small but nearly impregnable keep. Although Droaam (for military reasons) and Breland (for political reasons) would like to see the outpost abandoned, House Deneith
shows no sign of leaving.
Built atop ancient [[goblin]] ruins, the Crag is the seat of the [[Daughters of Sora Kell]]. Few outsiders have seen this thriving city of monsters. Of the [[dragonmarked house]]s, only House [[Tharashk]] has a presence in the city. 

!! The Shape of the Great Crag

At the heart of [[Droaam]], a vast mountain dominates an otherwise flat and fertile plain. According to legend, the Great Crag was torn from the earth during
the war between the [[Dhakaan]]i and the [[daelkyr]]. Today,
the ruins of a goblin city are scattered across the plain,
and ancient passages honeycomb the mountain.

For thousands of years, the crag was shunned by
the creatures of the region, but the [[Daughters of Sora Kell]] have made the mountain their seat of power, crafting a bizarre, sprawling city within the ruins.
The blocky stonework of [[ogre]]s stands next to perfectly restored [[Dhakaan]]i architecture. [[Harpies|harpy]] and [[gargoyle]]s roost in the heights, with [[goblin]]s and [[kobold]]s living beneath them in makeshift tents. A good
number of monsters prefer to serve the [[hag]]s rather
than their local [[warlord]]s, and the resultant influx of
population has seen the Great Crag become one of
the largest cities in [[Khorvaire]]. Population estimates vary widely, but most settle on around 160,000 inhabitants.

Despite its size, the Great Crag is a city of limited sophistication. Many services are difficult to find, and [[Tharashk]] is the only [[dragonmarked house]] that maintains an [[enclave]] in the city. Weapons are easy to come by, since the city’s smiths constantly churn out goods for [[Droaam]]’s mercenaries, and sport can be
found in the brutal arena where creatures that defy
the hags are sent to die. The city contains temples to
the [[Shadow]], the [[Mockery]], and other grim deities, but
shrines to the [[Sovereign Host]] and the [[Silver Flame]]
are unknown here.
The grand temple to the
god of knowledge at [[Morgrave University]], the Great
Hall of [[Aureon]] is an architectural marvel as well as a
sacred site often visited by pilgrims. Scholars, scientists and [[artificer]]s, and any others who seek knowledge have made a practice of spending the night in
the Great Hall. They believe that inspiration will
visit them while they sleep on the marble floor of the
majestic temple. Some of [[Breland]]'s greatest minds
through the ages have claimed that their greatest
breakthroughs came after a night in the temple.
[[Merrix d'Cannith]] (the grandfather of the current
head of House [[Cannith]] in [[Sharn]]) attributed the
invention of living [[construct]]s (the first [[warforged]])
to a stay in the Great Hall of Aureon.

The Great Hall also provides a place to find
experts in all fields. The temple staff represents the
broad spectrum of scientific study, and if they do
not know the answer to a question they can almost
certainly find someone who does. The ordained
clergy of the Great Hall include experts, [[wizard]]s,
loremasters, and [[bard]]s, as well as [[cleric]]s, and position in the hierarchy of the temple has nothing to
do with field of expertise. 
You create the image of an object, a creature, or some other visible phenomenon that is no larger than a 20-foot cube. The image appears at a spot that you can see within 120 feet and lasts for up to 10 minutes, or until your concentration is broken. It seems completely real, including sounds, smells, and temperature appropriate to the thing depicted. You can't create sufficient heat or cold to cause damage, a sound loud enough to cause damage or deafen a creature, or a smell that might sicken a creature (like a [[troglodyte]]'s stench).

As long as you are within 120 feet of the illusion, you can choose to cause the image to move to any other spot within range. As the image changes location, you can alter its appearance so that its movements appear natural for the image. For example, if you create an image of a creature and move it, you can alter the image so that it appears to be walking. Similarly, you can cause the illusion to make different sounds at different times, even making it carry on a conversation, for example.

Physical interaction with the image reveals it to be an illusion, because things can pass through it. If a creature discerns the illusion for what it is, the creature can see through the image, and its other sensory qualities become faint to the creature.

If you are able to cast legendary-tier spells, you can cast this as such to make the spell last until dispelled, without requiring your concentration.
The most cunning of true [[dragon]]s, green dragons use misdirection and trickery to get the upper hand against their enemies. 

A green dragon is recognized by its curved jawline and the crest that begins near its eyes and continues down its spine, reaching full height just behind the skull. A green dragon has no external ears, but bears leathery spiked plates that run down the sides of its neck.

A wyrmling green dragon's thin scales are a shade of green so dark as to appear nearly black. As a green dragon ages, its scales grow larger and lighter, turning shades of forest, emerald, and olive green to help it blend in with its wooded surroundings. Its wings have a dappled pattern, darker near the leading edges and lighter toward the trailing edges.

A green dragon's legs are longer in relation to its body than with any other dragon, enabling it to easily pass over underbrush and forest debris when it walks. With its equally long neck, an older green dragon can peer over the tops of trees without rearing up.

!! Magic and Breath Weapon

The green dragon can exhale a cloud of poisonous gas. As innate spellcasters, adult green dragons can cast spells such as [[cloudkill]], [[charm]], [[mislead]], and [[dimension door]].

{{DragonAgeCategories}}
The Greenhaunt is a forest in northern [[Breland]], near the [[Blackcap Mountains]].
Greenheart is home to the [[Wardens of the Wood]]
and the Great Druid [[Oalian]], and the town is the
center of the [[Eldeen Reaches]]’ authority and government. It is the only site in the [[Towering Wood]] that sees
significant numbers of travelers, and it is here that
those wishing to join the [[druid]]s first come to study and
train under the elders who govern the settlement. It is located on a [[manifest zone]] linked to [[Lamannia]].

Although Greenheart is small (around 6000 permanent residents) compared to [[Varna]]
in the east, the town’s population swells for ceremonies and sacred festivals. The folk of the forest are committed to defending Greenheart, and they can quickly
converge on the town in response to any threat.

The druids permit no commerce within Greenheart, and although visitors are welcome, the town has no marketplace or tavern. Shelter, comfort, and
healing are freely provided within private homes,
as long as outsiders show the proper deference and
respect for druidic customs.
//We, the Greensingers, celebrate the magic in the natural world, as well as the fey that embody that magic. We serve as ambassadors between the fey and mortals, protecting each from the other. //

The Greensingers are devoted to the [[fey]], and serve as
mediators between the fey and mortals. The ranks of
the Greensingers include [[bard]]s as well as [[warlock]]s with
[[archfey]] patrons; a druid or ranger might also serve a
specific archfey. 
Greentarn is an island in the [[Lhazaar Principalities]]. It is the home of [[Regalport]], the de facto capital of the Principalities, and seat of the [[Seadragons]]. The verdant island is blessed with strong trees ideal for shipbuilding.
The {{!!title}} is a [[Sharn]] street gang of 
[[gnome]]s and [[halfling]]s who specialize in
[[illusion]] magic.
Griffons are ferocious avian carnivores with the muscular bodies of lions and the head, forelegs, and wings of eagles. When they attack, griffons are as swift and deadly as eagles, even as they strike with a lion's savage might and grace.

//''Horse Eaters.''// Griffons hunt in small prides, flying high over plains and forests near their rocky cliff-side aeries. Herd animals and horses are the prey they crave above all others, though they also hunt and kill [[hippogriff]]s. When it spots horses, a griffon screeches to alert its pride mates, which descend quickly toward their prey.

Those riding or herding horses dread the griffon's piercing cry, preparing themselves for the bloody fight that inevitably follows. A griffon ignores a horse's rider when possible, and a rider that abandons its mount, or a herder that releases one or two horses, can escape unharmed while the griffon targets its chosen prey. Riders who attempt to protect their horses attract the full fury of an attacking griffon.

//''Sky Dwellers.''// Griffons lair in high rocky clifftop aeries, building their nests from sticks, leaves, and the bones of their prey. Once griffons establish a territory, they remain in that area until the food supply has been exhausted.

Aggressive and territorial, griffons engage in brutal aerial combat to defend their aeries, tearing and shredding the wings of flying intruders to send them spiraling to the ground. Creatures that climb to a griffon's lair are plucked from the cliffs and eaten, or are knocked from the heights to go tumbling to their deaths.

//''Trained Mounts.''// A griffon raised from an egg can be trained to serve as a mount. However, such training is time consuming, expensive (mostly for the ample food the creature requires), and dangerous. Expert trainers well versed in the griffon's legendary ferocity are typically the only ones able to raise these creatures safely.

Once trained, a griffon is a fierce and loyal steed. It bonds with one master for life, fighting to the death to protect that rider. A griffon mount retains its ravenous appetite for horseflesh, and a wise master ensures that a griffon remains satiated with other prey when passing through civilized lands.
This fortress marks the seat of the [[gargoyle]] [[warlord]] [[Cairngorm]]'s fiefdom in [[Droaam]]. Its population consists mostly of [[goblin]]s and [[orc]]s.
The [[Daughters of Sora Kell]] provide the laborers of [[Droaam]]
with basic sustenance, which is served at dining halls
known as “grist mills.” This name is drawn from the
primary dish—a form of ground meat called //grist//,
prepared in stew, pie, or sausage form. Grist is
tough and has a sour taste, but it is filling and the mills have
a seemingly endless supply. Few laborers have any
idea where grist comes from, and of those who do,
few care; however, it might disturb visitors. Grist
is ground [[troll]] meat. Each mill includes a stable of
imprisoned trolls. Some have been bred for this
purpose; others are being punished for incompetence; and some have chosen to make this sacrifice for their nation. Flesh is stripped away, slowly enough
to ensure that the troll can regenerate from the loss
without serious harm (though the pain is agonizing).
On its own, troll meat is highly toxic and carcinogenic, but the Daughters have devised
a magical mixture of herbs and spices that's blended with the ground meat and makes it edible.

The form of grist served in a mill changes daily—stew,
sausage, meat broth—but the substance remains the same, and
most easterners find it unpleasant. The one saving grace of grist is that it's free. So, enjoy a bowl of grist stew—there's plenty more where it came from!
The Grithic River in [[Khorvaire]] flows from the [[Byeshk Mountains]] into [[Crescent Bay]]. It forms part of the border between the [[Eldeen Reaches]] and the [[Shadow Marches]]. Due to the river's proximity to the [[Twilight Demesne]], aquatic [[fey]] known as [[naiad]]s can be found frolicking in this river.
This heavy belt is made of iron and leather. Two chains hang down the back and drag along the ground.

While wearing this belt, you are highly resistant to electricity and lightning-based magic.
The Group of Eleven was an [[Age of Giants]] alliance of eleven
[[giant]] city-states, each led by a powerful mage. Their
diverse culture valued internal and external competition,
believing it drove evolution. Each city-state studied a different [[plane]] of existence (leaving [[Fernia]] to the [[Sulat League]] and [[Dal Quor]] to the [[Cul'sir]]).
The [[Eldeen Reaches]] are
preternaturally fertile. Deep within the [[Towering Wood]], a region exists where
growth is truly phenomenal: the grove of the
Guardian Trees. The Guardian Trees dwarf the greatest
redwoods, and a wide variety of [[dire beast]]s inhabit the
realm beneath the dizzying heights of the canopy. The
Guardian Trees extend for thirty miles in all directions
and shelter a number of [[druid]] and [[shifter]] communities,
including [[Greenheart]]. Many [[druid]]s seek solace and meditate within the shelter of these giant trees.

Some say that the Guardian Trees are not only [[awaken]]ed
like the Great Druid [[Oalian]] but were once the elder [[druid]]s
of the [[Age of Monsters]]. Others believe that the place and
its trees are simply ancient growths from the time before
time began, when the world was different and new. Whatever the truth, the place teems
with old magic and ancient life. 
The Guardians of the Gate is a special division of the [[Sharn Watch]], established during the [[Last War]] to monitor the activities of foreign nationals and immigrants. Their duties have expanded since
the surge of refugees into [[Sharn]] following the [[Mourning]], and the Guardians of the Gate closely supervise the
district of [[High Walls]]. The Guardians are chosen from among the best soldiers of the Watch and are devoted to their city. Many of them, however, place the safety of the
city ahead of strict adherence to the law, and complaints
are raised against them from time to time for unnecessary violence against refugees. 
If this spell is cast by someone without the [[Mark of Warding]], increase the tier to "legendary".

You create a ward that protects up to 2,500 square feet of floor space for 24 hours. The warded area can be up to 20 feet tall, and shaped as you desire. You can ward several stories of a stronghold by dividing the area among them, as long as you can walk into each contiguous area while you are casting the spell.

When you cast this spell, you can specify individuals that are unaffected by any or all of the effects that you choose. You can also specify a password that, when spoken aloud, makes the speaker immune to these effects.

Guards and wards creates the following effects within the warded area.

//''Corridors.''// Fog fills all the warded corridors, making them heavily obscured. In addition, at each intersection or branching passage offering a choice of direction, there is a 50% chance that a creature other than you will believe it is going in the opposite direction from the one it chooses.

//''Doors.''// All doors in the warded area are magically locked, as if sealed by an [[arcane lock]] spell. In addition, you can cover up to ten doors with an illusion (equivalent to the illusory object function of the [[lesser illusion]] spell) to make them appear as plain sections of wall.

//''Stairs.''// Webs fill all stairs in the warded area from top to bottom, as the [[web]] spell. These strands regrow in 10 minutes if they are burned or torn away while //guards and wards// lasts.

//''Other Spell Effect.''// You can place your choice of one of the following magical effects within the warded area of the stronghold.

* Place torch-sized, hovering, glowing orbs in four corridors. You can designate a simple program that the lights repeat as long as //guards and wards// lasts.
* Place [[magic mouth]] in two locations.
* Place [[stinking cloud]] in two locations. The vapors appear in the places you designate; they return within 10 minutes if dispersed by wind while //guards and wards// lasts.
* Place a constant line of strong wind in one corridor or room.
* Place a [[suggestion]] in one location. You select an area of up to 5 feet square, and any creature that enters or passes through the area receives the suggestion mentally.

The whole warded area radiates magic. A [[dispel magic]] cast on a specific effect, if successful, removes only that effect.

You can create a permanently guarded and warded structure by casting this spell there every day for one year.
A flash of light streaks toward a creature of the caster's choice within 120 feet. On a hit, the target is burned by radiant light, and a mystical dim light glitters on the target for 10-20 seconds, making it much more visible.
This branch of the [[Unity]] of [[Riedra]] oversees education and
[[religion|Path of Inspiration]]. It is responsible for raising children, a task that
involves equal parts education and indoctrination. When
a youth becomes an adult, the pathfinders choose his
trade and his pairing. The Guiding Path is led by Lord
[[Surasek]] ([[kalaraq]] [[Inspired]]) from the city
of [[Durat Tal]]. 
Breland's other
arcane order (smaller than the [[Esoteric Order of Aureon]]) encourages independence and innovation,
qualities that contribute to a mutually uncomfortable
relationship between the Guild of Starlight and Shadows and the [[Sharn Watch]]. The schools of conjuration,
enchantment, and illusion are favored by this group.

[[Warlocks|warlock]], especially those of the [[archfey]], are generally
welcome. Members of the Esoteric Order look down
on Starlight [[wizard]]s, and in turn the guild members
often mock the wizards of the Esoteric Order and play
pranks on them. The Guild of Starlight and Shadows
has its hall in the [[Deathsgate]] district in [[Middle Tavick's Landing]]. 
The Gulf of Ingjald lies off the coast of mainland [[Lhazaar Principalities]], near the town of [[Skairn]]. It connects to the [[Eel Bay]].
The Gulf of the Moon is a body of water off the northwest coast of [[Aerenal]]. It is fed by a river that flows from further inland, originating near the capital city of [[Shae Cairdal]].
This former [[masquer]] for the [[Thousand Eyes]] now serves as
the face of the [[Dream Merchants]] in [[Dar Jin]]. He is the
contact any PCs eventually reach when searching for the Merchants, and most likely the only Dream Merchant they'll ever see (it's up to the DM to decide who else
is lurking in the shadows or if, in fact, Gusan is still working for the [[Thousand Eyes]]). Gusan enjoys playing
psychological games, and he always investigates clients
before he deals with them, searching for something he
can use as a handle. 
This item appears to be a scimitar hilt. While grasping the hilt, you can cause a blade of twisting eddies of pure elemental wind to spring into existence, or make the blade disappear.

When attacking with the scimitar, you can extend the range of your attacks up to 30 feet.
Haara is a [[guul’dar|bugbear]] hunter of the [[Kech Ruuska]]. She can be
found in the wild, putting the latest generation of magebred
beasts through their paces. Is she hunting a [[monstrosity]]
that attacks the adventurers, or are the heroes themselves
her prey? It’s possible that Haara is a [[lycanthrope]]—the
result of Ruuska experiments with the curse. She is fierce
and joyful, and respects both skilled hunters and [[druid]]s.
Haftak ir'Clarn ([[human]]) runs this bookstore and bindery, and uses its facilities to
publish the [[Sharn Inquisitive]], the city's local chronicle.
A minor member of one of [[Breland]]'s noble families,
Haftak has a prominent [[cousin|Ruken ir'Clarn]] in the [[parliament|Breland Parliament]]
and a significant fortune at his disposal, which
allowed him to start the //Inquisitive// as a sideline to his
marginally profitable main business. 
Hags are terrifying creatures whose origins go back to the beginnings of [[Eberron]]; the [[night hag]]s were among the children of [[Khyber|Progenitor Dragons]] and ruled the world alongside the [[rakshasa]] during the [[Age of Demons]]. The mortal hags of Eberron are the descendents of the night hags.

Although different hags are unique in appearance and mannerism, they have many things in common. All take the form of crones whose bent shapes belie their fierce power and swiftness. Despite faces cracked by wrinkles and heavy with cruelty, their eyes shine with cunning. Their long nails have the strength of steel and are keen as any knife. And finally, all hags possess innate magic and are extremely long-lived, but with the exception of [[night hag]]s, are not [[immortal]].

The most prominent hags on [[Khorvaire]] are the [[Daughters of Sora Kell]].

!! Types of Hag

<<list-links-article "[tag{!!title}sort[title]]">>
A [[hag]] coven can craft a magic item called a hag eye, which is made from a real eye coated in varnish and often fitted to a pendant or other wearable item. The hag eye is usually entrusted to a minion for safekeeping and transport. A hag in the coven can see what the hag eye sees if the hag eye is on the same plane of existence. A hag eye has darkvision with a radius of 60 feet. If it is destroyed, each coven member takes psychic damage and is blinded for 24 hours.

A hag coven can have only one hag eye at a time, and creating a new one requires all three members of the coven to perform a ritual. The ritual takes 1 hour, and the hags can't perform it while blinded. During the ritual, if the hags take any action other than performing the ritual, they must start over.
The Hailana Islands are a set of three islands off the coast of [[Khunan]], [[Syrkarn]] in [[Sarlona]]. Ruins of [[shulassakar]] and [[yuan-ti]] cities and outposts are very common on these islands; it is said that this was the site from which the yuan-ti launched their desperate voyage to [[Argonnessen]] and left their homeland behind during the [[Sundering]].
This silver hair pin has a bright sapphire eye set into its center. While the pin is activated, you can close one of your eyes to see through the hair pin's eye until you move more than 10 feet away from the hair pin or you choose to end this effect.
Carved into a volcanic mountainside, a fiendish citadel stands surrounded by jungle, fields of shining obsidian, and caustic geothermal vents. Powerful magic shields the city from the threat of an eruption, but smoke still rises from the caldera high above the ruins. The [[dragonborn]] and [[lizardfolk]] of [[Q'barra]] call this place
Haka’torvhak, or “Throne of the Holy Dragons.” They speak with awe and dread of the fortress’s immortal guardian, the great [[black dragon]] [[Rhashaak]].

In the [[Age of Demons]], Haka’torvhak was a great bastion of the [[fiend]]s, and the site
of a major battle with the [[couatl]]s and [[dragon]]s. The dragons bound the great fiend [[Masvirik]] beneath the volcano and established a line of dragons and [[dragonborn]] as guardians of its resting place. Appearing much as it did millennia ago, ancient Haka’torvhak is rumored to contain treasures from the earliest days of Eberron.
Halak Boromar is the family's chief enforcer. The [[Boromar Clan]] still exists in the [[Talenta Plains]], and Halak is a recent immigrant. As a result, he has more of a
taste for blood than his city-bred kinfolk, and he
likes nothing better than tracking and killing [[Daask]]
[[goblin]]s and [[gnoll]]s. He is illiterate and not the brightest [[halfling]] at the best of times, but he is quick, strong, and surprisingly deadly. Halak commands the Clawfoots, the family's personal guard; there are 15 Clawfoot warriors, all of whom are fierce halfling barbarians. 
1400 years ago, the [[dragonmarked house]]s launched an inquisition against bearers of [[aberrant dragonmark]]s, a conflict which came to be known as the [[War of the Mark]]. The houses had the advantage of greater numbers, but the aberrant marks of the time carried tremendous destructive power.

In the third year of the war, Lord [[Halas Tarkanan]] organized those with aberrant marks, as well as other oppressed peoples such as [[goblin]]s, into a proper military force to oppose the dragonmarked houses. Tarkanan, known as
“The Earthshaker,” carried an [[aberrant mark|aberrant dragonmark]] that gave him
great influence over the elemental forces of earth and fire,
but his strategic brilliance was even more important to the
course of the war. His consort was an enigmatic woman
called the [[Lady of the Plague]]. Though she is commonly seen
as a monster, the records of the war suggest that she was
loath to use her power unless forced to, and might even
have despised the aberrant mark she carried.

Though Tarkanan's efforts extended the conflict, the
aberrants fell in the end. Tarkanan himself was trapped
in the siege of [[Sharn]], which he had made his stronghold
and base of operations. When it became clear that he and
his followers were doomed, he and the [[Lady of the Plague]]
unleashed the full power of their marks—power sufficient
to destroy the city. Terrible quakes caused parts of the
city to collapse, and rivers of lava flowed up from the fiery
lake deep below. Swarms of vermin and deadly plagues
ravaged the invaders and defenders alike. Some claim that
the Lady of the Plague's death-curse still lingers in the depths
of [[Old Sharn]].

Halas Tarkanan was a [[Karrnath]]i officer before he developed his mark, a brilliant soldier who learned the arts of war at [[Rekkenmark|Rekkenmark Academy]] and the ways of House [[Deneith]] from his mother. 
//I'm not half anything. You [[human]]s come from [[Sarlona]]. [[Elves|elf]] are from [[Aerenal]]. Me? I'm a true child of [[Khorvaire]].//

<div align="right">—Nandon Tam, Khoravar activist </div>

From the Towering Woods of the [[Eldeen Reaches]] to
the slums of [[Sharn]], half-elves are found across [[Khorvaire]]. New half-elves are born in every generation from
pairings between [[human]]s, [[elves|elf]], and other half-elves,
with children typically clinging to a parent's culture.
Over centuries, though, half-elves have developed their
own communities and traditions, giving them an identity strengthened by the rise of House [[Lyrandar]] and
House [[Medani]]. Members of these communities generally dislike the term "half-elf," instead calling themselves Khoravar, an Elvish term meaning "children of
Khorvaire."

The [[elves|Aereni]] of [[Aerenal]] have never allowed a half-elf into
the Undying Court, and the [[Valenar]] [[elves|Tairnadal]] don't consider
half-elves capable of channeling a Valenar ancestral
spirit. Among humans, though, half-elves don't experience any more prejudice or bias than members of other
races, and some half-elves could easily be mistaken
for human.

In making a half-elf character, consider whether you
were born in a Khoravar community, or if your parents
were members of different races. Is your half-elf identity
a source of pride, a simple fact of life, or something that
has been difficult for you? 

!! Appearance and Longevity

To humans, half-elves look like elves, and to elves, they
look human. In height, they're on par with both parents,
though they're neither as slender as elves nor as broad
as humans. They range from under 5 feet to about 6 feet
tall, and from 100 to 180 pounds, with men only slightly
taller and heavier than women. Half-elf men do have
facial hair, and sometimes grow beards to mask their
elven ancestry. They tend to have the eyes
of their elven parents. 

Half-elves mature at the same rate humans do and reach adulthood around the age of 20. They live much longer than humans, however, often exceeding 180 years. 

!! Khoravar

The culture that has developed among [[Khorvaire]]'s native half-elves places a strong emphasis on hospitality
toward other Khoravar. They don't expect each other to
put themselves in danger for strangers' sake, but when
possible, half-elves do what they can to help others with
information, shelter, and the like. Khoravar communities have weekly unity dinners where local news and
events are shared; these meals are a great chance to
hear about local events and opportunities. 

Many Khoravar espouse the idea of "the bridge
between," the notion that the Khoravar are called to
facilitate communication and cooperation between
members of different cultures or species. Khoravar who
follow this philosophy often become [[bard]]s, diplomats,
mediators, or translators. Others are fascinated by their
distant connection to the [[fey]] and seek to build bridges
between the Material Plane and the Feywild of [[Thelanis]]. These Khoravar often become [[Greensinger]] [[druid]]s
or [[warlock]]s with [[archfey]] patrons.

Khoravar speak both Common and Elvish, and among
themselves they often blend these two together. This
pidgin makes perfect sense to anyone who speaks both
languages, but someone who speaks only one of them
will miss some words and subtlety of meaning.

As you create a Khoravar character, you have a wide
range of options to describe your backstory. The table below can provide inspiration for it. 

| !<<dr d10>> |!Origin |
| 1 |You're the linchpin of a Khoravar community in a major city, hosting unity meals and maintaining connections with every half-elf in the city. |
| 2 |You grew up in a small town dominated by [[human]]s. You didn't know any other half-elves, and you did your best to fit in. |
| 3 |You lived in the [[Eldeen Reaches]] as part of a small Khoravar community, trying to be a bridge between the [[human]] farmers in the east and the [[druid]]s and wilder folk in the west. |
| 4 |Your small Khoravar community has only survived in the slums of [[Sharn]] through the close, family-like support you show each other. |
| 5 |You're part of a community in [[Thrane]] whose devotion to the [[Silver Flame]] has led you to extend your unity meals to non-Khoravar. |
| 6 |Your Khoravar community is the crew of a [[Lhazaar|Lhazaar Principalities]] ship. |
| 7 |You're part of a tiny Khoravar community in [[Karrnath]] that's fascinated with death and the practices of your [[Aereni]] ancestors, transforming your unity meals into grim celebrations of death. |
| 8 |You're part of a tiny community of Khoravar living in an unexpected place, such as [[Droaam]], [[Darguun]], or even the [[Demon Wastes]]. Your people strive to find common ground with the native population. |
| 9 |You are associated with House [[Lyrandar]] or House [[Medani]], but you're more interested in the role the house plays in supporting Khoravar communities than in the work of its guilds. |
| 10 |You ride with the [[Valenar]], hoping one day to prove that you are worthy of taking on a patron ancestor. |

!! Half-Elves and Dragonmarks

Two [[dragonmark]]s appear among half-elf families: the
[[Mark of Detection]] is found in House [[Medani]] and the
[[Mark of Storm]] in House [[Lyrandar]]. Both houses were established families among the Khoravar by the time their
dragonmarks appeared, and they remain pillars of the
Khoravar's diverse culture. The Khoravar ideal of building bridges supports the work of both houses.

With the Mark of Storm, House Lyrandar operates
sailing ships and flying vessels, as well as bringing rain
to farmlands. House Medani uses the Mark of Detection
to offer services of personal protection. 
//We are hunters in a world of sheep.//

<div align="right">—Kalaash'arna, Tharashk inquisitive </div>

With the rise of the [[dragonmarked House|dragonmarked house]] [[Tharashk]],
[[orc]]s and half-orcs have spread through the [[Five Nations]]
and beyond. In general, the people of the Five Nations
know little about half-orcs. When people imagine a half-orc, they usually think of a Tharashk bounty hunter or
dogged inquisitive, but a few ignorant sorts might still
hold the stereotype of a "simpleton from the swamps." 

See "[[orc]]" for information about half-orc communities in the [[Shadow Marches]].

!! Appearance and Longevity

Half-orcs' grayish pigmentation, sloping foreheads,
jutting jaws, prominent teeth, and towering builds make
their [[orc]]ish heritage plain for all to see. Half-orcs stand
between 5 and 7 feet tall and usually weigh between
180 and 250 pounds. 

Half-orcs mature a little faster than [[human]]s,
reaching adulthood around age 14. They age
noticeably faster and rarely live longer than 75 years. 

!! Half-Orcs and Dragonmarks

The [[Mark of Finding]] appears among half-orcs of House
[[Tharashk]]. Strangely, both pure [[orc]]s and [[human]]s associated
with the house cannot develop this mark. As a result,
[[dragonmark]]ed half-orcs work extensively with humans,
orcs, and unmarked half-orcs in pursuit of the house's
mission of bounty hunting, [[inquisitive]] work, and prospecting. Across [[Khorvaire]], anyone who wants to find something or someone turns to House Tharashk. 
These leather boots with wooden soles are heavy and uncomfortable. Once worn, these boots can only be removed by speaking a command word. The wearer becomes incapable of running. If the wearer attempts to run, the boots immediately cause them to trip.
This simple belt has a dozen leather hoops. Anything hung from one of these loops, such as weapons or pouches, weighs half as much.
//Zombies? Minotaurs? They don't scare me a bit. But a howling halfling warrior charging in on a [[clawfoot]] raptor? Most terrifying thing I've ever seen. //

<div align="right">—Sir Danton ir'Lain, Brelish knight</div>

The diminutive halflings of [[Eberron]] originate from eastern [[Khorvaire]], and many nomadic tribes of halflings still travel
the [[Talenta Plains]]. The appearance of [[dragonmark]]s
among the halflings spurred their slow migration across
Khorvaire, spreading their services of healing and hospitality along with the migration of the earliest humans
across the continent. Now they are found in every part of
Khorvaire, putting their distinctive talents to use.

[[Lightfoot|lightfoot]] halflings are the more widespread halfling
subrace, especially in the Talenta Plains, but [[stout]] halflings are found within nearly every halfling community.

!! Appearance

Halflings are inclined to be short and stout, standing about 3 feet tall, and weighing
between 40 and 45 pounds.

Halflings' skin ranges from tan to pale with a ruddy
cast, and their hair is usually brown or sandy brown
and wavy. They have brown or hazel eyes. Halfling men
often sport long sideburns, but beards are rare among
them and mustaches even more so. They like to wear
simple, comfortable, and practical clothes, favoring
bright colors. 

!! Talenta Halflings

The halflings who migrated across Khorvaire in the
company of humans ended up looking very [[human]] in
dress, manners, and customs. Their cousins who remain in the [[Talenta Plains]] could hardly appear more different. In their homeland, halflings are nomads who ride
domesticated [[dinosaur]]s across the wide plains. Those
few Talenta halflings who journey across Khorvaire are
visibly out of place, both attracting curious stares and
expressing plenty of curiosity of their own about the
strange ways of Khorvaire's cities and towns.

As you make a Talenta halfling character, give some
thought to why your character left the open plains. Perhaps you served as a mercenary scout in the [[Last War]],
and you've remained with the comrades you met in the
conflict. Maybe your tribe was wiped out by a foreign
enemy, spurring you to travel the wider world in search
of information and revenge. You might be guided by the
spirits, who send you whispers and visions that lead you
on your adventures. You could be an official envoy of
your tribe seeking allies in the world, or simply sent to
learn more about the lands beyond the plains.

Also, consider your relationship to the [[dinosaur]]s that
play a central role in the life of the Talenta halflings.
You might flavor your spells and class features as dinosaur-related: you could have a [[clawfoot]] companion, take
on a [[fastieth]] form, name your combat styles and maneuvers after dinosaur attacks, or take inspiration from a [[glidewing]] (pteranodon) totem spirit. Or you could simply
wear a dinosaur mask (as many Talenta halflings do),
adorn yourself with claws and teeth from past dinosaur
companions, or adopt dinosaur-like mannerisms. Wherever you travel, your connection to the dinosaurs of your
home remains strong.

Finally, it can be helpful to decide on a couple of behavioral quirks that reflect your culture. The table below can provide some inspiration. 

| !<<dr d10>> |!Halfling Quirk |
| 1 |You are constantly amazed by things the people of the [[Five Nations]] take for granted. |
| 2 |You pattern your behavior on a species of dinosaur. |
| 3 |You are extremely curious, and you're always searching for new experiences. |
| 4 |You love to boast, and you're always tel ling exaggerated stories of your amazing adventures. |
| 5 |You wear a mask that you believe holds the spirit of your former dinosaur mount. You like to talk to it. |
| 6 |You don't understand the concept of "facts." To you, everything is a story, and truth is in how you tell it. |
| 7 |You are annoyed by buildings and tools designed without consideration for small people. |
| 8 |You seek vengeance for a wrong done to your people. |
| 9 |You never forget an insult or injury. |
| 10 |You ascribe everything to the work of spirits. |

!! Halflings of the Five Nations

Quick and charming, many halflings put their natural
talents to use as [[bard]]s, barristers, merchants, and politicians throughout [[Khorvaire]]. Of course, these same
talents prove equally useful for burglars, grifters, and
other criminals. 

Of particular note is the halfling-run criminal enterprise of the [[Boromar Clan]], the most powerful crime syndicate in [[Breland]]. The Boromars are based in [[Sharn]],
but their influence reaches across the nation and even
to the distant city of [[Stormreach]]. If you decide to play a
halfling rogue, or a character with a criminal or charlatan background, consider (with your DM) whether you
have a connection to the Boromar Clan. You could be a
freelance operative who occasionally gets jobs from a
Boromar underboss. You might have a cousin in the syndicate, who occasionally pulls you in to criminal affairs.
Or you could even be the reluctant heir of a Boromar
leader; perhaps you've gone on the run rather than take
your appointed place in the criminal empire, but your
past may yet catch up with you. You could also be the
point of contact who has made the Boromar Clan your
party's group patron.

!! Halflings and Dragonmarks

Two [[dragonmark]]s appear among the halflings of
[[Khorvaire]], the [[Mark of Healing]] in House [[Jorasco]] and
House [[Ghallanda]]'s [[Mark of Hospitality]]. Both marks are
ancient, first manifesting among the halflings about the
same time that the [[elves|elf]] of [[Aerenal]] received their first
marks—centuries before the arrival of [[human]]s on Khorvaire. Sometimes halflings of House Ghallanda joke that
their mark prepared them for the arrival of humans by
allowing them to make their new guests comfortable in
Khorvaire. There's actually some truth in the humor: the
services provided by both halfling houses helped enable
the spread of humanity across the continent.

With its powers related to food and shelter, the Mark
of Hospitality was a boon to the early halfling nomads,
but now it allows House Ghallanda to run the best inns,
hostels, and taverns in the land. Similarly, the Mark of
Healing has always been a boon to both nomads and
settlers facing dangerous wilds, and House Jorasco still
employs both magical and mundane healing techniques
to tend to the well-being of patients across Khorvaire. 
In the jungles northeast of the [[Q'barra]]n city of [[Newthrone]] is a
House [[Jorasco]] [[enclave]] built on ancient ruins of
uncertain origin. The [[halfling]]s of the enclave maintain their distance from but are not overtly hostile to the [[dragonborn]], the [[Cyran|Cyre]] settlers, and the [[lizardfolk]]
living nearby. They are cautious about unexpected
visitors, however, because their enclave is built atop
ancient ruins that contain powerful magic.

The Hall of a Thousand Mirrors is accurately
named. Below the stone and wood of the [[enclave]] is
a maze of corridors; a full-length mirror stands at
each junction, making navigation difficult. For most,
walking through the Hall of a Thousand Mirrors is
merely unnerving. But those suffering from magical
curses or madness find that the mirrors somehow
display their afflictions—and then their nightmares
walk out of the mirrors. If a cursed or maddened
visitor can somehow fight off the images and walk through the Hall of a Thousand Mirrors, then the last mirror shows a normal reflection, and sanity and
normal life return.
The [[Hall of Justice]] is an immense complex containing an
impossible number of courts and chambers of inquiry. In
smaller chambers, [[immortal]]s debate the actions of the beings
observed in the [[Panopticon]]. There are [[angel]]s discussing
the [[Treaty of Thronehold]], while [[inevitable]]s dissect the latest
actions in the endless wars of [[Shavarath]]. These debates are
pro forma; while a judgment is made and recorded in the
[[Infinite Archive]], no action is ever taken. The weightier matters
are resolved before an [[inevitable]] tribunal, led by a Kolyarut,
an inevitable representative of the great arbiter of impartial
justice whose spirit permeates the hall itself. The tribunal
is typically filled out with a [[planetar]] and an [[amnizu]], each
working to sway the Kolyarut's deciding vote to their side.

Adventurers who violate the laws of [[Daanvi]] are brought
before an immortal tribunal. Usually this is a straightforward
matter; the judges question the accused. The accused is
granted an Advocate and opposed by a Voice of Justice;
typically one of these is an [[angel]], the other a [[devil]]. Both
of these immortals may conjure images from the lives of
the accused, drawing on the records gathered from the
Panopticon. Such a case could be resolved quickly, but
depending on protocols invoked or evidence sought (“Your
honors, I'd like to show you three years of the defendant's
childhood”), a case can take quite a long time. Luckily for
the accused, the //Flowing Time// property of Daanvi ensures
that when—or if—they return to the Material Plane, time has
passed for their friends and foes much more slowly.

Once a case is resolved, the inevitable tribunal enacts
their judgment; this ruling is final, and can't be questioned
or appealed. The “Daanvian Judgment” section under [[Daanvi]] presents
ideas for penalties that might be imposed on a wrongdoer.
The Hammer is an island in the [[Lhazaar Principalities]]. Amazingly, this "island" isn't a natural island at all; it's actually a gigantic earth [[elemental]] from [[Lamannia]]! It never ventures far from its position off the coast of [[Lorghalan]] and [[Dreadwood Isle]], but it tends to swat at any sailing vessels that make their way into its bay.
(Ankylosaurus)

Thick armor plating covers the body of the plant-eating hammertail, which defends itself against predators with a knobbed tail that delivers a devastating strike. Some varieties of hammertail have spiked tails.
The massive monoliths of [[Riedra]] serve many purposes.
They draw on the emotions of the nearby populace and
transform these thoughts into psychic energy, which is
used to power many systems in nearby communities. More
importantly, they allow the [[quori]] to shape the dreams of
masses of humans, and in so doing, to prevent change in
[[Dal Quor]]. Most importantly, the hanbalani are slowly bringing [[Dal Quor]] into alignment with [[Eberron]], repairing the damage inflicted by the [[giant]]s [[ages ago|Age of Giants]]. Already, the [[quori]] are able to possess willing humans. As more monoliths are built, quori might be able to possess other willing creatures, and [[manifest zone]]s tied to [[Dal Quor]] could appear across the world. Eventually, the quori should be able to
physically manifest on [[Eberron]].

Along with the functions detailed in the Monolith Features section below, these are the known functions of the hanbalani, but they could just be the beginning. The
monoliths might be physically transforming Eberron
into a replica of [[Dal Quor]] or granting [[quori]] the ability
to rapidly regenerate their [[psionic|psionics]] power.

''Getting the PCs Involved:'' The [[Arcane Congress]]
and the [[Twelve]] know of the hanbalani, but they have little
idea what these massive structures do. Explorers might
be sent to study a monolith, to try determine what its
purpose is. Once this information is known, PCs might
find that shutting down a monolith is a vital step in any
sort of plan involving a [[Riedra]]n city. Alternatively, PCs
could join a group of [[Akiak]] or [[kalashtar]] commandos on
a mission to destroy as many hanbalani as possible.

!! Monolith Features

!!! Shell

Monoliths vary in size and shape, but they are usually
egg-like, approximately 300 feet tall and 100 feet wide.
When hanbalani are in close proximity to one another,
such as within a major bastion, they tend to be smaller.
They are constructed of psionically reinforced steel and
[[crysteel]]. A monolith shell has apertures at the base, and
these doorways are up to 15 feet wide.

The "floor" of a monolith is open to the terrain on
which it's built. Inside, a monolith is cavernous. It has
no features aside from the interior wall, the core, and a
small aperture at the top that leads to the controls.

The shape and reflective interior of a monolith,
as well as the design, the crystal core, and the control
crystals, link each hanbalan to [[Dal Quor]]. Beings on Dal
Quor can contact a particular monolith from a specific
corresponding area in a [[quori]] enclave on Dal Quor. Doing so
works the same as accessing a monolith from the control
crystals on Eberron.

Monolith shells are designed to contain the blast of
a detonating core. The shell's two inner and outer layers
have 3 feet of space between them. Each layer is nearly 2
feet thick, and nearly as hard as [[adamantine]].

!!! Core

A 10-foot-diameter pillar of pure crystal, the core of an
active monolith is warm to the touch. Its greenish light
illuminates the entire interior of the shell and creates
shadowy illumination within 300 feet of the apertures.

A monolith core acts as a giant [[cognizance crystal]], storing a great deal of [[psionic|psionics]] energy that can used by any psionic creature touching it. If expended, the energy slowly replenishes over 12-24 hours. This reserve is accessible from Dal Quor, so a monolith usually has <<dr "2d8">> hours of psionic energy at any given time.

Many monoliths enhance psionics used within 600 feet of them. Some are even more powerful, and can increase the area of their effect up to many miles.

Specific monoliths are often tied to powering other functions used to maintain order and provide comfort in [[Riedra]]. These include [[dreamshaping]], the [[Soothing Voice]], [[climate control|Riedran climate control]], [[crystal illumination]], and [[scry shielding|psionic scry shielding]]. In these cases, the psionic empowering effect is suppressed unless the core's function is changed (see Controls below). 

If a monolith's core is broken or shut down, the monolith and all its subsidiary utilities cease functioning. When a core is improperly tampered with, it can explode. It
might also explode 10-60 seconds after it suffers heavy damage. Creatures
outside the shell and not near an aperture are unharmed.

Shutting down or destroying a monolith core
immediately alerts any [[quori]] tapped into the monolith
from [[Dal Quor]]. Otherwise, the authorities are notified within a few minutes (or longer if the area is not heavily settled).

!!! Controls

At the top of a monolith's interior, a cluster of small crystals
and Siberys [[dragonshard]]s pulse and glow with multiple
colors, regulating the power of the monolith core. Here,
the monolith's functions can be altered and accessed.

A creature that possesses [[psionics]] can attempt to
manipulate a monolith's functioning. By touching the control crystals and making a successful attempt representing 1 minute of effort, the creature bonds with the monolith's control crystals. Failing the attempt causes the monolith to store the user's identity and description (mental picture), giving that information to
any [[Inspired]] or [[quori]] who contact the monolith within the
next few hours. Once a bond with the control crystals has
been established, additional attempts can alter the
monolith's function:

* ''Easy''
** Lure psionic creatures to the monolith.
** Activate dormant monolith safely.
* ''Moderate''
** Shut down active monolith safely.
** Sever connection to public utilities.
** Recharge the core's psionic reserve.
* ''Difficult''
** Sever connection to [[Dal Quor]].
** Set the core to explode in 10 minutes.
** Shut down a self-destruct sequence.

Trading [[position]] for [[effect]] allows the user to perform the action in half the time, but at a higher risk. A failure might mean that contact with the controls has been disrupted and must be reestablished. A [[desperate effect]] failure when controlling the monolith sends the monolith into
a psionic feedback loop, negating all further attempts at
control and causing the monolith's core to explode in 10-60 seconds.

In any case, a monolith's secondary functions
require power. Powering utilities with a monolith
requires it to be at full psionic reserve. While a
monolith is performing a secondary function, its power
can't be redirected or siphoned, so a saboteur must disconnect a monolith to siphon off its power. Then the monolith can't be reconnected to the utility until it
has fully recharged.

!! Special Situations

Here are a couple of special situations involving monoliths.

!!! Creatures

Because the core of a monolith radiates light and heat, as well as psionic power, a monolith built in a remote location attracts psionic creatures from
miles around. Tribes that travel on foot in [[Syrkarn]] and
the [[Tashana Tundra]] sometimes use monoliths as shelter.
Normal creatures living within a mile of a monolith can
have phrenic or psionically gifted offspring, but such
an occurrence is extremely unusual and more so if the
monolith is used to power a subsidiary function. If a
remote monolith ceases working, [[Inspired]] agents come
and wipe out any creatures in the vicinity, so inhabitants
are likely to oppose intruders looking to harm a wilderness monolith.

As indicated in the "Controls" section above, a character can use the controls to lure psionic creatures to a monolith. This call has a range of 1 mile, but it is not
a compulsion—non-sapient creatures usually respond, but cleverer creatures can choose not to. This tool is often useful to the [[Inspired]] or [[quori]]. If the call is not expected or
planned, they send troops to investigate. 

!!! Under Construction

If a monolith is still under construction, it has as many as three hundred workers
living in and around it, plus a squad of twenty Riedran soldiers (usually [[Stone|Stone Soldiers]]) led by a sergeant. After a
monolith is activated, the soldiers and a trained engineer remain stationed there for up to a week.

The interior of an uncompleted monolith is filled
with wooden scaffolding that rises up to 400 feet off the
ground. Workers use this scaffolding to hoist sections
of the shell into position during the building process.
While holding this silver hand mirror, you can press a button on its side to cause it to record
everything reflected on its surface for the next minute.

Thereafter, you can press a second button and cause the mirror to replay everything it
captured.

Once the events have played, the mirror forgets what it
recorded. 
This small, spring-loaded metal tube attaches to a belt.
The interior of the tube is an extradimensional space that
can hold a up to 50 total coins (crowns, sovereigns or galifars). The vault weighs ½
pound, regardless of its contents.

While wearing or holding the vault, you can speak an amount you wish to draw from the vault and press the lever on its side. If the vault contains at least that
many coins, it dispenses them. 

Placing a handy coin vault inside an extradimensional space created by a [[handy haversack]], [[portable hole]], or similar item instantly destroys both items.
This backpack has a central pouch and two side pouches, each of which is an extradimensional space. Each side pouch can hold up to 20 pounds of material, not exceeding a volume of 2 cubic feet. The large central pouch can hold up to 8 cubic feet or 80 pounds of material. The backpack always weighs 5 pounds, regardless of its contents. When you reach into the haversack for a specific item, the item is always magically on top.

If the haversack is overloaded, pierced, or torn, it ruptures and is destroyed, and its contents are scattered in the cosmos. If the bag is turned inside out, its contents spill forth, unharmed, but the bag must be put right before it can be used again. Breathing creatures inside the bag will begin to suffocate after a few minutes.

Placing a handy haversack inside an extradimensional space created by a [[bag of holding]], [[portable hole]], or similar item instantly destroys both items.
This small leather pouch appears empty, though sifting sand can be heard from within when shaken. While holding the sandbag, you can turn over the pouch and cause up to 1 pound of sand to pour from it.

Once a total of 1 pound of sand has been produced, the
magic ceases to function until the next dawn. 
Certain hemp ropes used in the execution of final justice can affect those beyond the reach of normal magics. While holding this noose, three times per day, you may cast [[hold]] on an [[undead]]. 
Haras Kant is a wealthy [[Brelish|Breland]] [[human]] aristocrat and a member of the [[Aurum]]. Like most members of the Aurum, he is interested in
increasing his personal power and wealth, whatever
the cost. Kant has a special interest in fabulous and
magic gems, and adventurers that obtain unusual
gemstones may attract his interest—which can be a
dangerous thing. 

Kant resides in [[Crystal Bridge]] in [[Upper Northedge]], [[Sharn]].
[[Dar Jin]] in [[Riedra]] maintains a specific harbor for all foreign ships. Outlander vessels
are met and escorted in by small [[Harmonious Sail]] warships. Anyone who wants to enter the [[foreign quarter|Jhodra]] must pass through a customs inspection. [[Clairsentience|clairsentience]] is used to detect magic, and inspectors confiscate any [[magic item]]s that has an aura of the [[conjuration]], [[enchantment]], [[evocation]], or [[necromancy]] school; confiscated items can be reclaimed upon departure.

The customs inspection is relatively brief, however,
compared to the interrogation process required to gain a
transit visa beyond the [[Jhodra]]. The visitor is questioned
about their reasons for coming to [[Riedra]], their occupation,
and whether they are carrying dangerous goods or has any
criminal intent. A typical customs agent specializes in sensing motives of those they question.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Onatar]]), average lodging (12),
poor lodging (80), average food (24), poor food
(120), poor trades (40), poor services (40), poor
residences (80), sporting arena<br/>
''First Impression:'' The buildings of this district
are a bizarre mishmash of architectural styles and
materials. Narrow spires stand across from squat
brick keeps and densewood halls. In addition to the
bridges connecting the great towers of the district, a
maze of suspended rope, wood, and stone roads connect the upper levels within the towers, creating the
impression of a mad spider web. Music and song can
be heard echoing from various towers, and people
laugh and run through the streets.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Tumbledown]] (north); [[Broken Arch]] (northwest); the [[Bazaar]] (southwest); [[Gate of Gold]] (below); [[Hope's Peak]] (above)

Today, common opinion believes that the architect
Hareth ir'Talan was mad. He should never have
been allowed to work on a project as important as the
construction of a [[Sharn]] district, but gold and family
connections gave him his chance. The result was
the district now known as Hareth's Folly. At first,
Hareth sought to include buildings in the styles of
all the contemporary cultures of the kingdom, so
that visitors from all parts of [[Galifar]] would feel at
home. As construction continued, he began to add
new designs, based on his visions of the architecture
of [[Syrania]], [[Thelanis]], and the other divine realms.
As a result, all manner of different buildings can
be found in Hareth's Folly, including some of the
strangest structures in Khorvaire. While most
believe that Hareth was mad, a minority feel that he
was driven by divine inspiration.

Hareth's Folly focuses on entertainment. Inexpensive inns, pubs, restaurants, and taverns fill the district. While there is less criminal activity here
than in [[Callestan]] or the [[Bazaar]], a great deal of gambling occurs in the back rooms of Hareth's Folly. In
particular, the district serves as a center for aerial
sports, including windchasing and [[skyblade]] matches.
Hareth's Folly is not represented in the [[Race of Eight Winds]]; instead, it provides a neutral position from
which the race begins and ends.

!! Noteworthy Locations

* The [[Hollow Tower]]. A vertically oriented arena used for aerial jousting and other unusual sporting events. 
* The [[King of Fire]]. A comfortable tavern and gambling hall, known as one of the safest places to bet on the Race of Eight Winds and the events at the Hollow Tower. 
The [[Riedra]]n navy transports
soldiers and patrols the coasts in search of smugglers and
would-be infiltrators. 
The Harmonious Shield is the army that stands between
[[Riedra]] and the countless dangers of the outside world.
Whether they're fighting the "treacherous" [[kalashtar]] on
the [[Adar]]an front, combating [[dromite]] forays, hunting
[[dwarves|dwarf]] in [[Dor Maleer]], or battling [[skulk]]s in the ruins
of [[Ohr Kaluun]], the soldiers of the Harmonious Shield
serve the [[Inspired]] on the field of battle.

The Harmonious Shield maintains garrisons in the
bastion cities, and it has independent fortresses spread
along the borders and in areas deemed to be especially
dangerous. The largest fortresses are called ''kintams''. They are connected by permanent psionic teleportation circles, which allow swift transportation of troops and supplies. Kintams can be the size of cities, and new recruits are usually dispatched to a kintam to learn their trade.

Years of psychic indoctrination teach soldiers that
honorable death in battle is the surest path to advancement
in the next life. Discipline within the ranks is strict, and
looting and stealing are serious offenses. A soldier needs
nothing that isn't given to him by the [[Inspired]]. The same
training burns mercy and empathy from the minds of
Riedran soldiers, so a servant of the Shield feels nothing
for the people he kills. This conditioning doesn't always
take hold, however, and a few recruits find themselves
horrified by the brutal actions they must perform. Such a
warrior must either suppress these emotions or find a way
to escape before their "weakness" is discovered.

Riedran warriors believe they are fighting for a holy cause against monsters and those corrupted by evil spirits. Fiercely devoted to their nation, they are no more evil than the typical [[Brelish|Breland]] conscript or knight of [[Thrane]].

Harmonious Shield troops
are commanded by [[Chosen]]
and [[Inspired]]. The High Minister is the legendary
Lord [[Zoratesh]]. 

The Harmonious Shield trains and equips troops for
a variety of roles. In addition to the formal divisions listed below, the Harmonious Shield sometimes utilizes uncategorized specialists. For example, the Shield has access to a small corps of [[cleric]]s of the [[Path of Inspiration]].
These holy warriors are
reserved for the most
dangerous and crucial
operations. 

!! Divisions of the Harmonious Shield

<<list-links-article "[tag{!!title}sort[title]]">>
This magical shortbow has many strings, allowing it to be played as a harp. Arrows loosed from it whistle musically through the air.
A harpy combines the body, legs, and wings of a vulture with the torso, arms, and head of a human. Its wicked talons and bone club make it a formidable threat in combat, but its most potent weapon is its voice. To hear a harpy's song is to hear music more beautiful than anything else in the world. A traveler that succumbs to the entrancing effect of that singing is compelled to blunder toward its source.

Harpies in Eberron mostly live in the [[Byeshk Mountains]] in [[Droaam]], with small communities dwelling in the [[Graywall Mountains]] as well as the cities of Droaam. Some harpies also live in [[Sharn]], serving as House [[Tharashk]] mercenaries or agents of [[Daask]]. There are ten major flights (clans) living in the Byeshk Mountains: the Brass Talon, the Carrion Caller, the Crimson Wind, the Forgotten Choir, the Haunting Song, the Last Chant, the Last Dirge, the Rotwing, the Stormsinger, and the Wind Howler flights. Only four of these flights (Carrion Callers, Last Dirge, Rotwings, Stormsingers) have pledged loyalty to the [[Daughters of Sora Kell]]; these harpies who left the mountains
to “sing Katra's song” have embraced her vision and are thrilled
to be building a nation with their voices. The other flights are in varying degrees of opposition.

There is no singular god that all harpies worship. Each harpy flight worships their own god or goddess, though many scholars hold that these gods and goddesses are, in fact, aspects of the [[Dark Six]]. For instance, the harpies of the Last Dirge revere the Song of Passion and Rage, which is said to be an interpretation of the [[Fury]], while the Stormsinger harpies venerate the Stormsong, an aspect of the [[Devourer]].

Harpies of [[Droaam]] have very fine control of their supernatural voices,
being capable of inspiring a range of emotions. Harpies call the
hour and summon workers; they also help with crowd control,
serve as town criers, and entertain the people (see [[Culture of Droaam]], "Entertainment").

In representing a harpy character or interacting with one,
highlight their passion. Harpies //love// what they do; if they
don't, they won't do it. Singing isn't merely a magical tool; it's a
joyful act, a communion with the [[Fury]] and a work of art woven
together. Whether singing weary [[goblin]]s to sleep in a [[grist]] mill or
acting as a courier in [[Sharn]], harpies embrace life with absolute
zeal. But harpies hate just as strongly as they love—and there are
harpies who hate the Daughters and the entire idea of Droaam.

The dark wood on the northern shore of [[Lake Brey]] in [[Thrane]]
is called the Harrowcrowns. At the birth of [[Galifar]],
one great forest stretched from the [[Blackcaps|Blackcap Mountains]] to
[[Scions Sound]], including the woods now called the
[[Greenhaunt]], the [[Imistil Forest]], and the [[Thornwood]]
as well as the Harrowcrowns. Settlers through the ages have cleared most of the land for farming, and several small [[Thrane]] villages now surround the Harrowcrowns, despite the monsters that periodically seem to erupt from the forest and ravage the countryside for miles around.

Savage [[goblin]]s raided out from the Harrowcrowns in 465 YK, leading eventually to the discovery of an ancient [[Dhakaan]]i ruin in the heart of the forest. A team of scholars from [[Flamekeep]] never returned from its exploration of the ruins, and the ruins’ location has since been lost.

[[Ettercap|ettercap]]s and giant spiders, crazed [[dryad]]s and [[treant]]s, bloodthirsty [[gnoll]]s, and twisted [[foulspawn]] are among the monsters that have emerged from the forest to ravage the surrounding villages. Some have speculated that a planar connection—to [[Thelanis]], or perhaps the mad realm of [[Xoriat]]—is responsible for the plague of monsters, but it seems more likely that these creatures are native to the forest itself. 
Lhesh Haruuc Shaarat'kor ("High Warlord of the Crimson Blade"), is the chieftain of the [[Ghaal'dar]] tribes and leader of the nation of [[Darguun]]. In 969 YK, Lhesh Haruuc led an uprising that claimed southern [[Cyre]], a region which was recognized as an independent nation with the [[Treaty of Thronehold]]. Today, he is an aging king, and some worry his nation will collapse after his death.
The Harvest Monarch is an [[archfey]] tied to the land they govern.
When their people suffer, they're sickly. In prosperous
times, they're strong and vital. Sometimes they're
deposed and forced to walk their land in hiding; during
these times, they're known as the Long Wanderer or
the Exile. But they're the rightful ruler and are always
restored, and those who aid them are rewarded.
Hashalaq [[quori]] are loremasters and judges, and are commonly known as dreamstealers. In their natural form, hashalaqs are composed of hundreds of translucent tendrils. They can compress and configure these tendrils to form a wide range of simple shapes. A point of blue light suspended within its tendrils serves as the hashalaq's sensory organ, which can be moved around to suit the creature's current shape.

//''The Power of Pleasure.''// Hashalaq quori have studied their mortal prey for centuries. Inhabiting human bodies as [[Inspired]] has granted the hashalaq a deep understanding of the hedonistic urges of humanity. As a result, they have developed numerous ways to control humanoids through pleasure—even as they have developed a taste for such things themselves.

//''The Learned of Dal Quor.''// Hashalaq quori are the loremasters of [[Dal Quor]]. Even those hashalaqs who don't make use of [[Inspired]] vessels dedicate themselves to studying [[Eberron]] and the planes, and they are among the few quori castes whose members understand the ways of magic. In Dal Quor, the hashalaq quori are typically found as advisors to the [[kalaraq]]. They also serve as judges, policing the quori and ensuring that the rivalries of the [[tsucora]] never threaten the greater plans of the [[Dreaming Dark]].
[[Celyria|Celyria ir'Tain]]'s eldest son Hass is the heir apparent to the [[ir'Tain|ir'Tain family]] fortune.
Hass is a member of the [[Breland]] Parliament and
spends most of his time in [[Wroat]], but returns on
occasion to visit his mother and siblings. Hass ir'Tain
is an ardent supporter of Lord [[Ruken ir'Clarn]] and
his plan to abolish the Brelish monarchy after the
death of King [[Boranel|Boranel ir'Wynarn]]; while he believes that members of the aristocracy are inherently better equipped
to lead than commoners, he firmly believes that the
blood of King [[Jarot|Jarot ir'Wynarn]] is weak and that the time has come
to set the monarchy aside. 

While Duken is willing to wait for Boranel to die of natural causes, Hass is less
patient. Working with other members of the conspiracy at court, Hass has been considering various ways to embarrass the monarchy or even to hasten
the demise of King Boranel. Hass is not hungry for
power, and he believes that Duken should be the
prime minister after the fall of the monarchy; he is
actually pleased that Duken does not stoop to such
methods and feels that it shows his worthiness to rule.
But he is prepared to perform these questionable acts
in the service of the country—and he occasionally
hires adventures to do his dirty work. 
When this tattered grey [[wizard]]'s hat is worn, the user gains a thorough knowledge of the [[arcane|arcane magic]] arts.
This black wide-brimmed hat with red silk band always casts a dark shadow over the wearer's eyes, completely and subtly concealing their face at all times.
While wearing this hat, you can cast the [[disguise self]] spell at will. The spell ends if the hat is removed.

<<<
{{disguise self}}
<<<
While wearing this hat, you can cause it to summon a small illusory raincloud above your
head for 1 minute. The illusion creates the image and sound of pouring rain, accompanied by thunder and lightning. 
This soft, slouchy knitted wool cap can hold up to 200 pounds, not exceeding a volume of 25 cubic feet. The hat weighs 1 pound, regardless of its contents. Retrieving an item from the hat requires some time to shuffle around and find what you're looking for.

If the hat is overloaded, pierced, or torn, it ruptures and is destroyed, and its contents are scattered in the cosmos. If the hat is turned inside out, its contents spill forth, unharmed, but the hat must be put right before it can be used again. Breathing creatures inside the hat will begin to suffocate after a few minutes.

Placing a hat of holding inside an extradimensional space created by a [[bag of holding]], [[portable hole]], or similar item instantly destroys both items.
While wearing this hat, you can change the style, color, and apparent quality of the
material. The weight of the hat doesn't change and when removed, the hat becomes a plain, brown cap. 
This wide-brimmed hat of felted wool will never fall off the wearer's head, even in the most extreme of circumstances.
This wide-brimmed hat of cream-colored wool grows into a three-person tent when the command word is spoken.

Speaking the command word again causes the tent to
transform back into a hat, provided that no creatures are
inside. Any objects inside the tent when it collapses are
ejected and remain outside the tent as it folds.
This loose-fitting canvas hat is studded with fishing lures. When the command word is spoken, this hat grows into a decent 15ft dingy with oars and an anchor. The boat can hold up to five human-sized creatures comfortably.

When transformed back into a hat, any objects or creatures onboard the boat are gently ejected.
While wearing this brightly colored hat, you can speak its command word and cause both the hat and your head to become invisible until the hat is removed.
This cheap-looking black bowler hat was designed by mischievous students of [[Arcanix]] to prank their teachers. The hat changes the hair color of the wearer to something obnoxiously bright for up to six hours.
Three times per day, while holding the hat, you can speak a command word to summon your choice of a bat, a frog, or a rat. The summoned creature magically appears in the hat and tries to get away from you as quickly as possible. The creature is neither friendly nor hostile, and it isn't under your control. It behaves as an ordinary creature of its kind and disappears after 1 hour or when it is incapacitated.
The hathil plant grows in the swamps of the [[Shadow Marches]], and is useful for the casting of [[transmutation]] spells and the brewing of certain [[potion]]s.
//"This land is alive. It moves and multiplies, breathes and eats, sleeps
and dreams, wakes and watches, defends and attacks. It is a dance of
the manifested and unmanifested. It is in balance. We, its guardians,
should be likewise."//
<div align="right">—Bhimaani, Haztaratain</div>

Ancient and watchful, the Haztaratain order has been
around in some form almost as long as the land of
refuge has been called [[Adar]]. These mystics set body
and mind in balance. They use the strange dichotomies of Adar's landscape as metaphors for their martial
and spiritual training, becoming masters of earth and
sky. Although the order existed before the [[kalashtar]]'s
arrival, the revered founder of the sect, Hazgaal, is the
very monk who welcomed [[Taratai]] from [[Dal Quor]] to
Adar, whereupon he became Haztaratai. Since then, the
Haztaratain, popularly known as the summit sentinels
(or //parahdri// in [[Quori|quori]]), have been integral to the defense
of Adar. 

The ascetic nature of the Haztaratain order appeals to
those who focus on self-mastery; its martial spirit draws
those who concentrate on might rather than mysticism.
Still, experience with the supernatural is a must for
those who become parahdri. A desire to defend Adar is
paramount. These [[monk]]s are seldom religious—yet they
are attuned to the spiritual and internal worlds. 

To train as a Haztaratain, aspirants must visit the
[[Haztaratain Monastery]], gain approval and guidance from
the masters there, and undertake a pilgrimage to [[Ahdryatmin]]. The spirit's token is required as proof of success.

!! Playing a Haztaratain

As a Haztaratain, you are a fierce guardian of [[Adar]].
After taking time to blend body and spirit, you have
honed yourself into a weapon to destroy invaders. Like
many forces in Adar, you and your fellows are irregulars, each able to travel freely as personal desires and
the needs of the land of refuge dictate. Able to endure
where the weather takes the weak, you travel through
what others find impassable and fight in ways no one expects. What you cannot defeat, the mountains help you
elude. As you master yourself, you become the perfect
guerrilla warrior, mobile and reliant on neither weapons nor supplies.

Although the [[Haztaratain Monastery]] is an established stronghold, it does not contain only members of this order. It is named for an honored master.
This monastic fortress might be an anchor for you, or
it might be a site for a once-in-a-lifetime pilgrimage.
Haztaratains often greet one another as family, and all
Haztaratains are welcome at the monastery of the same
name. No one serves as leader or guru, unless such a
relationship is created by mutual consent.

!! Haztaratains in the World

//"The wind came howling down the valley, and it was dumping buckets
of rain before they appeared. Four of them came against over forty of
us. I don't know why or how I survived, my lord. I do know that you are
right—the people of Adar are monsters."//
<div align="right">—Riedran sergeant's report</div>

Haztaratains are for martial artists who want a little
spell or psionic flavor mixed into their repertoire.
This order focuses on the thematic elements relating
the monk to Adar rather than on spellcasting ability or psionic power. These monks are ferocious, but they're also distinctly [[Adaran|Adarans]]. Haztaratains make great
guerrillas and guardians, but an evil one can be a terror
across [[Adar]].
Haztaratain Monastery is famous among [[Adarans]]
for its role in the birth of the [[kalashtar]] race—it was here
that [[Taratai]] and her followers first found respite from
their flight. From here, Taratai made her pilgrimage
across [[Adar]]. Many adherents of the [[Path of Light]] see
Haztaratain Monastery as a holy site, and some even make
the treacherous journey to the place. For some, this is a
religious pilgrimage; for others, it's a step on the path to
becoming a [[Haztaratain]] monk.

Carved into a mountainside, the monastery rests on an escarpment above a fertile valley. From the watchtowers chiseled into the living rock of the high coastal peaks, the guardians can look onto the coast of [[Riedra]] less than 50 miles away. ([[Riedrans]] avoid this stretch of water, known for its sudden squalls and disdained for its nearness to [[Adar]].) Adaran settlements are also within a day's journey of the fortress. Villagers in these places regularly supply the Haztaratain Monastery's inhabitants with goods and services, counting themselves lucky to live so near the sacred site.
Overseeing the health of the [[Riedra]]n people,
servants of the Hand, a branch of the [[Unity]], rely largely on their medicinal skill to care
for their charges. Bastions include multiple halls of the
Hand. Most people receive mundane healing, but bastion
halls might have access to more powerful tools, such as a
[[cradle of healing]].

Although the Healing Hand is generally benevolent,
it has its darker side. Euthanasia is perfectly acceptable in
Riedran society, and the needs of the nation always come
before those of the individual. If someone who has a genetic
condition, a grievous injury, or a serious contagious disease
cannot be easily cured, he is killed. The Healing Hand also
disposes of the dead, typically through cremation.

Lady Xushila ([[usvapna]] [[Inspired]]) leads the Healing Hand from the bastion of [[Dar Ilash]].

!! The Healing Hand In Dar Jin

The Healing Hand maintains a large infirmary in the [[Jhodra]] of [[Dar Jin]] that provides mundane healing to those in need. In addition, the overseer Taan ([[Chosen]] [[ardent]]) can perform [[psionic|psionics]] healing. He usually reserves this power for [[Riedrans]] in need, but could help foreigners who have somehow earned his
respect. At the DM's discretion, Taan could be a member
of the [[Unchained]]. 
The spellcaster proclaims a holy word of recovery. A creature of their choice within 60 feet rapidly recovers from injuries. This spell has no effect on [[undead]] or [[construct]]s (but does affect [[deathless]] and [[warforged]]). 
The Heart is the original center of the city of [[Zarash'ak]], supported by the trunks of massive murk oaks. This area is dominated by the [[Tharashk]] enclave and its associated businesses and barracks. The [[dragonshard]]
refineries are deeper in the Marches, but at any given
time the vaults of the Heart hold a fortune in shards
waiting to be shipped to the east. The [[enclave]] of
Zarash’ak is the home of the [[Tharashk triumvirate]],
which sets the overall vision for the house. It is also
the seat of the [[Finders Guild]], and many Tharashk
heirs learn to harness their mystical gifts in the Heart
of Zarash’ak.

Also in the Heart of [[Zarash'ak]]:

* A [[Lyrandar]] [[airship]] tower
* A [[Sivis]] [[message station|speaking stone]]
* A [[Gold Dragon Inn]]
* A small [[Riedra]]n outpost, helmed by [[Inspired]] Ambassador Sosharani

The Heart is surrounded by the [[Ring]].
Touching this lustrous black gem will cure any disease. A [[night hag]] can also use a heartstone to physically enter [[Dal Quor]]. Only night hags possess the secrets and arcane abilities to create this item.
The Heavenly Fleet is the smallest of the [[Lhazaar Principalities]], though it is growing—in defiance of all predictions. Led by the winged Prince [[Lorrister]], the Heavenly Fleet is dedicated to bringing justice to the [[Lhazaar Sea]] and the rule of law to all its settlements. The [[paladin]] prince holds his crews to high ideals and hopes to impose those same ideals on the people of the Principalities. Currently, the Fleet consists of only three ships, and they primarily target lone pirates near their home port on [[Seventh]] island rather than antagonizing larger forces such as the mighty [[Cloudreavers]].

Even though the Lhazaarites greet [[Lorrister]]’s principles with scorn, people outside the Principalities who share his philosophy are attracted to his cause, and Lorrister
claims a large number of foreign supporters and suppliers. This influx of aid from such places as [[Thrane]], the Martial Temple of [[Dol Arrah]] in [[Starilaskur]], and numerous private benefactors translates into the finest gear and supplies for the Heavenly Fleet's ships and crews.
//''Raat shi anaa:'' The story continues. //

War drums are sounding in the depths beneath [[Darguun]]. [[Bugbear|bugbear]] champions hone their [[adamantine]] greatswords, and [[hobgoblin]] [[dirge singer]]s call the legions to battle. The warriors of Dhakaan are preparing to reclaim their stolen lands, and the nations of [[Khorvaire]] have no idea what's coming.

During the struggle with the [[daelkyr]], some [[Dhakaan]]i leaders saw the madness spreading among their people and knew it would destroy their civilization. They led
their forces into deep subterranean chambers and severed all contact with the outside world. In recent years these ancient clans—who call themselves the Kech
Dhakaan ("bearers of [the traditions of] Dhakaan", or "Keepers of the Empire")­—have finally returned to the surface.

The Dhakaani are utterly devoted to war, matched
only by the [[Valenar]] [[elves|elf]] in their devotion to the martial
arts. Their weaponsmiths and armorers know techniques that even the artificers of House [[Cannith]] cannot
duplicate. Throughout the [[Last War]], no nation faced any
other force that had the skill and resources of the resurgent Dhakaani.

But there is one obstacle to their rise: the Heirs of
Dhakaan have no emperor. The [[goblinoid]]s are divided
into clans, and each clan, or kech, believes its leader has
the right to control all the others. And so the champions
of Dhakaan continuously compete with each other to
prove their right to rule. The [[Kech Shaarat]] (Bladebearers) believe that leadership is best achieved through force of arms. The [[Kech Volaar]] (Wordbearers) believe that knowledge is the greater weapon, and they seek to recover artifacts and weapons that were lost when the empire fell. These and several less influential clans are competing for overall leadership, while the spies and assassins of the [[Khesh'dar]] (Silent Folk) remain neutral in the struggle, gathering information on the modern world and serving every clan.

At the moment, the Heirs of Dhakaan are maintaining
a low profile. They fight most of their battles underground, and occasionally dispatch small squads to carry
out missions on the surface. Humans usually don't know
enough about goblins to tell the difference between the
Dhakaani and the people of [[Darguun]]. The truth of the
matter is gradually spreading within Darguun, but no
one yet realizes the power of the force that lies beneath
their nation. 

!! The Heirs and the War

The [[Last War]] caused the Heirs of Dhakaan to finally
stir and emerge from their deep vaults. They recognize
that humanity has been weakened by its self-inflicted
wounds. The rise of [[Darguun]] and the proliferation
of that nation's [[Ghaal'dar]] mercenaries enables the
Dhakaani to move around [[Khorvaire]] without drawing
undue attention. And the [[Mourning]], ultimately, demonstrated that the races of the [[Five Nations]] could not be trusted with ruling Khorvaire. It was time for the
Dhakaani to return and subjugate the other races to
their firm hand once again. 

The Heirs of Dhakaan are devoted to war, with an
unmatched focus on sheer martial skill. Their weaponry and artillery are of the highest quality, and they
place their trust in strength of arms, not on magic. The
Dhakaani don't worship gods, and no [[cleric]]s or [[paladin]]s
are among them. The [[Kech Volaar]] have picked up some
of the elven traditions of [[wizard]]ry, and all clans have
bards known as //duur'kala// ([[dirge singers]]), but in general
the Dhakaani don't rely on magic on the battlefield. 

!! The Uul Dhakaan

Long ago, before the rise of the Empire, six [[hobgoblin]] kings fought over ancient [[Khorvaire]]. [[Jhazaal Dhakaan]], the greatest [[duur'kala|dirge singer]] of the age, called them together and sang "the song of the dar", reminding the kings that they were all one people. If the legend is to be believed, she crafted the dream of an empire and bound the goblinoids of the time to this dream. This [[Uul Dhakaan]]—Dream of Dhakaan—gave
the ancient goblins oneness of culture and purpose, uniting them under Jhazaal Dhakaan as the first //marhu//—emperor of Dhakaan. 

But this vision that bound the Six Kings together isn't just a metaphor. When mortals sleep, their spirits touch
[[Dal Quor]] and create temporary dreamscapes. Jhazaal Dhakaan
bound the spirits of the dar together, creating a vast, permanent
dreamscape within Dal Quor—a vision of the ideal empire.
With the spirit of every dar tied to this place, when one of them
sleeps, they dream of the empire and their place within it.

!! The Emperor Yet To Come

For the Kech Dhakaan emerging from their vaults, the modern
world is a waking nightmare. Modern [[goblinoid]]s are hollow
mockeries of the true dar. Foul //chaat'oor//—defilers—hold the lands of the
empire and pillage the treasures of the People. But the dar still
have their dream. They know what the world should be, and
know that together, somehow, they can defy the chaat'oor and
restore the eternal empire. However, a long path lies ahead. The
dar are badly outnumbered, and can't take on all of the [[Five Nations]] in open combat. They don't yet understand the enemy or know what they're capable of. The [[Kech Volaar]], in particular, realize the power of the wide magic of the Five Nations and the
[[dragonmarked house]]s, and recognize they need to know more. There's also the question of whether there's any hope for the modern goblinoids. Can they be instilled with Dhakaani values? Or are they no better than chaat'oor?

Only a new emperor can make this decision. But the last
emperor was lost to the //[[Kapaa'vola]]//—the "Treacherous Whisper", the psychic contagion created by [[Dyrrn]] that drove dar to madness—before the Kech Dhakaan
descended into the depths, and no single kech has the power to
create a new emperor. The [[duur'kala|dirge singer]] speak of the Emperor Yet
To Come, with the belief that once all the Keepers rise, a single
emperor will somehow win universal acclaim, uniting them all
against the chaat'oor. But whether they be warlord, [[dirge singer]], or
[[artificer]], it's unclear what will bring this to pass. The [[Kech Uul]]
believe that when a single dar has the support of the majority,
the [[Uul Dhakaan]] will reveal them—that the emperor will be
proclaimed and crowned within the universal dream. But even
if true, what will trigger this?

The [[Kech Shaarat]] believe that power will determine the
emperor. They have already absorbed the Kech Nozhii and are
pressuring the [[Kech Ruuska]], using a combination of force and
fear to convince the smaller clans that the path to victory lies
through uniting under a single clan. The Kech Shaarat would
prefer not to kill other dar, but Ruus Dhakaan is willing to take
steps to prove his power and right to lead, and Shaarat and
Volaar agents have clashed in the field.

Tuura Dhakaan of the [[Kech Volaar]] is following a different
path as she pursues the crown. She seeks to recover lost
artifacts, reminding the dar of their glory while also amassing
powerful tools. There are a few she is especially keen to
find: //Ur'taash//, the First Crown; //Guulen//, the Rod of Kings;
and [[Ghaal'duur]], the horn of [[Jhazaal Dhakaan]]. Ur'taash is
currently in the possession of the [[Kech Ghaalrac]], though its
authenticity is in question. The whereabouts of Guulen and
Ghaal'duur remain unknown. Beyond this, Tuura is evaluating
the modern world, working to see if others could be useful
allies. So while the Kech Shaarat remain convinced that this
conflict is solely based on dominance within the dar, the Kech
Volaar believe that knowledge of the modern world is vital to
any long-term success.

Other Keepers may devise their own paths to winning allies
or the throne, and there may be Keeper clans that have yet
to be revealed. For now, the Kech Dhakaan are focused on
gathering information and competing among themselves.
Once they unite behind a single leader, they'll have to decide
how to deal with the [[Darguuls|Darguun]], the [[dragonmarked house]]s, and
the [[Five Nations]].

!! The Kech Dhakaan

As the [[Kapaa'vola]] spread and the Empire of [[Dhakaan]] quickly
unraveled, many of its greatest leaders sealed their followers
in deep vaults. Each of these units took responsibility for
preserving one of the pillars of the empire. Together, they
called themselves the ''Kech Dhakaan''—the Keepers of the
Empire. The name of each individual clan was given based
on their chosen ideal; thus the [[Kech Volaar]] are Keepers of
the Word, and the [[Kech Shaarat]] are Keepers of the Sword.
[[Uul'kala|Uul Dhakaan]]—"dream singers"—helped to coordinate this effort and to maintain communication between the isolated vaults over time, but
there are [[kech]] vaults that never had uul'kala, and others
who lost their uul'kala over time.

Below is a list of keches, including descriptions of some
Keeper clans that are known or active. This isn't intended to
be a complete list, and DMs should feel free to add additional
kech—whether they have been in communication with the
others or have been in isolation—or to remove kech from
this list if they don't fit the story of a campaign.

Of these clans, both the [[Kech Shaarat]] and the [[Kech Volaar]]
have made their presence known in [[Darguun]]. But while the
Darguuls have heard of these clans, they don't fully understand
their origins. The other clans are currently obscure and
mysterious, though dramatic action could quickly bring
them fame—or infamy.

<<list-links-article "[tag[kech]sort[title]]">>

!! Dhakaani NPCs

Characters who approach the Heirs of Dhakaan expecting a ragtag band of [[goblinoid]]s are in for a rude awakening. The Heirs of Dhakaan are well equipped and fight with precision and efficiency, coordinating their efforts to eliminate spellcasters and other obvious threats. Dhakaani squads are utterly devoted to their kech leaders and their empire. All are bound by the principles of //muut// and //atcha// (honor and duty), but they believe that humans and their kin don't deserve to be treated with honor. All the goblinoid races work together among the Dhakaani, and all are convinced of the superiority of their culture. When forced to fight other Dhakaani, they will usually spare the lives of their opponents, but against all other adversaries—including other goblinoids—they are ruthless. 

| !<<dr d8>> |!NPC |
| 1 |A [[hobgoblin]] [[bard]] of the [[Kech Volaar]] leads an elite team of dungeon delvers to recover Dhakaani artifacts from ancient ruins. |
| 2 |A remarkably intelligent [[goblin]] studying at [[Arcanix]] or [[Morgrave|Morgrave University]] is actually a [[Khesh'dar]] spy identifying tomes of arcane knowledge worth stealing. |
| 3 |A Dhakaani strike force assaults a museum or a noble's private holdings, reclaiming goblin artifacts "pillaged" from ruins. These relics could be part of an [[eldritch machine]], or could simply have important ceremonial value. |
| 4 |A goblin spy stirs up trouble among the city goblins in a major city, using tales of their former glory to incite them to violence. |
| 5 |A string of mysterious bombings are actually the work of Dhakaani sappers testing the strength of modern fortifications. |
| 6 |A Dhakaani strike force attacks a [[Deneith]] outpost built atop a goblin ruin. Are the goblins just angry about the desecration, or is something hidden beneath the outpost?  |
| 7 |A [[bugbear]] of the [[Kech Shaarat]], to test the mettle of the adventurers, engages them in a series of guerrilla attacks as they are traveling through the wilderness. |
| 8 |A [[hobgoblin]] [[warlock]] seeks to harness the power of the [[daelkyr]] or the fiendish [[overlord]]s to win the imperial crown for her kech.  |

!! Dhakaani Campaign Themes

The Heirs of Dhakaan are a substantial military threat. The goblins can clash with adventurers while they are exploring ancient ruins, or they can launch strikes against outposts or vaults the adventurers are guarding. Whatever the Dhakaani do, it should be part of a mission objective. Is the goal to strengthen their kech? Gather information about the enemy? Recover Dhakaani relics?

Initially the Dhakaani should be mysterious: remarkably skilled goblins that fight to the death or disappear into the shadows. The characters might logically assume that they are [[Darguul|Darguun]] mercenaries. Over time, the
adventurers should learn more about them and realize
that they are the advance force of a great army.

The Heirs of Dhakaan can remain an enigmatic
foe, encountered only when they attack. But a group
of adventurers could come to earn the respect of their
Dhakaani foes and learn more about the enemy. Perhaps a group of adventurers chooses to respect the Dhakaani's claim to an artifact, surrendering it willingly.
If they do so, they could find out more about the goblins
and the struggle for leadership among the clans. Of all
the goblins, the [[Kech Volaar]] are the most interested in understanding the people of [[Khorvaire]]; if there's any chance to negotiate a peace with Dhakaan, it would be
with this clan.

As far as the goblins are concerned, [[human]]s stole
their lands, pillaged their tombs, and enslaved their
descendants. The Dhakaani aren't evil, but they believe
humanity to be brutal and cruel, people without //muut// or
//atcha//. Faced with an adventurer wielding a magic sword
taken from a Dhakaani ruin, the Heirs of Dhakaan are
rightfully angry and violent in their response to this
tomb robber. 

!! Heirs of Dhakaan Adventure Hooks

The table below offers some options for kicking off stories that involve the Dhakaani.

| !<<dr d12>> |!Dhakaan Adventure Hook |
| 1 |A scout patrol has gone missing near the border of [[Darguun]]. |
| 2 |A mining tunnel has collapsed, revealing a network of caverns leading into [[Khyber]]. The Heirs of Dhakaan are waiting in the darkness and decide to strike first. |
| 3 |A squad of goblins attempts to steal back spoils of a recent adventure, cursing the characters for being grave robbers. |
| 4 |A lone [[hobgoblin]] warrior stands at the gates of a town, intent on dueling the mercenary captain who slew their brother. The warrior has already killed ten soldiers that tried to remove them. |
| 5 |Race against a Dhakaani force to recover an ancient artifact from a ruin. |
| 6 |Defend a series of temples against Dhakaani raiders targeting these "houses of false gods." |
| 7 |Explorers discover a fragment of an ancient Dhakaani song that seems to tell of the true heir of Dhakaan. The complete lyrics might settle the question of succession. |
| 8 |The Dhakaani begin kidnapping [[warforged]] so that their [[artificer]]s can learn how to make their own [[construct]] soldiers. |
| 9 |In a sacked human settlement, a battle between two opposing forces of goblinoids breaks out. Which side was the cause of the destruction? |
| 10 |The [[Kech Shaarat]] send emissaries to a nearby city with a simple message: abandon the town within one week, or die. |
| 11 |Goblin scouts have been spotted far from Darguun, moving with uncharacteristic coordination and precision. |
| 12 |A representative of the [[Kech Volaar]] approaches the characters to request their help in confronting their rivals to maintain the balance of power among the Dhakaani. |

//''Raat shan gath'kal dor:'' the story stops but never ends.//
If any force in [[Riedra]] actually frightens the [[Inspired]], it is
the dissident group known as the Heirs of Ohr Kaluun.
Long ago, the nation of [[Ohr Kaluun]] was a center for sinister magic. Its priests performed terrible rituals invoking the [[Dark Six]], and its [[wizard]]s trafficked with [[fiend]]s in their quests for mystic power. In the [[Sundering]], the
people of this land were almost completely obliterated.
Some of the few who remain are [[skulk]]s or [[tiefling]]s, transformed by
foul spells and [[warlock]] pacts.

All loyal [[Riedrans]] know that the ruins of Ohr Kaluun are the haunts of //altavars//, and that the magic hidden within the war mazes is deadly and damning.
Still, some don't care. The Heirs of Ohr Kaluun knowingly embrace this darkness, hoping to gain power to raise themselves above the [[Inspired]]. [[Human|human]]s, [[tiefling]]s, [[skulk]]s, [[oni]], [[dwarves|dwarf]]—what binds these people together is a thirst for mystic knowledge and a hatred for the
[[Inspired]]. Like the first [[wizard]]s of Ohr Kaluun, they
are willing to sacrifice anything—or anyone—to gain the
power they seek. They oppose the Inspired, but anyone
who allies with the Heirs of Ohr Kaluun soon learns that
the enemy of an enemy is not always a friend.

Like the [[Cults of the Dragon Below]], the Heirs of
Ohr Kaluun are not a unified force. The [[Harmonious Shield]] and the [[Thousand Eyes]] are always hunting these foul wizards, and kill those they discover without hesitation. But new sects always rise from the ashes, innocents
corrupted by the promises of the darkness.

Despite their name, the Heirs of Ohr Kaluun are not
confined to the islands. A Kaluunite [[wizard]] could easily
take an interest in the forbidden lore of the [[yuan-ti]] or
the lost magics of the [[aventi]].

''Getting the PCs Involved:'' The Heirs of Ohr Kaluun are [[Riedra]]'s answer to the Order of the [[Emerald Claw]]—they're the people who are unquestionably up to no good. These people willingly accept damnation (or so they believe) in exchange for power and vengeance. They can be disturbing allies or unexpected foes for those exploring Riedra—a surprise for those who think the [[Inspired]] are the greatest evil in the land. The Inspired have conquered [[Riedra]], but they at least take care of the
people. If the Heirs of Ohr Kaluun took power, horror
would be the replacement for stability and oppression.
Lord Helkadesh is the [[gatekeeper|Iron Gate]] of the [[Jhodra]], the foreign quarter of [[Dar Jin]]. Tall and thin, Helkadesh is charming and witty—but iron lurks beneath
the velvet, and anyone who wants to obtain an entry visa is
personally questioned and [[mind probe]]d by Lord Helkadesh.
Helkadesh is an [[usvapna]] [[Inspired]] inquisitor and powerful telepath, capable of [[truesight]], and even possesses the ability to shatter a [[mind blank]].
Helkashtai, a powerful [[Inspired]] telepath, is ambassador [[Jorasesh]]’s aide-de-camp in [[Sharn]]. In addition to her administrative duties, she has become a fixture
in the social scene of Sharn, and can be found at
most of the major gatherings of the rich and powerful. She is beautiful and charming, and many of the aristocrats have come to value her skills as a mediator. A few young nobles have even sought her hand
in marriage, although she has rejected all offers.
Like Jorasesh, her warm and friendly demeanor
is a mask—a carefully crafted tool to help her gain
influence within the upper classes. The Inspired are
ruthless manipulators, and human lives and emotions are simply toys for their amusement. 
While this burnished sallet-style helm is worn, the user's head can be freely, easily, and painlessly detached from the user's body. The user retains total control over both the head and the body. 

If the helmet is removed, the head will act as if it has been severed and cannot be reattached.

See also [[ring of detachment]].
While wearing this helm, you can cast the [[detect thoughts]] spell from it. As long as you maintain concentration on the spell, you can send a telepathic message to a creature you are focused on. It can reply while your focus on it continues.

While focusing on a creature with detect thoughts, you can cast the [[suggestion]] spell from the helm on that creature. Once used, the suggestion property can't be used again until the next dawn.
To use this helm, you must have the [[Mark of Sentinel]].

This helm has 3 charges for the following properties. It regains
all expended charges daily at dawn.

//''Counterspell.''// You can expend 1 charge and
establish a defensive ward with a contingent [[counterspell]] spell.
The next time you can see an unfriendly creature within 60 feet of you casting any spell that targets you, the counterspell spell immediately takes effect whether or not you want it to, as if you had cast it. The ward ends immediately after counterspell takes effect or at dawn.

<<<
{{counterspell}}
<<<

//''Protection.''// You can expend 1 charge and cast the [[protection from energy]] spell on yourself.

<<<
{{protection from energy}}
<<<

''//Deflection Field//''. You can expend 1 charge after you suffer a consequence involving being attacked by a weapon. Downgrade the severity of the consequence by 1.
This simple helmet of [[bronzewood]] is crowned with two-foot-long elk antlers. It is enchanted with the [[fey]] magic of the [[Endless Weald]] in [[Thelanis]]. The wearer has greatly enhanced sense of smell and hearing, and can move freely and quickly through rough natural terrain. In addition, the wearer can never be lost in a forest; they always know the direction of a safe path, and they know which paths lead out.

These magical effects are suppressed if the wearer wields weapons or armor made of metal. If the wearer of this helm ever harms a [[fey]] of the forest, kills a natural beast with magic or for sport, or otherwise offends the [[Forest Queen]], the magic of the helm ceases to function until the wearer has redeemed themselves with the Queen.
Hezhaal is a [[hobgoblin]] [[dirge singer]] of the [[Kech Nasaar]]. She appears to be a young woman, but is much older than she seems. She can be an unexpected ally for adventurers
battling the [[Emerald Claw]], and is interested in destroying their “monstrous” [[undead]]. She's a skilled [[necromancer|necromancy]]
herself, and is studying the techniques of the non-dar; she's
particularly interested in the [[Odakyr Rites]] used to create
[[Karrnathi undead]]. 
''District Type:'' Temple district<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]],
[[Onatar]]), shrines ([[Aureon]], [[Boldrei]], [[Kol Korran]],
The [[Undying Court]]), upscale lodging (5), average
lodging (15), upscale food (15), average food (30),
exotic trades (23), upscale trades (26), average trades
(40), upscale services (40), average services (100),
upscale residences (20), average residences (80)<br/>
''First Impression:'' Shrines and temples line the suspended streets of High Hope. Compared to the gaudy trappings of [[Sovereign Towers]], High Hope appears
plain and functional. However, the temples are large
and well maintained, and throngs of devotees fill
the streets.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Oakbridge]] (southeast); [[Longstairs]] (below); [[Shae Lias]] (above)

The most impressive temples in [[Sharn]] are found in
the [[Sovereign Towers]] district of [[Middle Central]].
But the glory of these monuments is tarnished by the
corruption within the churches themselves. High Hope lacks the gilt trappings of [[Sovereign Towers]], but
what it lacks in pomp it makes up for with faith and
sincerity. In addition to the three primary temples
and the three large shrines, there are a wide range
of smaller monuments dedicated to other deities and
to religious heroes and martyrs. The people who live
in the district or who come to High Hope to pray are
typically quiet and serious in their devotions.

The councilor of [[Middle Northedge]] lives in
High Hope. [[Doran Cantar]] comes from a long
line of advocates and mediators. In addition to inheriting the wealth and talents of his family, Doran has a strong faith in the [[Sovereign|Sovereign Host]] Lady [[Boldrei]]; while
he does not serve as a priest, he draws strength and
minor mystical abilities from his faith. Doran often
consults with [[Daca]].

!! Noteworthy Locations

* [[Coldflame Keep]]. A garrison temple of the [[Silver Flame]], this place once housed a hundred templars dedicated to protecting [[Sharn]] from supernatural threats. It has largely been abandoned; only a dozen devoted templars and adepts remain in residence. 
* [[Daca's Watch]]. A [[gnome]] named [[Daca]] has been sitting on a pillar in [[Northedge]] for over a century, offering advice and encouragement. Though she doesn't claim to be a priest, many believe that Daca is blessed and guided by [[Boldrei]]. 
''District Type:'' Refugee slum<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrines
([[Dragon Below|Cults of the Dragon Below]], [[radiant idol]]s), poor lodging (2),
poor food (10), poor trades (50), poor services (30),
poor residences (440)<br/>
''First Impression:'' Many of the buildings in this
district are in a state of disrepair or have been vandalized. The people on the streets are haggard and
worn, watching everything with suspicious eyes.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Dragoneyes]] (southwest); [[Cogsgate]] (north); [[Torchfire]] (bridge, west); [[Blackbones]] (below); [[Dancing Shadows]] (above)

The [[Last War]] continued for over a century, and alliances shifted many times in its long course. After the [[destruction of the Glass Tower|Crystalfall]], the [[city council|Sharn Council]] became gravely concerned with the threat of sabotage and terrorism. High Walls, a former residential district, was
converted into a ghetto for suspicious residents or
travelers—a virtual prison camp where foreign nationals could be kept away from the rest of [[Sharn]]. All of the bridges to other districts of Sharn were sealed by
massive spellbound gates and fortified guard stations.

When the war ended, High Walls was converted to a home for the many refugees of the war—mostly the surviving [[Cyrans|Cyre]] who no longer have a country, but also people whose villages or homes were
destroyed, and those who were held captive in High
Walls during the war and developed roots there.
The gates are generally open, but the guard posts
remain. The war may be over for the moment, but
the city council still has its suspicions and fears.

High Walls is a self-sufficient community. The
trades and services are all refugees putting their skills
to work and selling their talents. But there is still a
lot of tension and anger in this district. A growing
number of Cyrans have embraced the nihilistic beliefs
of the [[Dragon Below|Cults of the Dragon Below]] or turned to the worship of [[radiant idol]]s, refusing to respect gods who would allow their nation to be destroyed. Former [[Brelish|Breland]] soldiers may receive an unfriendly welcome in this district,
and would be well advised to tread lightly. 
''District Type:'' Civic district <br/>
''Buildings:'' Council hall, bureaucratic offices,
monument/memorial, guard post, temple ([[Boldrei]]), upscale lodging (15), upscale food (25), exotic trades (40), upscale trades (60), average trades (60),
upscale services (75)<br/>
''First Impression:'' The lofty and ornate towers of
this district offer panoramic views of the surrounding city. People stride along well-lit streets and gracefully arcing bridges with an air of importance
and the smell of great wealth.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Mithral Tower]] (north); [[Skysedge Park]] (northeast); [[Ivy Towers]] (bridge, southwest); [[University District]] (bridge, south); [[Den'iyas]] (bridge, southeast); [[Dragon Towers]] (below)

Highest Towers is the seat of [[Sharn]]'s government
and includes all the city offices, the council hall, and
other civic features. 

!! Noteworthy Locations

* [[City Archive]]. This enormous edifice holds the historical and legal records of Sharn and the surrounding regions. 
* [[Council Hall]]. The seat of city government and the site of [[City Council|Sharn Council]] meetings. The council meets weekly, and visitors can watch from the gallery. 
* [[Lyrandar Tower]]. All [[airship]] travel to and from Sharn passes through the docking spires of Lyrandar Tower, the [[house|Lyrandar]]'s primary [[enclave]] in Sharn. 
''District Type:'' Dwarf neighborhood<br/>
''Buildings:'' Temple, average lodging (10), upscale
food (5), average food (40), poor food (10), exotic
trades (10), upscale trades (24), average trades (60),
poor trades (25), upscale services (10), average services (40), poor services (20), upscale residences (20), average residences (180)<br/>
''First Impression:'' The architecture is sturdy, functional stone, though the scale is slightly too small for most humans. While there is luxury to be found
here, the citizens of Highhold put work before play.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Daggerwatch]] (north); [[Sunrise]] (southeast); [[Ivy Towers]] (bridge, northeast); [[Seventh Tower]] (bridge, east); [[Rattlestone]] (below)

When House [[Kundarak]] first established itself in
[[Sharn]], the [[dwarf]] immigrants who came with the
house sought to make their mark on the city. While
dwarf engineers had played a significant role in
the construction of [[Sharn]], the city was designed
for [[human]]s. Highhold is the first district to be built
by dwarves for dwarves, and their touch is evident
throughout the district. While the dwarves appreciate luxury and comfort, they are also concerned with
defense and durability, and the buildings of Highhold are among of the strongest and most defensible
in the city.

Dwarves make up the majority of the population in Highhold—both recent immigrants from the
[[Mror Holds]] and those whose families have lived
in [[Sharn]] for generations. The inns and taverns
serve strong Mror ale and stonebreaker mead, and
most of the buildings and furnishings are built to
dwarven proportions. Beyond the dwarves, there are
a considerable number of [[gnome]]s in the district, reflecting the strong economic ties between House [[Sivis]] and House [[Kundarak]].

Businesses in Highhold include a branch of the
Kundarak Bank and a Sivis [[message station|speaking stone]]. There
are also restaurants serving Mror food (an acquired
taste for most humans) and a variety of other crafters,
including master masons, architects, and armorers.
Many of the inhabitants work for one of the branches
of the Kundarak Bank, while others work in the
[[Cog|Cogs]] foundries but have positions allowing them to
afford to live above the surface.

!! Noteworthy Locations

* [[Clebdecher's Loom]]. A high-end clothing store specializing in [[glamerweave]].
* [[Moraggan's]]. A posh tavern specializing in strong [[Mror|Mror Holds]] spirits. Food and drink are wealthy in quality and cost.
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Quiet streets wind around townhouse towers in a relatively safe environment.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Clifftop]] (northeast); [[Hope's Peak]] (southeast); [[Overlook]] (southwest); [[Broken Arch]] (below)

Highwater is the finest residential district in
[[Dura]], thought the accommodations are considerably smaller and plainer than those of [[Middle Northedge]], let alone any of the other [[upper ward]]s.
But the prices are reasonable, the stonework is
solid, the views are exceptional, and the streets are
fairly safe—for Dura. 

!! Noteworthy Locations

* [[Pegasus Spire]]. The seat of House [[Vadalis]] in [[Sharn]] is one of the few [[enclave]]s where [[pegasi|pegasus]] are raised and trained. Native to [[Syrania]], these celestial beasts can become stranded in Sharn; Vadalis heirs care for them and match them with virtuous companions. 
Hidden away in the shadows of
one of the gray towers, the Hilatashka restaurant
serves [[Adar]]an cuisine. Meals are reasonably priced, but the quality is exceptional. Providing vegetarian fare that mostly consists of cold dishes and soups prepared with a range
of subtle spices. [[Kalashtar|kalashtar]] have an exceptionally
well-developed sense of taste, and it can take some
time for members of other races to learn to appreciate the delicate blends of spices and herbs used in
Adaran meals. 
Hill [[giant]]s are selfish, dimwitted brutes that hunt, forage, and raid in constant search of food. They resemble huge, squat [[human]]s or [[half-orc]]s. Average height: 16 ft. 
The Hinterlands are the outer edge of [[Mabar]], the collection
of planar fragments that are currently being consumed and
integrated into the Endless Night. Here, the //Hunger of Mabar//
property has not yet taken hold, which generally makes
them safer to visit than other layers of Mabar. The Mabaran
properties a fragment reflects vary depending on its nature
and how close it is to complete integration with Mabar.

There can be infinite variety in the fragments within the
Hinterlands. This largely depends on what plane a fragment
is from. Is it a verdant forest of [[Lamannia]]? A floating tower
of [[Syrania]]? Or is it a piece of the Material Plane—a fortress
plucked out of the [[Last War]] or a [[Riedra]]n village? The second
question is how long the fragment has been under siege. To
what degree does it retain its original flavor, and how much has the influence of Mabar overtaken it? The final question
is which of the [[Dark Power]]s has claimed it—and why? What
is it about this region that draws it toward a Dark Power's
domain? The [[Empress of Shadows]] looks for places that shine
too brightly—places that bask in their achievements, sure their
glory will never fade. The [[Bone King]] claims fragments where
commoners suffer or where rulers turn to tyranny; there are a
few [[Karrnath]]i fragments in his domain, though it can be hard
to tell how close they are to being subsumed. The [[Queen of All Tears]] seeks the places where terrible tragedies have occurred, forcing the inhabitants to forever dwell in these moments of misery. With fragments of the outer planes, it's more a question
of reshaping the plane to fit these stories. By contrast, when it
comes to the Material Plane, it's the story itself that often draws
the dire hand of [[Mabar]].
A beastlike [[monstrosity]] whose magical origins are lost to history, a hippogriff possesses the wings and forelimbs of an eagle, the hindquarters of a horse, and a head that combines the features of both animals.

Reclusive and omnivorous, hippogriffs mate for life and seldom venture more than a few miles from their nest. When defending its mate or its young, a hippogriff fights to the death. Hippogriffs don't lay eggs but give birth to live young.

[[Dragon|dragon]]s, [[griffon]]s, and [[wyvern]]s have a taste for hippogriff meat and frequently prey on these creatures.

//''Flying Mounts.''// A hippogriff raised in captivity can be trained to be a faithful companion and mount. Of all the creatures that can serve as flying mounts, hippogriffs are among the easiest to train and the most loyal once trained properly.
The Hoard is the [[Immeasurable Market]] storefront of the ancient [[gold dragon]]
Halazaryx, who settled in [[Syrania]] after some differences
of opinion with the [[Conclave]] of [[Argonnessen]]. Hal has a
collection of interesting relics tied to historical figures in
[[Khorvaire]], and is always interested in trading for items
that have fascinating stories.
Hobgoblins are [[goblinoid]]s with sizes and lifespans similar to [[human]]s. They have dark orange or red-orange skin, and hair ranging from dark red-brown to dark gray. Yellow or dark brown eyes peer out beneath their beetling brows, and their wide mouths sport sharp and yellowed teeth. A male hobgoblin might have a large blue or red nose, which symbolizes virility and power among goblinkin. When surrounded by allies, they can achieve greater feats than when alone; the pressure to never show weakness drives a hobgoblin to reach the pinnacle of their abilities.

The [[Dhakaan]]i word for hobgoblins is //ghaal'dar//, meaning "mighty people" or "influential people". The word was co-opted by the [[Ghaal'dar]], the federation of hobgoblin tribes in modern [[Darguun]] that are not connected to the [[Kech Dhakaan|Heirs of Dhakaan]].
Choose a [[humanoid]] that you can see within 90 feet. If the target cannot resist your enchantment, it is paralyzed for up to 1 minute, or until your concentration is broken. While paralyzed, the creature freezes in place and cannot move or speak.

If you are able to cast rare-tier spells, you can cast this as such to target a non-humanoid creature. Alternatively, you can target up to three humanoids with this spell simultaneously; the targets must be within 30 feet of each other when you target them.
''District Type:'' [[Dwarf|dwarf]] neighborhood<br/>
''Buildings:'' Shrine ([[Sovereign Host]]), average lodging
(10), upscale food (5), average food (40), poor food
(10), exotic trades (10), upscale trades (24), average
trades (60), poor trades (20), upscale services (20),
average services (40), poor services (20), upscale
residences (20), average residences (180)<br/>
''First Impression:'' Dwarves fill streets of Holdfast,
though few have the accent or wear the clothing of
the [[Mror Holds]]. The ringing of anvils and song of
steel on steel can be heard rising from the smithies in the center to the district, and masons pass by with cartloads of stone. The people seem to be very
industrious, and reasonably well off.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Oakbridge]] (northwest); [[Cornerstone]] (bridge, southeast); [[Tavick's Market]] (bridge, south); [[Sovereign Towers]] (bridge, southwest); [[North Market]] (below); [[Crystal Bridge]] (above)

When King [[Galifar I|Galifar ir'Wynarn]]'s son, [[Karrn|Karrn ir'Wynarn]], invaded the
[[Mror Holds]], the [[dwarf]] nation was in a state of anarchy and constant [[clan|Mror clan]] warfare. Despite the barbaric
state of their realm, the dwarves were natural miners
and stone masons with an innate talent for building fortifications. When King Galifar decided to rebuild
the city of [[Sharn]], he brought in a force of dwarf engineers and laborers from the Mror Holds. Dwarf hands
played an important role in the rebirth of Sharn, and
as the city grew it developed a sizeable dwarf population. Over the centuries, many dwarves spread across
the city, abandoning their ancient roots. But other
families remained together, forming a strong dwarf
community. In time, they settled in the district they
named Holdfast.

Dwarves comprise almost 90% of the population
of Holdfast; the rest of the population is fairly evenly
divided between [[gnome]]s, [[human]]s, and [[halfling]]s.
Most recent immigrants from the [[Mror Holds]] live
in [[Highhold]] in [[Upper Dura]]; the dwarves of Holdfast
are descended from the dwarves that came to rebuild
[[Sharn]] in the earliest days of King Galifar's rule, and
they have no strong attachment to the Mror Holds
or its traditions. They are, however, extremely
loyal to one another. A [[dwarf]] born in Holdfast has
a thousand friends, and can always find shelter or a
meal. Of course, this is a double-edged sword, and
old friends or family may ask for help with gambling
debts, the [[Boromar Clan]], or any number of other
possible reasons.

The people of Holdfast are comfortably middle
class. Some serve as overseers in the vast foundries
down in the [[Cogs]], while others are architects or
stonemasons. Holdfast also contains smithies of
all sorts. Most of the arms and armor of the [[Sharn Watch]] are produced in Holdfast, and anyone looking for masterwork armor can find it in this
district. The smiths also look after their own, and
dwarves of [[Brelish|Breland]] descent can get a 10% discount on any weapons or armor purchased in Holdfast.
Hareth ir'Talan constructed
Sharn's first aerial arena, and over the centuries this
odd structure has brought a great deal of silver into
the district. While most windchases occur outside
the towers, [[skyblade]] matches and many other aerial
sports are played in an enclosed space. The Hollow
Tower provides that space—multiple levels of one of
the great towers converted into an enormous domed
arena, lined with [[everbright lantern]]s to provide illumination at all hours. Today, many of the more prestigious events take place at [[Cornerstone]] in [[Middle Tavick's Landing]], but the Hollow Tower still does a
brisk business, and many of the other districts use
the tower as a training ground. 
The blade of this sword appears to be a stained-glass
depiction of sacred events. The sword can be used as a
[[spellcasting focus|magical implement]] for [[paladin]] magic. 
Holy Uldra is the //lath// of a small [[halfling]] tribe, but her powers of oratory and persuasion have made her one of the most important leaders in the [[Talenta Plains]]. 

Characters who meet the young priest are hard-pressed to guess that she is the single
most powerful religious figure in the Plains. Holy Uldra speaks of herself as a simple [[cleric]], but she makes no attempt to hide the devoted following she
has acquired. Although she does not covet power for
her own gain, she is deadly earnest in her belief that
the path she espouses is the best one for her people.

Holy Uldra believes that the mere act of creating a nation encompassing the Talenta Plains is an affront to [[halfling]] culture and the will of [[Balinor]]. Land is a gift of the gods, and to claim ownership over it is a senseless desecration of the kind practiced
by [[human]]s and other races. She believes that if these new ways are allowed to continue, emotional bankruptcy and spiritual genocide can be the only results.

Uldra's contempt for House [[Ghallanda]], House [[Jorasco]], and [[Lathon Halpum]] is well known, as is her belief that the actions of the [[halfling]] [[house|dragonmarked house]]s and the tribal council threaten to debase the Plains’ traditional culture and the spiritual core of halfling life. Her often strident followers share these beliefs. While she gives her followers no specific mandate or orders, militant halfling tribes have used her teachings as motivation for attacks against the [[dragonmarked house]]s and even the tribal council.
This pair of silver honeycomb-shaped earrings are set with drops of amber and dangle from silver hooks. They allow the wearer to communicate fluently with bees. The bees are more likely to act amicably towards the wearer, and may perform small favors for them.
Hope is the younger of the two colonized territories of [[Q'barra]], consisting of rapidly-constructed towns in the foothills of the [[Endworld Mountains]] built by those fleeing the [[Five Nations]] during the final years of the [[Last War]]. While [[New Galifar]] under King [[Sebastes|Sebastes ir'Kesslan]] is ruled as a feudal monarchy, the law in Hope varies widely from place to place—when it exists at all.

The largest settlement in Hope, [[Wyrmwatch]], was founded only three years ago. But many of the villages built in Hope don't survive a year, succumbing to attacks from [[kobold]]s or [[lizardfolk]], only to be rebuilt with a new name a few months later.

!! Shard Rush

A swarm of explorers, including expeditions from House [[Tharashk]], have begun to flood Hope and elsewhere in [[Q'barra]] in search of Eberron [[dragonshard]]s. Ramshackle prospecting communities have begun to spring up in the jungle with the discovery of shard caches close by, and such places often become boomtowns overnight. However, more than a few such settlements have encroached on ancient [[lizardfolk]] and [[dragonborn]] holy sites, and the frontier war to end them all is brewing in the Q’barra jungles.

!! Hope Sweet Home

In a handful of frontier villages, [[scales]] and settlers
live side by side. This can be an excellent starting
point for a new group of adventurers. A [[dragonborn]]
might be here trying to learn the ways of the softskins.
A [[Cyran|Cyre]] soldier could be searching for a new home.
A [[Valenar]] [[elf]] might have abandoned her people after
their betrayal of [[Cyre]]. A wandering [[Talentan|Talenta Plains]] [[bard]]
could be collecting the stories of the jungle. A priest
of the [[Silver Flame]] might feel a strange draw to this
place. These are just a few examples; anyone could
have a reason to leave the west and start anew. Think
about the roles the characters might play in a small
community. A [[cleric]] adventurer could be the village priest. A [[Sivis]] [[gnome]] might be in charge of the [[speaking stone]]. A [[bard]] could be a beloved source of
entertainment. How could the skills and abilities of
the other characters be put to use in a small town?

As adventurers work their way through early adventures,
they must establish their village and help it grow.
The [[Q'barra]]n frontier is a lawless place, and the
adventurers have to help maintain the peace. They
might have to repel [[Poison Dusk]] attacks, maintain
the uneasy peace with the [[dragonborn]] clans, and
expose [[human]] bandits trying to pin their crimes on the [[scales]]. [[Riedra]]ns or House [[Tharashk]] might want to establish an outpost in the village—do the
adventurers approve of these things? And what about
the nearby [[demon]] ruins? When [[demon]]s or [[undead]]
menace the village, can the adventurers find the
source and cleanse the corruption?

Moving into later adventures, the adventurers could be
faced with full-scale war. When King [[Sebastes|Sebastes ir'Kesslan]] gives
[[Tharashk]] a free rein, the house moves into the region
with a full force of monstrous mercenaries. The [[dragonborn]] respond to this invasion with full fury. Can the village survive the conflict? The culmination of the campaign can
bring in the ancient history of the region: the [[dragon]] [[Rhashaak]] and the [[overlord]] [[Masvirik]]. When the Cold Sun rises once more, can the adventurers overcome
the ancient evil? If [[Newthrone]] falls, could the humble
village the characters helped found become the heart
of the new kingdom?

Although a Hope village could serve as an
anchor point for a campaign, this doesn’t mean that
the entire campaign would take place in [[Q'barra]].
Adventurers might go to the [[Five Nations]] to negotiate
with patriarchs of the [[dragonmarked house]]s. They could
venture east to [[Sarlona]] to pursue [[Riedra]]n criminals,
or up to [[Lhazaar|Lhazaar Principalities]] as a result of pirate raids. Marauding
[[aberration]]s could draw them down into the depths of
[[Khyber]], revealing horrors far beneath their village. A
character’s former life could come back to haunt them, and perhaps they need to return home to settle debts. When [[Masvirik]] is rising, the key to
facing the [[overlord]] could lie in the [[Demon Wastes]] or
distant [[Argonnessen]]. The village might be the heart
of the campaign, but adventures could span the world
and the [[plane]]s.
''District Type:'' Temple district<br/>
''Buildings:'' Temples ([[Sovereign Host]], [[Silver Flame]],
[[Dol Arrah]]), shrines ([[Aureon]], [[Boldrei]], [[Olladra]]),
upscale lodging (5), average lodging (15), upscale
food (15), average food (30), exotic trades (23),
upscale trades (26), average trades (40), upscale services (40), average services (100), upscale residences
(20), average residences (80)<br/>
''First Impression:'' Many of the towers in this district are built from blocks of white stone flecked with spots of gold, and when the sunlight falls on Hope's Peak it seems to glow and burn.<br/>
''Social Class: ''Middle class<br/>
''Neighbors:'' [[Clifftop]] (north); [[Highwater]] (northwest); [[Redstone]] (southwest); [[Hareth's Folly]] (below)

Hope's Peak is the most recent temple district constructed in [[Sharn]], and many of the shrines were
relocated from the [[lower levels|Lower Dura]] of [[Dura]]. The most
important building is the [[Citadel of the Sun]], but
the main temples of the [[Sovereign Host]] and the
[[Silver Flame]] draw worshippers from the depths
of Dura. While most of the priests of the region
are devout enough, this is Dura, and pragmatism
abounds. If a party of adventurers knows who to
talk to and how to approach them, divine miracles
can be bought outright. 

!! Noteworthy Locations

* The [[Citadel of the Sun]]. A temple devoted to [[Dol Arrah]], noteworthy for the three blessed [[griffon]]s that reside there.
* [[Olladra's Arms]]. One of the finest restaurants in [[Sharn]], with a different menu each night.
When you blow this horn, it emits a thunderous blast in a 30-foot cone that is audible 600 feet away. Each creature in the cone that can't resist the blast suffers damage and is deafened for 1 minute. Creatures and objects made of glass or crystal are prone to shatter. 

Each use of the horn's magic has a small chance of causing the horn to explode. 
Three times per day, you can blow this horn, and one hearing creature of your choice within 600 ft can hear it (but no other creatures can).
This elite division of the [[Harmonious Shield]] of [[Riedra]] is a corps of [[oni]], indoctrinated into service as one of the most
powerful weapons at the [[Inspired]]'s disposal. They are forbidden from shapeshifting, and are taught that changing their shape allows the demon within to strengthen their hold on them.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
The Horned Shadow in [[Sarlona]] is a young alliance of [[ogre]]s, [[oni]], and [[eneko]] working to forge a new destiny for the ogre races. Within [[Riedra]], these efforts are masterminded by oni who have overcome their indoctrination.
This is a dangerous game, and the [[Thousand Eyes]] swiftly
kill any ogre found to be working with the Shadow. But [[ogre mage|oni]]s are powerful and cunning—thanks to their shapeshifting powers and natural resistance to magic and
telepathy, many oni of the Horned Shadow have been
able to avoid the gaze of the [[Thousand Eyes]].

The Horned Shadow has spent the last few years
building support. As the organization grows, the
masterminds of the Shadow debate the best course of
action. Some advocate a mass exodus from [[Riedra]] and
the establishment of a new ogre kingdom in [[Syrkarn]].
Others insist on reclaiming [[Borunan]] itself, even if this
means the utter destruction of the ogre race in battle
with the Inspired.

All is complicated by the fact that some of the followers of the Horned Shadow have less than noble intentions. A few oni simply want power for themselves.
While they speak of ogre freedom, these mad mages are
interested only in bringing chaos and destruction to the
world, spilling as much blood as possible. Other members
of the organization could be noble rebels or bloodthirsty
killers whose love of battle comes before any ideals. Members of the Horned Shadow can be solid allies, but they can just as easily be disturbing adversaries.

''Getting the PCs Involved:'' [[Oni|oni]] are powerful
and intelligent creatures, and their shapeshifting abilities make it easy for them to slip in and out of [[Riedra]].
An ogre mage could come to the PCs in search of assistance or seek an alliance with the party's patron, such as a [[dragonmarked house]]. [[Ogre|ogre]] warriors aligned with the Shadow could come to the rescue when the PCs are about
to be captured by the [[Thousand Eyes]]. Oni could use their powers to trick the PCs into conflict with the [[Inspired]], or they could steal the characters' identities to
perform an act of terrorism. For a darker twist, a party
aligned with the Horned Shadow could seek a powerful
artifact hidden in [[Ohr Kaluun]] or [[Xen'drik]]—an ancient
weapon designed to kill [[humanoid]]s by the thousands,
allowing the [[ogre]]s to decisively shift the balance. 

Travelers looking for food, drink, and shelter can find it all at the Horse &
Hearth, a large inn and tavern maintained by House
[[Ghallanda]]'s [[Hostelers Guild]]. The food and lodging are both of average quality, but extremely reliable. While it doesn't have the colorful atmosphere of the local [[shifter]]
establishments, the Horse & Hearth has the reputation of House Ghallanda behind it, and provides
all the standard services the house is known for.
Gaidan d'Ghallanda operates the inn. Gaidan possesses the [[Mark of Hospitality]], as do two of his daughters (though their [[dragonmark]]s are weaker).
These iron horseshoes, created by [[Orien]] and [[Cannith]] [[artificer]]s, come in a set of four. While all four shoes are affixed to the hooves of a horse or similar creature, they increase the creature's walking speed by 50%.
Many of the inns and restaurants across [[Khorvaire]] are run by the Hostelers
Guild—and most of the rest have (or are seeking)
licenses from the house. Displaying a House [[Ghallanda]] license in one’s establishment adds a certain
cachet and is an implicit promise of quality.
The largest estate in the district belongs to the Hazal family. The Hazals made
their fortune investing in the smelting industry, and Hazal caravans still bring in ore from the family's northern holdings on a regular basis. But while the Hazals have always been community leaders, they have also been religious leaders. Beyond a façade large enough to entertain guests and outsiders, the house of Hazal holds [[Sharn]]'s only temple to the [[Blood of Vol]]. Every [[Zol|Khorvaire calendar]] the
faithful come in shifts to give blood and hear the word
of Vol. During the holiest days—such as the [[Tanarath]],
when the moon Aryth is eclipsed by Sypheros—almost
all of the faithful gather at once.

The current master of the house and priest of
the Blood is [[Lan Hazal]]. Lan's wife died recently, and
there is a great deal of interest in the community as
to who might become the next Lady Hazal. 

The house of Hazal also contains the stores of blood
donated by the members of the church, which are used
to sustain Lady [[Tarra'az|Jesel Tarra'az]] and visiting [[vampire]]s. 
The [[elves|elf]] of [[Aerenal]]
know more about caring for the dead than any other
culture on [[Eberron]], and the embalmers and crypt
builders of the House of Repose have served many of
the wealthiest families in [[Sharn]]. Many of the crypts,
tombs, and shrines in the [[City of the Dead]] are the
work of these elf artisans.
This engraved block of lead, approximately 1 cubic foot in size,
holds an embedded Siberys [[dragonshard]]. The houseward
provides state-of-the-art magical security, and is typically
embedded into the floor of the building it is supposed to
protect. If any creature with the [[Mark of Warding]] spends 10 minutes touching the houseward, it can cast [[guards and wards]] using its stored magical energy. The area protected by the spell is determined by the rarity of the houseward (see table below). The duration of the spell is 24 days, but the effect ends early if the houseward is used again to cast the spell, if a creature with the Mark of Warding spends 10 minutes
touching the houseward to end its effects, or if a houseward is
removed from the area it is currently protecting. After being
used to cast the spell, the houseward can't do so again until
dawn the next day.

|!Houseward Rarity |!Warding Area |
|uncommon |2,500 sq ft |
|rare |5,000 sq ft |
|very rare |7,500 sq ft |
|legendary |10,000 sq ft |
The Howling Peaks form part of the border between [[Breland]] and [[Zilargo]].
The Howling River in [[Breland]] is a tributary of the [[Dagger River]]. It flows through the capital city of [[Wroat]].
Two teams of seven [[shifter]]s play hrazhak on a field
with a goal at each end. Each team starts out carrying a
wooden idol. To score, a team must steal its opponent's
idol and place both idols in its own goal. Obstacles such
as trees, streams, and piles of rubble can be present on
a hrazhak field, requiring the competitors to make full
use of their jumping and climbing abilities. Idols can be
thrown or carried, and there are no limits on contact
between participants, although only natural weapons
are allowed. Typically, a low-level [[druid]] or [[adept]] is on
hand to provide healing if needed—but any competitor
who receives aid is removed from play for the remainder
of the match. Competitors aren't allowed to use spells or
similar abilities.

The only formal hrazhak arena in [[Sharn]] is located in
the [[Stone Trees|Cornerstone (arena)]], part of the [[Cornerstone]] district, where
the matches serve as both a spectator sport and a reason for gambling. Shifters created temporary hrazhak
fields in the slums and warehouse districts of the city
from time to time, and shifter youths often play impromptu games in the parks. 
Hruitt (councilor for [[Middle Dura]]) is a mysterious figure on the Council, keeping his own counsel and advancing his own agenda. He is an intelligent [[giant owl]] who can assume a [[human]] form (or perhaps a human [[druid]] who prefers to stay in the form of a giant owl; no one is quite sure). He once was an aerial racer, representing the [[Bazaar]] of [[Dura]] in the [[Race of Eight Winds]]. Hruitt's primary responsibility is to the merchants of the Bazaar, protecting their interests from the [[Boromar|Boromar Clan]] councilors and the councilors who represent the other market wards. 
//[[Dwarves|dwarf]] are stoic. [[Elves|elf]] are wise. [[Gnomes|gnome]] are cunning. And humans? They can't make up their mind, so they try to be all of these things at once.//

<div align="right">—[[Kessler]], [[bard]] of [[Sharn]]</div>

The first human settlers came to [[Khorvaire]] from [[Sarlona]] about
3,000 years ago, landing in the area now known as the
[[Lhazaar Principalities]]. From there, they began a slow
but inexorable spread across the continent, disrupting
the placid elven empire of [[Aerenal]] and leaving further
ruined remnants of fallen [[Dhakaan]]i [[goblinoid]] kingdoms
in their wake. During this migration, they founded the
settlements that would grow into the [[Five Nations]]. Even
today humans make up the majority of the population
in these countries. Despite their relatively short lifespans—or perhaps because of them—humans are innovative, adaptable, and aggressive, always pushing their
limits and pursuing new ideas.

Humans prove extremely diverse; a barbarian from
the [[Demon Wastes]] has little in common with a [[Brelish|Breland]]
rogue. When creating a human character, consider
where you're from and how that's reflected in your class
and background. [[Aundair]] is a logical place of origin for a
[[wizard]] character, but your wizard could be a down-and-out arcanist from the alleys of [[Sharn]] or a [[Lhazaar|Lhazaar Principalities]] pirate
with a knack for the mystic arts.

If you want to jump-start your ideas for a human character's origins, you can roll on the table below.

| !<<dr d10>> |!Origin |
| 1 |An impoverished wizard from [[Aundair]], striving to prove you're as intelligent as any other Aundairian |
| 2 |A streetwise rogue from [[Breland]] who wants nothing more than to escape the bustle of [[Sharn]] forever |
| 3 |A displaced Cyran fighter who was engaged in war outside [[Cyre]] at the time of the [[Mourning]] and is now stranded with no home |
| 4 |A barbarian from the [[Demon Wastes]] who repented from a life of cruelty and hopes to atone for past evils |
| 5 |A kindly [[druid]] from the [[Eldeen Reaches]] who wants to learn about the flora and fauna of the rest of [[Khorvaire]] and beyond |
| 6 |A [[cleric]] from [[Karrnath]] who aspires to learn the arts of [[necromancy]]—for the noblest aims, of course]] |
| 7 |A piratical bard from the [[Lhazaar Principalities]] who loves sea shanties but also wants to immortalize the deeds of great heroes in song |
| 8 |A ranger trained to hunt the jungles of [[Q'barra]] who harbors a grudge against [[dragon]]s |
| 9 |A [[warlock]] from the [[Shadow Marches]], teetering on the edge of sanity while contemplating the [[daelkyr]] |
| 10 |A [[Thrane]] [[paladin]] of the [[Silver Flame]] who's looking for something to prove the truth underpinning belief |

!! Humans and Dragonmarks

Five different [[dragonmark]]s appear among humans,
reflecting their dominant status among the races of
[[Khorvaire]]:

* The [[Mark of Making]] is found in House [[Cannith]], which has used it to become one of the most powerful houses, creating an abundance of both magical and technological wonders.
* The [[Mark of Passage]] aids the humans of House [[Orien]] in operating the lightning rail and trade caravans running across the continent.
* The [[Mark of Sentinel]] makes the bodyguards, mercenaries, and [[Sentinel Marshals]] of House [[Deneith]] widely respected across [[Khorvaire]].
* The [[Mark of Handling]] appears in House [[Vadalis]], which uses it to breed fine mounts and other creatures.
* Humans also number among House [[Tharashk]] and manifest the [[Mark of Finding]] with their [[half-orc]] kin, though they need to have at least some [[orc]] blood in their ancestry. 
Humanoids are the main peoples of Eberron, both civilized and savage, including [[human]]s and a tremendous variety of other species. They have language and culture, few if any innate magical abilities (though most humanoids can learn spellcasting), and a bipedal form.

<<list-links "[tag{!!title}category[creature]sort[title]]">>
A hungry weapon, a creation of the [[daelkyr]], is formed from
muscle and bone. It may moan, growl, or wail, and it twists
in your grip if it doesn't like you. If any creature attempts to
wield this weapon while not attuned to it, it has disadvantage
to attack using the weapon. Additionally, if you are
attuned to this weapon when another creature tries to wield it,
the weapon's hilt extrudes sharp thorns.

While attuned to and wielding this weapon, you choose to bond to it, causing tendrils from the hilt of the weapon to burrow into your flesh. While bonded to it, you gain
the following benefits:

* The weapon is bound to your hand and can't be removed from your grasp, voluntarily or involuntarily. If it's a two-handed weapon, only one of your hands is bound to the weapon.
* When you hit a creature with this weapon, you can choose to suffer one stress to drain the life from your foes. A successful attack deals additional necrotic damage with the attack, and and you recover from an equal amount of harm.

You can end the weapon's bond at will, causing the tendrils
to retract so you can release the weapon. You can remain attuned
to the weapon regardless of whether you're bonded to it.
''Date: '' [[4 Barrakas|Khorvaire calendar]]

While followers of [[Balinor]] are taught to live in harmony
with nature, this festival celebrates his role as Lord of Horn and Hunt, the hunter who protects his people from marauding predators. Both rural communities and in greatest cities of [[Khorvaire]] observe the Hunt. In [[Sharn]] (and many other metropolises), the
priests of Balinor arrange to have a dangerous beast transported to the city and released into an isolated section of [[Old Sharn]]. Anyone who wishes can participate in the Hunt by making a donation of 1 crown. Hunters receive the blessing of Balinor, and enter the depths to track down the beast. The hunter (or group) who brings down the beast
wins a prize of 100c, fame throughout the city, and the blessing of Balinor.

While the quarry of the Hunt is generally
referred to as “the beast,” over the years the Hunt
has taken different forms. In some years, multiple beasts are released, and the
hunter who catches the most of them is the victor. During the [[Last War]],
rumors persist that a city in [[Karrnath]] used prisoners of war as the quarry in the Hunt. 

In any case, it often turns out that the other competitors are a greater threat to hunters than the beasts they stalk.
Husks are harmless [[shade]]s in [[Dolurrh]] that have been overcome by
ennui and possess only the vaguest memories of their mortal
existence. Most retain a semblance of their mortal shape, but
they continue to fade over decades, eventually merging with
other husks to form masses of moaning mist. Having no true
consciousness of their own, husks are immune to ennui's
effects. Occasionally, a group of husks cluster around a strong
memory, forming an ectoplasmic mass that prowls in search of
more scraps of memory, absorbing other husks. Such a creature
is called a [[meld]].
Husksteel is the fused essence of faded souls. The [[Smith of Shadows|Crucible]] in [[Dolurrh]] refines this substance from the lingering scraps of memory and emotion, and then uses it to create a variety of artifacts. Despite the name, husksteel can appear not only as dark metal, but also as slick black leather, dark iridescent cloth, or
other substances. Such an object could be crafted from a single
spirit—a dagger whose edge is forged from a single moment of
pain—or from the emotional residue of multiple [[husk]]s.
The Dagger River is a massive river basin in central [[Xen'drik]], with hundreds of tributaries from the [[Fangs of Argarak]] and elsewhere throughout the continent. Water taxis from [[Stormreach]] navigate the coast to the mouth of the Hydra where river barges creep downriver into Xen'drik's wilds. 
Resembling a giant bipedal insect, an ice [[devil]] (also known as a gelugon) has clawed hands and feet, powerful mandibles, and a long tail covered in razor-sharp spikes. Some carry barbed spears whose icy touch can render a foe all but helpless in combat.
This long blade appears to be made of solid [[Risian ice]].

When you get a critical on an attack roll with this weapon, you can choose to have it shatter into a thousand fragments, dealing much more damage.
Ice Shear Island is an island in the [[Lhazaar Principalities]]. 
A hail of rock-hard ice pounds to the ground in a 20-foot-radius, 40-foot-high cylinder centered on a point within 200 feet. Each creature in the cylinder must dodge or be pummeled by the hailstones. The hail covers the ground in slick ice.

This spell can be upgraded to legendary-tier for an even more destructive effect.
The nomadic [[frost giant]]s of the [[Eska Mountains]] known collectively as the Icebinders also follow mysterious internal rhythms. Their migrations do not correspond to any seasonal pattern, nor do they trail any of the great herding animals of the Tashana. Some have suggested that the Icebinders move according to some intricate plotting of the [[aukarak|reality storm]]s that
sweep across the Tundra. Others say the Icebinders actually
control the aukaraks, somehow herding the storms like great
planar beasts. In any case, each nomadic Icebinder group
is apparently self-governed and independent.
The Iceflow River in [[Karrnath]] flows from the [[Icetop Mountains]] into the [[Karrn Bay]]. It is also fed by the [[Dark River]].
Icegaunt Channel passes between the [[Wayfinder Tundra]] in [[Frostfell]] and [[Icewhite Island]].
Icehaven Sound lies between [[Icewhite Island]] and [[Tlalusk|Tlalusk Island]]/[[Qorrashi Island]].
Along with the [[Shadowcrags]], these frigid mountains form part of the border between the [[Demon Wastes]] and the [[Eldeen Reaches]]. 
The Icemaw Sea, also known as the Iceflow Sea, lies between [[Xen'drik]] and [[Everice]]. It is studded with islands and icebergs.
The Iceneedle Forest is a small forest in the mainland [[Lhazaar Principalities]].
The Icetop Mountains in [[Karrnath]] are an offshoot of the [[Ironroot Mountains]] to the east. It is the source of the [[Iceflow River]].
Icewild, or //muqqa//, is a blood-red rock lichen and stimulant that produces a feeling of energy and euphoria lasting
up to 6 hours. Consumption of one dose confers immunity
to the effects of fatigue or exhaustion for its duration. 

Icewild can be purchased in the less reputable sections of [[Whitetooth]] and [[Winterstead]].
The Icewood is a large forest in northern [[Karrnath]] in the foothills of the [[Ironroot Mountains]].

Deep in the Icewood stands a strange
and terrible growth, a pulsing mound of white crystal. Those familiar with the wood know to keep away from the Madstone—it’s said that those who touch
it lose their souls. Elders tell any who are willing to
listen that more than a few people have been lost in
that area of the woods over the years. Some of the
old folk claim that, during their time and the time of
their ancestors, the dead-white crystal has steadily
grown larger. They urge everyone to ignore the alluring whispers that draw the young and ambitious to the Icewood.
The [[Mokush]] village priest of [[Inspiration|Path of Inspiration]] is thoroughly corrupted by the
[[Horned Shadow]] and is [[Yrnuxi]]'s devoted lackey. Worshiping [[fiend]]s has sparked Ignra's spirit, and she can now actually cast [[spell]]s for the first time in her life. She's
careful to keep her wicked talent a secret.
Ikar the Black is an imposing [[half-orc]] who was a decorated [[Karrnath]]i officer in the
[[Last War]]. He leads a [[team|Ikar's Salvage]] of professionals and hardy laborers, mostly [[warforged]] and [[Karrnathi undead]], searching for lost treasures in the [[Mournland]]. He and his dozen or so employees use high-quality tools
and vehicles, such as [[elemental]]-powered barges and
land carts.

Ikar prefers to work in previously settled areas,
and makes regular forays into the outskirts of [[Metrol]].
The group’s base of operations is a temporary camp
that Ikar moves up and down the the [[Cyre River]] as
needed. The salvagers avoid going too far inland or
too far south.

Ikar has contracts in the [[Karrnath]]i government
and with Prince [[Oargev|Oargev ir'Wynarn]] of [[New Cyre]]. He has well-placed friends, and some consider him a hero for his actions in the [[Last War]]; he was wounded during the Karrnathi defense against a [[Cyran|Cyre]] push for [[Atur]] near the end of the war. If he were to be killed, more than a few people would look into his passing.

!! Secret Alliances

Ikar might have contracts with [[Karrnath]] and [[New Cyre]], but he shuffles the choicest relics to his masters in the Order of the [[Emerald Claw]]. He also pays homage to "Empress" [[Donata]], an alliance which grants him and his [[band|Ikar's Salvage]] access to the city of [[Metrol]].
The largest band of scavengers operating in the [[Mournland]], [[Ikar]]’s Salvage has a mobile base of operations that wanders the western edge of the [[Cyre River]],
using barges to cross the river and [[elemental]]-powered land carts to cross the Mournland wastes. Despite their capable and professional appearance, [[Ikar]]’s team is ruthless and deadly, without regard for life—[[human]] or otherwise.

The gang's forays into [[Metrol]] are
far more successful than those of others. It has been
said that [[Ikar]] knows some secret related to the city.
The dark heart of [[Dal Quor]], il-Lashtavar, is the current
incarnation of the Dream of the Age. This vast dreamscape, orbited by
the [[Ocean of Dreams]], is the source and home of the [[quori]]. It's
a menagerie of nightmares, a showcase of terrors that haunt
the dreams of mortals. On the edges of il-Lashtavar, corpses
dangle from the trees of a haunted orchard. Blood drips from
the leaves of a terrifying topiary maze. While the basic form of
these nightmares is stable, they feed on the psyches of nearby
mortals. Adventurers walking through the orchard see the
hanging corpses as the people they most care about, or even as
themselves—whatever is most disturbing to each intruder.

Those who press through this outer ring of nightmares find
the great fortress-city of the [[Devourer of Dreams]], the [[kalaraq]]
quori who coordinates the actions of the [[Dreaming Dark]] on
Eberron. The quori spirits tied to agents of the Dreaming
Dark and the [[Inspired]] can return here whenever they choose,
reporting to the Devourer and coordinating with other [[quori]].
The flowing time works to their advantage, as an hour in [[Dal Quor]] is just a few minutes on Eberron. The fortress itself is ever shifting; it might be formed from black twisted roots, or the walls could be blood-soaked spiderwebs. At the very center is a pool of shadows. It's here that newborn quori emerge when they're reincarnated, and here that the Devourer of Dreams descends into the pool to commune with the Great Darkness.

Il-Lashtavar is the most dangerous place in Dal Quor. At any
given time, there are hundreds or even thousands of quori here.
The Great Darkness doesn't act directly, but its presence can be
felt in how the environment shifts to showcase the nightmares
of intruders. Dreamers who die in this place can be trapped the
same way [[kalaraq]] bind the souls of their victims. Only the most
powerful and prepared adventurers should enter il-Lashtavar.

In those regions of il-Lashtavar that appear to be outdoors,
adventurers may notice a dark, nearly invisible moon in the
sky. A sage with considerable skill in history or arcana may
recognize this as the moon [[Crya]], thought to be destroyed in the
[[Age of Giants]]. Perhaps it was thrown into Dal Quor and could
somehow be returned, restoring the plane to its proper orbit—
or perhaps this is only il-Lashtavar dreaming of the lost moon.
Though only a child, Ilaan has an innate connection
to [[dreamspace]]—a gift that has given him wisdom beyond
his years and hardened his mind against the indoctrination of the Inspired. He can't control his dreaming, and
he rarely grasps the cryptic images he sees, but occasionally he wakes with a vital insight about the present or the
future, and he always feels obliged to act. These oracular
visions guided him to a local cell of the [[Unchained]], and
they might guide him to the PCs. In this way, if the characters are in desperate need of direction, this strangely
mature boy might approach them. Once the PCs have
encountered Ilaan, he might reach them in the future
using a [[dream of contact]].

It might be that Ilaan's youth has shielded him
from the eyes of the [[Inspired]]. Or it could be that his
"visions" are in fact dreams sent by one of [[Riedra]]'s
overlords, who is using the boy to guide the party down
a particular path. 
Ilia Merith, a member of [[Sharn]]'s upper crust, is a noted
philanthropist and a strong supporter of the arts, particularly song and poetry. Ilia might become a patron for a [[bard]], or she could employ the party to recover
a rare book of poetry that has been lost or stolen. 

Kant resides in [[Crystal Bridge]] in [[Upper Northedge]], [[Sharn]].
Illusion spells deceive the senses or minds of others. They cause people to see things that are not there, to miss things that are there, to hear phantom noises, or to remember things that never happened. Some illusions create phantom images that any creature can see, but the most insidious illusions plant an image directly in the mind of a creature.

!!! <<showspells-school {{!!title}}>>
Ilsa Boromar is the [[Boromar Clan]] leader in [[Callestan]], headquartered in the Westbridge section of the district. She despises needless cruelty but is ruthless in protecting her family's interests.
[[Bestan ir'Tonn]], [[Thurik Davandi]], and [[Caskar Halavik]] all have ties to the [[Boromar Clan]]. But Ilyra Boromar ([[halfling]] councilor for [[Lower Dura]]) is the Boromar Clan's personal representative on the Council. She reports directly to her father [[Saidan Boromar]], and she has the authority to make executive decisions on behalf of the clan. Her allegiance is obvious, but the other council members generally politely overlook it; the Boromars are one of the [[Sixty]] families of [[Sharn]], and she does have the
skills, credentials, and lineage to compete with any
of the other councilors.

Of all of the members of the council, Ilyra is the most ruthless and dangerous. The [[Boromar Clan]] prefers to avoid violence, but councilors who oppose Ilyra have disappeared in the past. However, the recent war with [[Daask]] has shaken her grip on the
council. The Boromar Clan is no longer seen as an infallible, omnipotent force—and so far the majority councilors have refused to devote city resources to battling the [[Droaam]]ites setting up shop in Sharn. Most are quite pleased with the turn of events, and
are waiting for the Boromars to be weakened further
before they take any action.

[[Thurik Davandi]], [[Bestan ir'Tonn]], and [[Caskar Halavik]] are Ilyra's allies, although Thurik and Bestan have been known to pursue their own agendas behind Ilyra's back. Her greatest enemies on the council are [[Borian Haldorak]], [[Sava Kharisa]], [[Kilk]],
and [[Hruitt]]; these four are either unconcerned with the danger represented by the [[Boromar Clan]] or feel that their supporters are powerful enough to protect them from retribution. 
An //imbued wood focus// is a rod, staff, or wand cut from a tree infused with extraplanar energy, usually one found growing in a [[manifest zone]]. When the wielder uses this focus to cast cantrips, they can channel properties associated with the [[plane]] the focus is imbued with.
The Imistil Forest is a small forest in [[Thrane]], located near the nation's borders with [[Aundair]] and [[Breland]].
While most [[plane]]s are isolated from others and it's difficult
to move from one plane to another, commerce and peaceful
interaction are defining aspects of [[Syrania]]. Most planes have
back doors that lead to the Immeasurable Market. The crystal
spire in the [[Open Sky]] is merely a gateway leading to an open
marketplace that extends as far as the eye can see. To one side, a
[[slaad]]i haggles with a [[modron]] over the price of [[hippogriff]] eggs; to
the other, a sly [[dao]] shows a [[Shavaran|Shavarath]] [[balor]] a selection of [[Fernia]]-forged blades. It's said that anything you can imagine—and many
things you can't—can be found in the Immeasurable Market.

The Immeasurable Market includes customers and
merchants from across the [[plane]]s, including the Material Plane; there are a few back doors to the Market hidden on [[Eberron]], and those who find them can make a healthy profit trading in exotic goods. It also includes a significant number
of native [[immortal]]s. Lesser [[angel]]s work as servers and porters, while
[[virtue]]s of commerce run small stands and shops. [[Dominion|dominion]]s
of commerce run the largest and most reliable businesses,
while the [[Throne|throne]] of Commerce monitors the entire Market and
banishes troublemakers. Violence is forbidden in the Market, and thieves and other
criminals are generally deported to [[Daanvi]] for judgment and
punishment. 

There are countless merchants in the Market. Most have
temporary stands or tents, but there are a few permanent
structures scattered about; the [[Last Resort]] is the most beloved
watering hole in the planes. Below are a few examples of merchants and shops adventurers could discover.

!! Immeasurable Merchants

* the [[Last Resort]]
* [[Jabra]]
* [[Sar Saeran]]
* [[Mazalene]]
* the [[Hoard]]
* [[Lady Ash]]
* [[Bor'ob]]
* [[Slade]]

!! Immeasurable Currencies

While merchants always try to get the best deal,
when dealing with immortal customers, your reputation is
everything. Beyond this, oaths made in the Market carry great
weight, and can be enforced in the courts of [[Daanvi]]; in the
Immeasurable Market, your word truly is your bond. This is
important, because most of the merchants aren't interested
in gold, and goods and services usually involve barter. The table below gives a few examples of things that can be used in trade, but this is just a starting point; the
DM should feel free to come up with other offers.

| !<<dr d8>> |!Currency |
| 1 |''Angel Tears.'' These translucent coins are one of the only active currencies in the Immeasurable Market. They're produced by the [[Throne|throne]] of Commerce and honored by most [[dominion]]s and virtues. For simplicity's sake, they could be assigned a value in gold pieces, so a dominion might pay adventurers 10 c in angel tears for a minor service. These are useful when you want to buy a drink at the tavern without selling your soul. |
| 2 |''Dragonshards.'' [[Dragonshard|dragonshard]]s are unique to [[Eberron]], and there are merchants who take a great interest in them—especially Khyber dragonshards, which can be used to bind spirits. |
| 3 |''Luck.'' Some merchants literally let you spend your fortune. Luck is measured in “dice.” Each die you spend allows the DM to give you disadvantage on a future roll of their choosing. So if you spend five dice to acquire an item, that's five difficult rolls in your future. |
| 4 |''Trade Goods.'' Many merchants are primarily interested in things they can resell. What's valuable to an [[immortal]] may not seem valuable to a mortal; an item that is unique or has emotional significance may have value to an Immeasurable merchant even if it doesn't do anything. So it's possible a treasured trinket holds more trade value than a legendary [[magic item]]. |
| 5 |''Odd Organs.'' Some merchants like to deal in the body parts of unusual creatures—unicorn horns, a dragon's heart, a demon's eye. They may be willing to sell something on the promise of future delivery, but there's usually a fixed time to complete the transaction. |
| 6 |''Services.'' Merchants may well barter goods in exchange for a promise of service, either immediately or to be performed in the future. Remember that oaths sworn in the Market carry great weight; those who break a vow can end up facing a tribunal in [[Daanvi]]. |
| 7 |''A Song.'' This doesn't have to literally be a song, but there are merchants who trade goods in exchange for a performance of some sort. Usually this is about quality; they'll sell you the dagger for a song, but it needs to be an epic performance. |
| 8 |''A Soul.'' These aren't a common form of currency, but some [[immortal]]s trade in souls... if not your own, this is usually about promising to kill someone! A soul traded in this way becomes the possession of the immortal upon death instead of it going to [[Dolurrh]]; this eliminates any possibility of resurrection unless the soul is reclaimed. |
Flames wreathe one creature you can see within 90 feet. If the target can't dodge, it is ignited for up to 1 minute. The burning target sheds bright light in a 30-foot radius and dim light for an additional 30 feet, and continues to burn for the duration. These magical flames can't be extinguished by nonmagical means.
Immortal beings are an integral part of their
native [[plane]], each expressing a particular aspect of its
core ideas. For example, in [[Shavarath]], [[devil]]s embody the
concept of war fought in pursuit of tyranny, while [[angel]]s
are living symbols of the endless fight for justice. The name
“immortal” doesn't mean “unkillable”—they can indeed be
killed (though this is a temporary solution). While
immortals don't show the effects of age, some have a limited
lifespan and can die a natural death as well. However, their
//essence// is immortal and their numbers remain constant.

Most immortals don't care about [[Eberron]]. Many consider
Eberron to be an unfinished experiment, while their realm is
the finished, perfected work of the [[Progenitors|Progenitor Dragons]]. Others simply believe in their purpose to the exclusion of all other things; to
the angel of Shavarath, the eternal battle is the single most
important struggle in the multiverse, and leaving their post
for even an instant could give the enemy an advantage. So
most immortals aren't concerned with the fates of mortals
or their civilizations; of course mortals may die, that's their
most defining feature. An angel has seen many human
civilizations rise and fall—what's one more? While there are
a few exceptions—immortals who chose to dwell on Eberron,
whether to prey on mortals, observe them, or assist them—immortals are generally bound to their planes, and your problems are not their problems.

Immortals don't reproduce as mortal creatures do; if they're
killed, their spiritual essence is instead reabsorbed into the
plane and eventually reassembled. For example, in Shavarath,
angels and devils are constantly being killed, but they're just as
quickly being reborn to fight again. Immortals are each born as
embodiments of specific ideas and don't choose their path;
they're already mature, possessing their full abilities and
knowledge, and imbued with an absolute understanding of
their purpose. So while immortals possess great power, they
lack the potential of mortals to grow and evolve, and find the
idea of questioning their beliefs or straying from their purpose
to be inconceivable.

There are exceptions to all rules, of course. The [[kalashtar]]
exist because a handful of [[quori]] turned against [[il-Lashtavar]].
Likewise, [[radiant idol]]s are angels of [[Syrania]] that were
corrupted by their time on the Material Plane and desired
mortal adoration. But these examples are vanishingly
rare. Sometimes it's because the unusual immortal is born
embodying a unique perspective on the usual concept; this is
essentially a mutation, as opposed to a choice. In other cases,
an outside force might change or corrupt the immortal's
fundamental nature. And rarely, an immortal might have an
unusual sense of identity and the ability to choose.

If an immortal changes in a way that alters its core concept,
this is often accompanied by a physical transformation, such
as a corrupted angel becoming a radiant idol, thus losing its
ability to fly. Immortals may be able to increase their abilities
by absorbing other immortals, acquiring artifacts, or through
other means unique to their plane. They simply don't grow
or gain experience through time alone; after all, some of
them are as old as the universe itself, and in the absence of a
dramatic cause, they're utterly unchanging.
This lightweight cuirass of hardened leather has been imbued with the magic of an [[immovable rod]]. When a small button on the right shoulder is pressed, the armor becomes magically fixed in place. Until the button is pressed again, the armor doesn't move, even if it is defying gravity. The cuirass can hold up to 8,000 pounds of weight. More weight causes the cuirass to deactivate and fall.
This flat iron rod has a button on one end. You can press the button, which causes the rod to become magically fixed in place. Until you or another creature pushes the button again, the rod doesn't move, even if it is defying gravity. The rod can hold up to 8,000 pounds of weight. More weight causes the rod to deactivate and fall.
Imps are minor [[devil]]s found throughout [[Fernia]], [[Shavarath]], and the [[Iron Ward]] in [[Daanvi]], either running errands for their infernal masters, spying on rivals, or misleading and waylaying mortals. 

An imp can assume animal form at will (rat, raven, or spider), but in its natural state it resembles a diminutive red-skinned humanoid with a barbed tail, small horns, and leathery wings. It strikes while invisible, attacking with its poison stinger.
This cloak of dark, waxed canvas is fireproof, waterproof, and windproof, keeping the user at a dry, comfortable temperature at all times.
This spell requires a few minutes to cast, and up to 2500c worth of ritual components, which are expended. The value of the ritual components are contingent on the power of the target.

You create a magical restraint to hold a creature that you can see within 30 feet. If you fail the attempt, the target is immune to this spell if you cast it again. Otherwise, the target is bound, and the binding lasts until it is dispelled. While affected by this spell, the creature doesn't need to breathe, eat, or drink, and it doesn't age. [[Divination|divination]] spells can't locate or perceive the target.

When you cast the spell, you choose one of the following forms of imprisonment.

<<<
//''Burial.''// The target is entombed far beneath the earth in a sphere of magical force that is just large enough to contain the target. Nothing can pass through the sphere, nor can any creature teleport or use planar travel to get into or out of it.

The special component for this version of the spell is a small mithral orb.

//''Chaining.''// Heavy chains, firmly rooted in the ground, hold the target in place. The target is restrained until the spell ends, and it can't move or be moved by any means until then.

The special component for this version of the spell is a fine chain of precious metal.

//''Hedged Prison.''// The spell transports the target into a tiny [[demiplane]] of [[Khyber]] that is warded against teleportation and planar travel. The demiplane can be a labyrinth, a cage, a tower, or any similar confined structure or area of your choice.

The special component for this version of the spell is a miniature representation of the prison made from jade.

//''Minimus Containment.''// The target shrinks to a height of 1 inch and is imprisoned inside a gemstone or similar object. Light can pass through the gemstone normally (allowing the target to see out and other creatures to see in), but nothing else can pass through, even by means of teleportation or planar travel. The gemstone can't be cut or broken while the spell remains in effect.

The special component for this version of the spell is a large, transparent gemstone, such as a corundum, diamond, or ruby.

//''Slumber.''// The target falls asleep and can't be awoken.

The special component for this version of the spell consists of rare soporific herbs.
<<<

//''Ending the Spell.''// During the casting of the spell, in any of its versions, you can specify a condition that will cause the spell to end and release the target. The condition can be as specific or as elaborate as you choose, but the DM must agree that the condition is reasonable and has a likelihood of coming to pass. The conditions can be based on a creature's name, identity, or deity but otherwise must be based on observable actions or qualities and not based on intangibles such as level, class, or other game mechanic.

A [[dispel magic]] spell can end the spell only if it is cast as a mythical-tier spell, targeting either the prison or the special component used to create it.

You can use a particular special component to create only one prison at a time. If you cast the spell again using the same component, the target of the first casting is immediately freed from its binding.
What little is known of the Inana
[[maenad]]s suggests that they maintain a radically simple,
almost deliberately primitive society in the remote [[Tashyvar Islands]]. Separate and distinct coastal villages are designed
to be entirely self-sufficient, and there is no indication of
any centralized government. Inana colonists have in recent
generations established a series of fishing villages on the
western seaboard of Tashana, as well as the port community
of [[Winterstead]], trading peaceably with the native [[Saartuk]]
[[shifter]] tribes. As a people, the Inana apparently follow some
kind of seasonal rhythm, with active periods of exploration
and colonization in the summer, offset by almost hibernation-like episodes in the long dark of winter. In fact,
visitors to Inanan villages in the dead of winter report
entire colonies seemingly abandoned. 
While wearing this innocuous hat, you magically blend into the hustle and bustle of crowds. Enemies searching for you in cities have a much harder time spotting you, and you have advantage when going unnoticed, such as trying to slip past guards in a crowd.
Succubi and incubi are lascivious dark-winged [[fiend]]s that can be found in service to more powerful entities, especially the [[Dark Power]]s of [[Mabar]]. Though legend speaks of them separately, any succubus can become an incubus, and vice versa. Most of these fiends do have a preference for one form or the other. Mortals only rarely see a succubus or incubus in its true form, however, for the fiend typically begins its corruption in veiled, insidious ways.
This branch of the [[Unity]] of [[Riedra]] manages industry, from the acquisition of raw supplies to the production and distribution of finished goods. Lord Malukath ([[hashalaq]] [[Inspired]] [[shaper|psion]]) guides the Forge from the massive bastion of [[Dul Kalent]]. 
Maintained by [[devil]]s, this oppressive layer is the embodiment
of prison—the inevitable consequence of challenging the law.
With the full power of [[Daanvi]] behind it, the Inescapable Prison
makes [[Dreadhold]] look like a cell in the local sheriff's office. It's
designed to hold [[celestial]]s, [[elemental]]s, and other beings with
vast power; there are convicts here from a half-dozen [[plane]]s of
existence. Mortals can also be imprisoned here; their biological
processes are put in suspension, so they don't need to eat or
drink, and they don't age. It's rare for mortals to end up here, but
there may be a few legendary historical figures, long thought
dead, who have instead been held in the Inescapable Prison!
The nigh-unstoppable inevitables are [[construct]]s native to [[Daanvi]], the Perfect Order. They are dedicated to enforcing the law in all its aspects, and are often assigned to enforce specific contracts. They possess the ability to teleport creatures to the [[Hall of Justice]] to await judgement.
Uttering a dark incantation and sacrificing a ruby or other valuable item worth at least 100c, you summon a [[devil]] from a [[demiplane]] of [[Khyber]] or another [[plane]] of existence. You choose the devil's type, which must be one of [[tier 2|creature tier]] or lower, such as a [[barbed devil]] or a [[bearded devil]]. The devil appears in an unoccupied space that you can see within 90 feet. The devil disappears when it is incapacitated or when the spell ends up to 1 hour later (or if your concentration breaks).

The [[devil]] is unfriendly toward you and your companions. It is under the DM's control and acts according to its nature, which might result in its attacking you if it thinks it can prevail, or trying to tempt you to undertake an evil act in exchange for limited service.

For as long as the spell lasts, you can try to issue a verbal command to the devil. It obeys the command if the likely outcome is in accordance with its desires, especially if the result would draw you toward evil. Otherwise, you must make a Persuade attempt to command it. Gain an advantage if you say the devil's true name. If your attempt fails, the devil becomes immune to your verbal commands for the duration of the spell, though it can still carry out your commands if it chooses. If your attempt succeeds, the devil carries out your command—such as "attack my enemies," "explore the room ahead," or "bear this message to the queen"—until it completes the activity, at which point it returns to you to report having done so.

If your concentration ends before the spell reaches its full duration, the devil doesn't disappear if it has become immune to your verbal commands. Instead, it acts in whatever manner it chooses for up to 20 minutes, and then it disappears.

Some say if you possess an individual devil's talisman, you have wield complete control over that devil when you summon it.

If you are able to cast legendary-tier spells, you can cast this spell as such to summon a [[tier 3|creature tier]] devil.
While wearing these beautiful scaled gauntlets, you can [[push yourself]] to ignite them for up to one minute, scorching anything you strike. In addition, you can cast the [[burning hands]] spell.
Infernos are isolated [[layer]]s of [[Fernia]] that showcase a particular act of
destruction by fire. One inferno is a burning city, where [[devil]]s
direct bombardment and [[demon]]s dance about, spreading
the flames within. In another layer, a lone [[balor]] oversees the
devastation of an ancient forest. These fires never end; parts
of the layer are rebuilt even as others are consumed, and the
inferno continues forever.
[[Dolurrh]]'s [[Library]] merely contains records of every mortal soul
that's passed through it. By contrast, [[Daanvi]]'s Infinite Archive
contains records on every being that's ever existed. Here, the
data gathered by the [[Panopticon]] and the rulings of the [[Hall of Justice]] are recorded and efficiently preserved. Records focus on
each individual's deeds, whether they've adhered to or violated
countless codes of legal and moral standards. Daanvi doesn't
generally do anything with this data; they have no jurisdiction
to act on it. So through your life, the immortals of Daanvi have
watched and judged your every action. You aren't rewarded or
punished for your deeds, but they know what you've done, and
it's forever preserved on your permanent record.

Mortals must present an excellent reason—or bribe a [[devil]]—to get access to the Archive, but it's not as restricted as the
[[Panopticon]]. The Infinite Archive lives up to its name, and is
unknowably vast. If adventurers have a legitimate inquiry, a [[deva]]
sage can be quite helpful. Working with [[modron]]s is a long and
tedious process, while devils make it even more unpleasant.
When people think of
[[inquisitive]]s, House [[Tharashk]] usually springs to mind. Kalaash'arrna, a cunning man with the [[Mark of Finding]], runs Information Acquisition (Lhash'ta'raak in the [[orc]]ish tongue) for
the house. As the name implies, InAc specializes in
information gathering—shadowing people, digging
up dirt, and similar, often unsavory tasks.

Kalaash'arrna never betrays his clients; however, he is completely ruthless when it comes to fulfilling his contracts. Kalaash comes from one of the
poorer families of the house. The success of InAc
directly reflects on his family, and he is determined
to prove his value to the house.

While Kalaash serves as the primary [[inquisitive]] at InAc, he employs four lesser inquisitives, all unmarked members of House [[Tharashk]] (both
[[human]]s and [[half-orc]]s).
Inquisitives put their keen minds and dogged determination to use unraveling mysteries. Inquisitive agencies run the gamut from private investigators to networks of
detectives supported by [[dragonmarked house]]s. 

House [[Tharashk]]'s [[Finders Guild]], House [[Medani]]'s [[Warning Guild]], and House [[Deneith]]'s [[Sentinel Marshals]] all employ inquisitives with and without [[dragonmark]]s. The [[Sharn Watch]] and [[King's Citadel]] also include inquisitives devoted to solving crimes and tracking down the perpetrators.

!! People and Places Tagged "inquisitive"

<<list-links-article "[tag{!!title}sort[title]]">>
The rulers of distant [[Sarlona]] are known as the Inspired. These noble families are said to be bound to celestial spirits that guide and empower them, but the truth is far
darker. The Inspired are the mortal hosts of the nightmare spirits of [[Dal Quor]], and they carry out the foul
agenda of the [[Dreaming Dark]].

Any [[humanoid]] who can dream can volunteer to serve
as a [[quori]] vessel. But the Inspired of [[Sarlona]] are [[human]]s bred with traces of [[elf]] and [[fiend]] blood to be such vessels. These vessels (known as the [[Chosen]] before possession) have no choice in this destiny, since they can't resist quori possession.
Physically, Inspired resemble the [[kalashtar]], possessing
an almost supernatural beauty.

Most of the people of the [[Five Nations]] have heard
of the Inspired lords in [[Riedra]]—never realizing that
Inspired are spread throughout [[Khorvaire]] as well.
Beggars and generals, mayors and merchants might
all be secret servants of the [[Dreaming Dark]]. Such individuals have to willingly accept [[quori]] possession, but the Dreaming Dark has long experience in weaving dreams
that can convince mortals to surrender their bodies. 
While you are playing this musical instrument, you can create harmless, illusory visual effects within a 5-foot-radius sphere centered on the instrument. If you are a [[bard]], the radius increases to 15 feet. Sample visual effects include luminous musical notes, a spectral dancer, butterflies, and gently falling snow. The magical effects have neither substance nor sound, and they are obviously illusory. The effects end when you stop playing.
An intellect devourer resembles a walking brain protected by a crusty covering and set on bestial clawed legs. This foul aberration feeds on the intelligence of sentient creatures, taking over a victim's body on behalf of its mind flayer masters.

[[Mind flayer|mind flayer]]s breed intellect devourers to serve as roaming hunters, taking the brain of a thrall and subjecting it to a disgusting ritual. As it sprouts legs, the brain becomes an intelligent predator as twisted and unknowable as its masters.

An intellect devourer consumes a creature's mind and memories, then turns the host body into a puppet under its control. An intellect devourer typically uses its puppet host to lure others into the domain of the mind flayers to be enthralled or consumed.
A creature you touch becomes invisible for up to 1 hour. Anything the target is wearing or carrying is invisible as long as it is on the target's person. The spell ends for a target that attacks or casts a spell.

If you are able to cast rare-tier spells, you can cast this as such to make the invisibility persist if the target attacks or casts a spell, but the duration is shortened to only a few minutes. Alternatively, you can target up to three creatures with this spell simultaneously.
You are immune to all damage for 10 minutes or until your concentration breaks.
The ir'Tains are the most powerful family in [[Sharn]]. An ir'Tain served as the first [[Lord Mayor of Sharn]], and the first towers were raised with ir'Tain gold. Today the [[half-elf]] family derives most of its income from its vast holdings throughout the city; many of the tenements and apartment complexes are ir'Tain property. The Tain Manor in [[Brilliant|Skyway]] is only the latest in a long line of mansions to hold that name, and many of the former Tain Manors are now owned by the wealthiest citizens of other districts. 

Despite their wealth and power, the ir'Tains
have no connection to the [[Aurum]]. While the cabal
has approached members of the family, the ir'Tains
feel that an alliance with the Aurum would be an
insult to the pride and integrity of the clan. 

!! Prominent Members

* [[Celyria ir'Tain]], matriarch of the [[Sharn]] branch
* [[Hass ir'Tain]], Celyria's eldest son

In descending order of age, the other members
of the core family are Cyra ir'Tain, Cariana ir'Tain, and Daral ir'Tain. Lord [[Dalian ir'Tain II]] is said to have perished in a shipwreck during the end of the [[Last War]]. The ship
supposedly went down deep in the territory of the
[[sahuagin]], but Lord ir'Tain's body was never recovered. Rumors abound that ir'Tain is still alive—that he is a pirate captain, a prisoner of the sahuagin, or the
prince of a lost kingdom in the jungles of [[Xen'drik]],
depending on which tale you believe. 
In Irian, birds sing in a fertile valley, while a group of settlers work together to raise their first home. Moving further in, you find the gleaming capital of a new empire, where cheering throngs celebrate in the streets. There are dozens of layers in Irian, and each one is a vision of life triumphant. Irian is the dawn that inevitably banishes even the darkest night, the promise of spring triumphing over the coldest winter. It's the bastion of hope, the promise that life always find a way.

In his Planar Codex, [[Dorius Alyre ir'Korran]] calls Irian the Plane of Light, and indeed, its light is so prevalent that there's no full darkness within Irian. But it's also the plane of life, the source of positive energy, the force that sustains life and underlies most healing magic.

!! Universal Properties

The light of the Eternal Dawn strengthens the living. Darkness
and disease have no place here, and minor injuries melt away.
Irian has the following universal properties.

* //''Radiant Power.''// Spells that restore health or deal radiant damage are magnified.
* //''Necrotic Void.''// In order to cast a spell that deals necrotic damage, any consequences to that roll include one additional stress from casting the spell.
* //''Pure Light.''// There is no darkness in Irian. Any spell, effect, or other situation that would usually create darkness only reduces the lighting to dim light.
* //''Life Triumphant.''// [[Undead|undead]] creatures are significantly enfeebled. This has no effect on undead creatures that are sustained by Irian, such as the [[deathless]] elves of [[Aerenal]].
* //''The Light of Life.''// The light of Irian restores vitality, granting the following benefits to all living (or deathless) creatures. These have no effect on [[Mabar]]an [[undead]] or [[construct]]s. 
** Extremely rapid recovery of injuries.
** Resistance to poison, disease, and fear.
* ''Standard Time.'' Time passes at the same pace as on the Material Plane, and is consistent across its layers.

!! Planar Rebirth

Most of the planes are fixed in their form; for example,
every mortal brings new dreams to [[Dal Quor]], but the plane's
structure doesn't change. [[Mabar]] is an exception: the Endless Night steals and corrupts fragments of other planes, adding
them to its layers. Left unchecked, Mabar would consume
reality. But as the Endless Night consumes, the Eternal
Dawn creates. Whenever Mabar tears a fragment from
another plane, a new planar seed appears in Irian. Initially,
this is a small layer, populated by [[ember]]s and [[lumi]], that
has Irian's planar properties. Over time, the layer grows
and evolves, and the environment and its inhabitants take
on the appearance of the void it's to fill. Little by little, it
loses the properties of Irian and adopts the properties of
its destination plane; when it finally loses the //Light of Life//
property, its ties to Irian are severed and it fully becomes
part of the other plane, replacing the region lost to [[Mabar]].

The planar seed is rarely a perfect match for the fragment
that was lost. The [[ember]]s take the form of local life, but
especially for fragments torn from the Material Plane, a
planar seed doesn't replace sentient creatures or buildings; it
simply restores land and wildlife. If the [[Mourning]] had been
the work of Mabar—which is unlikely for many reasons, but
not impossible—Irian wouldn't restore the people killed in the
Mourning or the destroyed structures, but it would restore life
to the land and make it a welcoming environment.

In most planes, [[immortal]]s can't reproduce, but they're reborn
if they die, and their numbers remain constant. Irian breaks
that rule, because it creates new immortals to replace those
corrupted by [[Mabar]]. These begin as [[lumi]] and [[angel]]s, but as
the seed loses its properties, these immortals evolve into the
denizens of that plane, drawing their personalities from the
template for the new immortals. Irian makes no judgment about
the spaces it fills, and it may create a squad of bloodthirsty
[[demon]]s when it replaces a lost fragment of [[Shavarath]]. These
seed immortals can't leave their layer until it's fully bound to their
final plane, so they can't wreak havoc in Irian, but it would be
quite a surprise for nosy adventurers that stumble into that layer!

The creation of seeds is an important drive for the
inhabitants of Irian. Immortals monitor and guide the
formation of the seeds, while [[lumi]] tend the [[ember]]s and prepare
to become inhabitants of the new plane. Irian immortals rarely
interfere in other planes, because what they're already doing is
the most important task they could perform.

!! Denizens

Most inhabitants of Irian fall into one of the following categories.

!!! Embers and Lumi

[[Embers|ember]] are the [[manifestation]]s of Irian, each linked to an echo of a specific living mortal's brightest joys, deepest hopes, and greatest deeds. When a mortal dies, their light-shadow ember in Irian begins to fade, but sometimes, fading embers can merge into a [[lumi]], a truly conscious and living creature of positive energy.

!!! Celestials

Irian's [[immortal]]s are spirits of light and hope. Irian is noteworthy
for being the home of the [[ki-rin]]. These majestic creatures often
act as emissaries for the [[Architect]]s. Each planar seed has a ki-rin
assigned to monitor it, help the lumi, and ease transition.

Irian is also home to [[angel]]s. Not as violent as the angels of
[[Shavarath]] or as individualistic as the angels of [[Syrania]], the angels of Irian embody the general principles of hope and
compassion. Irian [[deva]]s assist the [[lumi]] and help sustain
the different [[layer]]s; they are the knights and scholars of the
[[Amaranthine City]]. Devas often change their form to play multiple
roles within a layer, and adventurers may think that they've
encountered multiple people, when in fact it's a single deva.
Meanwhile, [[planetar]]s act as champions and ministers, and each
of the [[Architect]]s has a single [[solar]] that serves as its right hand.

The angels of Irian have wings formed of light, which they
can conceal if they wish. In their true form, they're luminescent
humanoids of indeterminate species, but can choose to appear
to mortals as a generic member of the viewer's species. Devas
also possesses the ability to change into specific forms at will. 

!!! The Architects

The [[Architect]]s are the most powerful spirits of Irian. Each
embodies an aspect of the plane, and oversees a region
within it, as discussed in the “Layers” section.

!! Layers

It's always morning in Irian; the skies are clear, the sun is
fixed in the sky, and the moon [[Barrakas]] is faintly visible. The
plane contains many [[layer]]s, and it's always growing new ones.
While the setting of a layer varies—a verdant valley, a growing
city, a newly established farm—the story is always about life,
growth, and hope. Things are growing, people are prosperous,
and the future is bright. While there are many natural
environments in Irian, it's this optimism that differentiates
them from those of [[Lamannia]]. Irian is a celebration of life;
Lamannia focuses on the untamable primordial power of
nature, and often feels more threatening and wild.

The layers are linked in realms, each of which is bound
to one of the [[Architect]]s. The denizens and themes of a layer
reflect the influence of that Architect, so all of the layers of
the [[Garden]] have a focus on rustic nature, while those tied to
the [[Amaranthine City]] reflect its rising imperial power. Some
layers are bounded by physical barriers, but most either loop
back on themselves or end in walls of warm mist—anyone
who wanders into the fog reemerges elsewhere in the layer.
Within realms, layers are often connected by physical portals
like a massive gate or a pool of light. Moving between realms
requires [[plane shift]] or a ritual tied to that realm. These rituals
may not be magical; they are simply secrets that have to be
learned. If you're in the [[Amaranthine City]] and you want to
travel to the [[Garden]], all you have to do is plant a flower and
reflect on its beauty; those thoughts will carry you there.

Planar seeds sprout from realms. Early on, they're small layers
with indistinct themes, but expand and gradually take on the
nature and properties of the plane they're to become. Thus, you
could stumble into a layer that replicates a piece of [[Dolurrh]]'s
[[Catacombs]] or represents conflict in [[Shavarath]]. However, these
layers aren't fully developed—once they are, they move onto
their destination plane—so Irian's seed of the Catacombs of
Dolurrh won't have the entrapping effect of Dolurrh itself.

Here are three examples of realms, but there are many more.

* the [[Amaranthine City]]: Growth
* the [[Garden]]: Life
* the [[Refuge]]: Hope

!! Planar Manifestations

Here are a few of the ways Irian can affect the Material Plane.

!!! Manifest Zones

[[Manifest zone|manifest zone]]s tied to Irian are wellsprings of positive energy.
Plants and animals thrive in these zones, while people are
less likely to dwell on negative emotions and find it easier to
embrace hope and joy. Irian zones often have one or more
of the plane's universal properties. Irian zones with the
//Radiant Power// property support spells of healing and may
enable rituals or support [[eldritch machine]]s that can't be built
anywhere else. In particular, the [[City of the Dead|Shae Mordai]] in [[Aerenal]]
is built on a strong Irian manifest zone, which sustains the
[[deathless|Undying Court]] councilors.

Irian zones rarely extend the full swift healing effect of Irian's
//Light of Life// property, but weaker versions of this property are
common when in an Irian zone. For this reason, these zones a valuable
natural resource, and often become the foundations of villages,
towns, or [[Jorasco]] healing houses. Irian manifest zones rarely
serve as gateways to the plane, and traveling to Irian usually
requires [[plane shift]] or similar magic.

!!! Coterminous and Remote

Life blossoms when Irian is coterminous. Health and fertility
are enhanced, positive energy flows freely, and living creatures
are infused with an abundant sense of hope. While Irian is
coterminous, the //Radiant Power// property applies across
[[Eberron]] and all creatures become more resistant to disease, poison, and fear.

When Irian is remote, colors seem to fade and a sense of
psychic numbness pervades the world. All creatures become more vulnerable to fear and resistant to radiant damage, and magical healing is less effective. 

Traditionally, Irian is coterminous for ten days in the month
of [[Eyre|Khorvaire calendar]] and remote for ten days in the month of Sypheros.
These effects occur once every three years; the remote cycle
comes a year and a half after it is coterminous.

!!! Irian Artifacts

The [[Aereni]] harness Irian's energy, using it to create many of
their tools, but industry isn't one of the core concepts of Irian
and relics from the plane itself are relatively rare. Whether
from the plane itself or simply drawing on its power, items tie to
the effects of positive energy: healing, dealing radiant damage,
generating light, bringing hope, or overcoming fear. A scroll that
provides a single trip to the [[Refuge]] would be an invaluable boon.

Plants that grow in Irian [[manifest zone]]s can often have
remarkable properties. Many of of [[Aerenal]]'s exotic lumbers—notably [[livewood]]—only grow in Irian zones. [[Araam's crown]] and [[dawn's glory]] are flowers with useful medicinal and alchemical properties.

!! Irian Stories

At first glance, Irian can seem much too good to be true.
Its inhabitants are benevolent, and it heals you every round.
What's the catch?

At the most basic level, there isn't a catch. It's the literal
embodiment of light triumphing over darkness and the power
of hope. While certain diseases could be seen as tied to the
concept of growth, Irian doesn't have a dark side in the same
way as, for example, [[Daanvi]]. However, there are a few obvious
limitations. It's not an easy plane to reach, as its [[manifest zone]]s don't act as portals. So the [[Refuge]] is a perfect shelter for anyone who can reach it, but you have to find a way to get there. And with the Refuge in particular, you get one free visit,
but after that, [[Araam]] expects you to help someone else before
she'll welcome you again.

There are a few ideas you can explore. The first is that
unfounded hope can be dangerous. A [[lumi]] or [[deva]] might
spread hope because that's its nature—but in doing so, may
convince people they have a chance to defeat an enemy that
they should actually be fleeing from. You can also explore
mortal forces abusing the power of Irian—[[Jorasco]] seizing a
manifest zone to grow [[Araam's crown]] or criminals trafficking in
[[fool's hope|dawn's glory]].

//''A Wound That Will Not Heal.''// Perhaps a villain wields a
[[Mabar]]an scythe that deals wounds that can't be healed by
magic or rest, or a [[hag]] lays a terrible curse on an adventurer.
It's said that all wounds and woes can be cured in the [[Refuge]]
of Irian. But how will the adventurers reach the Eternal Dawn,
and what will [[Araam]] ask of them in return?

//''Beyond the Grave.''// When the adventurers cross paths with
a [[lumi]], it hails them. It holds the memory of a hero who once
saved the life of one of the characters, and that debt was never
repaid; the lumi asks them to honor that by helping with its
current quest. This could be a debt incurred during the party's
travels, or even something from a character's backstory; you
could ask a player to tell you about a time someone saved their
character's life, and let them add depth to the debt.

//''A New Realm.''// A barren region on the border of two nations
or rival clans suddenly becomes a wondrous, fertile oasis.
This is the result of a planar seed taking root. In addition to
whatever remarkable plants or resources it holds, it's become
an Irian [[manifest zone]]—a valuable resource. Dispute over
the territory could have disastrous consequences; can the
adventurers prevent bloodshed? And has the [[Architect]] hidden
any secrets or artifacts in this seed land?
The Iron Council is the conclave of [[dwarf]] lords of the [[clans|Mror clan]] of the [[Mror Holds]]. Issues that concern the entire nation go before the Iron Council, which meets in the [[Ferrous House]] in the city of [[Krona Peak]] in [[Mroranon]]hold.
This branch of the [[Unity]] of [[Riedra]] deals with foreign affairs,
including trade and diplomacy. It oversees all traffic
between Riedra and other nations; any Riedran who
could come into contact with foreigners—from sailors
to servants—is carefully vetted. Eidolon [[Tureya]] oversees the Iron Gate from the port of [[Dar Jin]]. 
The Iron River in [[Karrnath]], also known as the Mror River, flows from the [[Ironroot Mountains]] into [[Lake Dark]].
The Iron Ward, a city of gray stone, embodies the worst aspects
of oppressive law. Councilor Alashta, a cruel [[amnizu]], wields
absolute power and can't be questioned or challenged. Most
of the [[subjects|manifestation]] of the ward are indentured servants, trapped in
inescapable contracts; visitors must be careful not to accept
any offers of work in the ward, lest they be similarly trapped.
There are regular displays of brutal “justice” in the grand
plaza. [[Imps|imp]] scurry in the shadows, watching outsiders and
carrying news of their actions to the [[chain devil]]s and [[erinyes]]
that serve as the brutal police force. While they can't punish
adventurers “unjustly,” they //can// tempt visitors into misconduct;
fiendish merchants and patrons have many appealing offers for
adventurers, but almost all would surely lead to breaking a law
of the ward, obscure and ridiculous as it may be.

While the Iron Ward symbolizes the evils of oppressive order,
it is driven by order. The police and councilors twist the law and
weaponize it, but ultimately even they must obey the laws—the
one advantage adventurers have in passing through this place.
And while the subjects of the Iron Ward are brutally oppressed,
they're largely symbolic; it's questionable if the subjects even
exist when no one's around to observe their suffering.
This realm's entire landscape is formed from metal. [[Adamantine|adamantine]]
trees grow razor-sharp leaves, and iron blades of grass cut
through soft shoes. This [[demiplane]], which has [[Shavarath]]'s
//Bloodletting// property, is home to bands of [[devil]]s and [[demon]]s
that engage in their own endless wars. These [[fiend]]s enjoy
fighting and oppressing mortals, but fortunately, they can't leave
their realm. The [[Ghaash'kala]] [[orc]]s of the [[Demon Wastes]] raid the
Ironlands, pillaging weapons from the warrior fiends. The [[Kech Shaarat]] have expanded their deep vault into the Ironlands; over many centuries, these dar have established an
alliance with one of the devil clans, allowing them to hold onto
this territory. It's up to the DM to decide on the foundation of this
alliance and whether the Shaarat can leverage it in other ways.
The [[dwarves|dwarf]] of the [[Mror Holds]] and the [[orc]]s of [[Jhorash'tar]] occupy this mountainous region that separates [[Karrnath]] from the [[Lhazaar Principalities]]. The Mror call the entire region //tra Mroreln//, the Iron Roots. When [[human]]s first came to [[Khorvaire]] and settled the [[Lhazaar Principalities]], they called the foreboding range to the west the Hoarfrost Mountains.

Today, the Mror and most others refer to the entire region as the Ironroot Mountains. However, the people of the Lhazaar Principalities still call them the Hoarfrost, and some people use this term to refer to the mountains east of [[Mirror Lake]].

The Ironroot Mountains hold some of the richest mineral deposits on [[Khorvaire]], making the [[Mror Holds]] a primary source for iron, copper, gold, platinum, and other vital ores.
Irontown is a mining town in [[Karrnath]], located near the shores of [[Lake Dark]].
It’s a common misconception that the [[Valaes Tairn]]
believe in honor in battle. Some do, but what matters
most to a [[Valenar]] warrior is emulating the deeds of
one’s patron ancestor. And while some of those heroes
were chivalrous, others were ruthless or cruel—and
their descendants are expected to follow in their mold.

Like many young [[Valaes Tairn]], Irristia Immiar
saw extensive action during the [[Last War]] but failed
to distinguish herself before the peace of [[Thronehold|Treaty of Thronehold]]
took her opportunities away. Now the leader of her
own warclan, she is among those disaffected [[elves|elf]]
who yearn to prove themselves on the frontier—and to
goad Valenar’s neighbors into an ongoing conflict that
will grant her the chance for glory.

So far, Irristia’s efforts have been in vain. Her clan’s attacks against [[Karrnath]]i fortresses and caravans in the northern [[Talenta Plains]], nomadic [[halfling]]
warriors on the southern frontier, and the [[human]]
militias of [[Q'barra]] have been easy victories. Aware of
the reputation of the [[Valaes Tairn]], the [[Karrnath]]i garrisons are eager to avoid full-scale conflict, choosing instead to maintain a defensive posture.

In her frustration, Irristia has begun attacking civilian targets along the border between [[Karrnath]] and the [[Plains|Talenta Plains]], raiding villages and burning cropland between [[Vulyar]] and [[Irontown]]. She has no enmity for the farmers and herders her clan has slain, but she means to have her glorious war no matter the cost in suffering.
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this quiet district. Children play in
the streets and couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[University District]] (southeast); [[Seventh Tower]] (south); [[Highhold]] (bridge, southwest); [[Daggerwatch]] (bridge, northwest); [[Highest Towers]] (bridge, north); [[Warden Towers]] (below)

Ivy Towers is a generally unremarkable residential
district, notable only because a significant number
of professors at [[Morgrave University]] make their
homes here. 
Lord Commander Iyan ir'Talan is in charge of the [[Sharn Watch]]. As long as the city's
wealthy elite are content to keep Iyan in power, he
does little more than maintain the status quo. 
Commander Iyanna ir'Talan  commands the [[Black Arch]] garrison in [[Lower Tavick's Landing]]. The daughter of the [[Lord Commander|Iyan ir'Talan]], Iyanna is idealistic and honorable. She fights for the
good of the common people. If the adventurers need
an honest ally in the Watch, Iyanna is perhaps their
best hope. Despite her father's best efforts to keep her
from getting entangled in the criminal underworld,
her actions have won her no friends among [[Sharn]]'s
crime lords, and her life could be in danger despite
her parentage. 
A [[Darguun]] mercenary troop known as the Ja'khor (a [[goblin|goblinoid]] word translating to “Blackbloods”) uses the [[Bloodstone Inn]] in [[Malleon's Gate]] as a base of operations. The [[hobgoblin]] war leader, Margaash, is not a merchant, and he generally relies on House [[Deneith]] to negotiate contracts on his behalf. However, for the right price, he may be willing to provide information or even a [[goblin]] guide to help a party traveling to [[Darguun]]. Margaash only respects strength; fighters get better results than [[wizard]]s.
Jabra the [[night hag]] is an [[alchemist]] of exceptional skill.
She bottles stolen dreams and nightmares, and sells
unique potions with remarkable powers. She peddles her
goods from an eye-catching tent of red dragonhide, and
when she's not in the [[Immeasurable Market]] of [[Syrania]], she can often be found
selling her goods in [[Graywall]].
Charismatic and willful, the [[duergar]] [[Akiak]] leader
known as Jade-Lin has proven to be an effective military
leader—and a significant problem for the [[Riedrans]]. She
has become an almost legendary figure among the Akiak
commoners, who view her as a savior of the people. Jade-Lin has led several recent guerrilla raids into the [[Paqaa Mountains]], defeating the [[Riedra]]n border garrisons and freeing captive Akiak working in mining facilities or
occupied clanhomes. She has also managed to target and
destroy at least one [[monolith|hanbalani alta]].

Jade-Lin deliberately keeps her identity, intentions,
and personal history shrouded in mystery. Actively
hunted by [[Riedra]]n death squads, she must constantly stay
on the move. The Akiak commander travels with a small
group of able comrades, and when she settles down for a
short time, she is surrounded by loyal Akiak dwarves.

On occasion, Jade-Lin does recruit mercenaries for
specific missions, using trusted lieutenant and go-betweens
for added security. She pays extremely well for these dangerous assignments, and it's rumored she has access to much of
the old [[Akiak]] wealth, through private sponsors and personal
stockpiles. Outsiders who work for Jade-Lin are wise to be
careful, for the Akiak leader isn't above sacrificing mercenaries for the good of her people. 
King Jarot ir'Wynarn was the last ruler of united [[Galifar]]. He died on [[12 Therendor 894 YK|Khorvaire calendar]], sparking a succession crisis that led to the [[Last War]].

During his life, Jarot began the public works project that led to the network of [[lightning rail]]s connecting all of central [[Khorvaire]].
Jathara Bay lies off the coast of [[Syrkarn]] and [[Adar]] in [[Sarlona]]. It is part of the [[Sea of Lost Souls]], and is fed by the [[Jathara Sound]].
The [[Jathara Sound]] forms a natural boundary between [[Syrkarn]] and [[Adar]]. It is fed by many small rivers in Adar and flows into the [[Jathara Bay]]. The wide area near [[Ghoza]] is known as "Kasshta's Belly".

[[Riedra]] maintains a number of fortresses along
the Sound which serve as focal points for [[Inspired]]
operations within [[Adar]]. 
Javan Tomollan ([[human]] councilor for [[Upper Central]]), a shrewd man and a tough bargainer, earned his fortune representing House [[Lyrandar]] making trade arrangements, although he has since parted ways with the house. He is a fair man and believes that hard work and dedication to a task should be rewarded. However, his greatest concern is protecting the interest of the people of [[Upper Central]]; the problems of the poor of [[Lower Dura]] hold little interest for him.

Javan remains one of [[Sharn]]'s wealthiest citizens, and
the [[Aurum]] actively seeks to recruit him for their
Platinum Concord—so far, unsuccessfully. 
This javelin is a magic weapon. When you hurl it and speak its command word, it transforms into a bolt of lightning, forming a line 5 feet wide that extends out from you to a target within 120 feet. Each creature in the line excluding you is electrocuted. The lightning bolt turns back into a javelin when it reaches the target. 
//This tall, thin woman has sharp [[Karrn|Karrnath]] features, red hair, and surprisingly blue eyes emphasized by her pale, soft skin. She wears a hunting outfit of black and purple silk, with loose pants tucked into boots of black leather. She moves with unconscious grace, and her voice is low, musical, and almost hypnotic.//

Lady Jesel Tarra'az is a spy for the Order of the
[[Emerald Claw]]. Raised and trained at the [[Crimson Monastery]], she is a deadly [[undead]] warrior. However, she rarely takes an active part in Order operations in
[[Sharn]]. Her role is to provide visiting operatives with
information and equipment; she takes no actions that
could compromise her position in Sharn, even if it
means that a particular operation fails. Jesel has concealed her true nature from the [[Karrnath embassy|Karrnath Embassy (Sharn)]], and does her best to avoid all contact with embassy
staff. She does deal with [[Lan Hazal]] of [[Graystone]],
who provides her with blood, potions, and magic
weapons for visiting agents of the Order. She resides in the [[Gray House]] in [[Upper Tavick's Landing]].

If Jesel is publicly exposed as a [[vampire]], she goes
to any length to take vengeance on those responsible
for her humiliation. She leaves Sharn, but continues
to serve the Order as a soldier and assassin.
The prominent priest of [[Inspiration|Path of Inspiration]] in the trades district
of [[Dar Myan]] is well loved, and she loves right back. Her
unswerving loyalty and dedication have allowed her to
come by and continue to possess a small amount of [[divine magic]]al power. She uses her spells only to aid the folk of
the district, and she is an enemy to any who infiltrate Dar
Myan or harm its people.
The [[line|Aereni noble line]] of Jhaelian governs the region around [[Taer Kalindal]]. Jhaelian has strong spiritual traditions; its members are deeply devoted to the [[Undying Court]] and to contemplating divine mysteries. This line produces many monks, [[cleric]]s, and [[paladin]]s, as well as many members of the [[Deathguard]]—the Aereni institution dedicated to hunting down [[Mabar]]an [[undead]]. Members of this line have a tradition of using [[cosmetic transmutation]] to adopt a desiccated appearance—not unlike that of the [[deathless]] themselves—though other Jhaelian Aereni prefer to wear masks.
//Jhazaal Dhakaan called the six kings together, and none could resist her summons. She brought them to a field soaked with blood and strewn with blunted blades. Jhazaal Dhakaan sang the song of the dar, reminding the kings that they were all one people. She sang the song of muut, of the duty all dar share. She sang the song of atcha, of the glory awaiting the people, of the heroes of the past and of those yet to come. With her words, she wove a dream, and she gave that dream to the six kings and to all who followed them. It was with this song that the Empire of [[Dhakaan]] was born, and it is this dream that guides us still.//
<div align="right">—[[Kech Dhakaan|Heirs of Dhakaan]] legend</div>

Jhazaal Dhakaan was the greatest [[dirge singer]] [[bard]] in history, and was the founder and first emperor of the Empire of [[Dhakaan]]. According to tales, she could win a heart with a word, and sunder an army with a scream. 

Approximately 16,000 years ago, Jhazaal bound the [[goblinoid]]s of her time together through an act of epic bardic magic: using the legendary horn [[Ghaal'duur]] which she herself crafted, she built the dream of the empire, the [[Uul Dhakaan]]. This united the ancient goblins under a common purpose, and they crowned Jhazaal Dhakaan the first //marhu//, or emperor, of [[Dhakaan]]. Over the next 10,000 years, the empire would expand to dominate all of central [[Khorvaire]].

A large section of the harbor ward of the [[Riedra]]n bastion city of [[Dar Jin]] has been transformed into a foreign quarter, called the Jhodra. [[Riedrans]] refer to
it as "tainted land" outside the hearing of foreigners. Most Riedrans are forbidden to enter the Jhodra; those who work and live in the area are carefully trained to
deal with foreigners. Likewise, there are only two ways
for foreigners to leave the ward—heading back to sea via the [[Harbor of Tranquility]], or
acquiring a transit visa from the [[Iron Gate]]. 

As in most [[Riedra]]n cities, the streets and buildings
beyond the Jhodra are not marked with legible signs. These
signs, however, have been embedded into the [[sentira]]
engravings; by concentrating on the pattern, a traveler
can feel the image as a faint memory in his mind. The
inhabitants of the outer wards avoid foreigners, while
[[Bastion Guard]]s challenge any foreigners found beyond
the Jhodra. 

Much of the Jhodra is devoted to the shipping trade
and is taken up with warehouses, shipyards, and the customs and inspection facilities of the [[Iron Gate]]. There are only a few Riedran businesses that cater to foreigners.
However, the [[Inspired]] have leased property to each of the
[[dragonmarked house]]s. As such, adventurers who want a
familiar meal can dine at House [[Ghallanda]]'s [[Gold Dragon Inn]]. The Jhodra also contains a number of embassies. To date, [[Aundair]], [[Breland]], [[Karrnath]], the [[Mror Holds]], [[Q'barra]], and [[Zilargo]] have established consulates in [[Dar
Jin]]. The [[Inspired]] have not yet extended an invitation
to the [[elves|elf]] of [[Aerenal]] or [[Valenar]]. The [[Thousand Eyes]]
keeps a very sharp watch on these embassies. As a result,
the ambassadors might turn to unfamiliar faces—such as
adventurers—if they need to engage in subterfuge. 

Although violence is rare, the [[Inspired]] maintain a
strong military presence along the docks. Hundreds of
[[Bastion Guard]]s patrol the Jhodra, along with dozens of
[[Thousand Eyes]] guardians and a handful of [[masquer]]s.
Fifty [[Taskaan|Taskaan Legion]] [[shifter]]s are kept on alert, ready to respond
to any report of violence. Ten [[Horned Guard]]s are also
assigned to the Jhodra, with six on duty at any given
time. Four of these [[oni]] observe from the air, using invisibility to hide from the eyes of criminals. The other two wander the streets, providing an imposing
visual deterrent.

It is worth noting that the Jhodra has an unusually
high concentration of powerful [[Chosen]] ([[creature tier]] 3). The [[Inspired]] are rightfully afraid of foreign espionage in the Jhodra and have devoted considerable
resources to the district. 

!! Features of the District

The Jhodra is separated from the rest of the Harbor Ward by hhigh walls; the only exit
is a massive iron-bound gate. Anyone who wants to leave
must obtain the approval of the aptly named [[Iron Gate]].
These diplomats process all requests for information
and transit visas, in addition to negotiating with ambassadors and influential merchants. Every two weeks the Gate hosts a meal for influential foreigners; this is a good
opportunity to meet the local ambassadors and [[dragonmarked|dragonmarked house]] barons. The gatekeeper of the Jhodra is Lord [[Helkadesh]].

* The [[Harbor of Tranquility]]
* the [[Healing Hand]]
* [[gardens of reflection]]
* The [[Mercantile Center]]
* The [[Song of Skin]]
* The [[Tower of Eyes]]

!! Dragonmarked Houses

[[Dragonmarked house|dragonmarked house]]s have almost no power in [[Riedra]].
The [[Inspired]] don't rely on house services, so they've made
few concessions to the barons. Further, the resources of
the houses are half a world away. The houses operate
under restrictions inside the port city of Dar Jin, and
they have no operations outside that city.

House [[Cannith]] cannot create or sell arms, armor,
or magic items of the [[conjuration]], [[enchantment]], [[evocation]], or [[necromancy]] schools. Baron Sien Vown d'Cannith represents
Cannith West in [[Dar Jin]], but adventurers are more likely
to deal with forge master and [[magewright]] Killian "Blacklion" d'Cannith, a jovial and eccentric man who demanded the Sarlonan post.

House [[Deneith]] is permitted to maintain a force
of only fifty soldiers. It has been warned of dire consequences should these troops cause trouble in the city.

House [[Jorasco]] is not permitted to raise the dead, and
the Jorasco [[enclave]] does not have an [[altar of resurrection]]. The baron of the enclave is Dorial d'Jorasco, a devout worshipper of the [[Sovereign Host]] who requested the post in the hopes of serving his faith.

House [[Kundarak]] has no outlets for its extradimensional vault network in Dar Jin. It would be all too easy to adapt this enterprise to smuggling.

House [[Lyrandar]] has not been allowed to construct
a docking tower, and [[airship]]s that cross the borders of
[[Riedra]] might come under attack. Lyrandar scions have
been warned not to interfere with the weather.

House [[Orien]] is forbidden from teleporting anyone into
or out of [[Riedra]], although this edict is difficult to enforce.

House [[Sivis]] has an [[enclave]] in the [[Jhodra]] with three [[speaking stone]]s, but it can take up to three days for a message to reach [[Khorvaire]]. Swifter communication can be purchased from Master Speaker Tesser Torralyn d'Sivis, who can use [[sending]]
twice per day at a cost of 25c per use. The [[Thousand Eyes]] keeps an especially close watch on the Sivis enclave. The [[gnome]]s fight to preserve the security of their communications, and they consider this war of espionage and counterintelligence to be a wonderful challenge.

Although no official restrictions are placed on
House [[Phiarlan]] and House [[Thuranni]]—since they theoretically only trade in entertainment—the [[Thousand Eyes]]
keeps a close watch on these enclaves, and the elves know
it. The houses of shadow are gathering information,
but they're keeping a low profile, accepting no tasks that
could jeopardize their standing in [[Dar Jin]].

The house [[enclave]]s are small, and they're not as
commercially oriented as those found in the major cities
in [[Khorvaire]]. They cater primarily to foreigners. This
situation is useful for the [[Inspired]]; the presence of [[Ghallanda]] hostels means that no [[Riedrans]] have to provide
hospitality for outlanders within Dar Jin. More important, the enclaves serve as embassies for their houses. As
the houses begin to define their role in [[Riedra]], strategic
alliances become ever more important.

The possibility lingers that the [[Inspired]] opened
[[Dar Jin]] as a trap, bringing foreign ambassadors and
dragonmarked scions into a controlled environment
where they can be subverted to the Riedran cause.
Regardless, the longer the Inspired observe the dignitaries, the more effective any future substitution or subversion will be. 
Jhoraash is a [[golin’dar|goblin]] artillerist [[artificer]]. While exiled from the [[Kech Hashraac]] for his reckless experiments, he is devoted to his
clan and [[Dhakaan|Heirs of Dhakaan]]. He’s determined to create a weapon so
wondrous the Hashraac will take him back. He always has a
dangerous device to test, and could prove a serious threat to
adventurers without even meaning to.
The Jhorash'tar are an alliance of [[orc]] tribes that have dwelt in
the [[Ironroot Mountains]] since before the arrival of the [[dwarves|dwarf]].
The Jhorash'tar have no written records, but their tales suggest
they once held most of the Ironroots, and that many of their
tribes were annihilated in the early days of the [[Exile|Mror History]]. However,
others suggest that the orcs might have been eradicated by the civilization that built [[Sol Udar|Realm Below]]. Indeed, the existence of the //Face of Mror//—a mountain sculpted to resemble a dwarf king, a feat of engineering far beyond the capabilities of the modern Mror—implies the dwarves of Sol Udar were active on the surface of
the mountains at some point. Whatever the truth, by the time
of the rise of [[Galifar]], the bulk of the Jhorash'tar had been pushed to the
southwestern regions of the [[Ironroot Mountains]], where they
continued to clash with Clan [[Droranath]] and Clan [[Noldrun|Noldrunhold]].

The Jhorash'tar orcs have a distinct culture, with nothing in
common with the [[Ghaash'kala]] orcs of the [[Demon Wastes]] or
the [[Gatekeepers]] of the [[Shadow Marches]]. There are at least six distinct tribes, each split into smaller bands; the DM can add details to a particular tribe to suit the story. Some dwell on the surface of the mountains—often in caves along canyon walls—while others dwell underground, in the same layer the dwarves mined for centuries before breaking through into [[Sol Udar|Realm Below]]. The Jhorash'tar have never formed large communities, and usually split when a band has a hundred or more adult members, or
whenever a ''bonecaster''—their spiritual leader—advises it.

The primary spiritual tradition of the Jhorash'tar is called
the ''Path of Bones''. Bonecasters are their priests and diviners.
They can speak with the dead and temporarily conjure spirits
to produce magical effects, but traditionally they don't create
lasting [[undead]]. A player character following this path might
be a [[cleric]] with the Grave domain, though the typical bonecaster doesn't have access
to all the spells and features of a cleric. Bonesworn are elite
champions strengthened by spirits; a player character following
this path could be an Ancestral Guardian or Zealot barbarian. The Jhorash'tar believe
that the ghosts of the fallen linger, and continue to guide the
living through whispers and dreams. Tribes often decorate the
entrances of their dwellings with the bones of their own fallen
warriors, believing that the spirits of the fallen protect them.

The Jhorash'tar don't work metal, though some are willing
to use metal weapons and armor acquired from the [[Mror|Mror Holds]].
Bonecaster rituals allow them to shape and harden bone, and
they often incorporate bones in weapons and armor. While they
often use the bones of large creatures, it's also common for one
of the bonesworn to carry a weapon or token that incorporates
an ancestor's bone. The Jhorash'tar also work with other natural
materials, including wood and stone. They have no equivalent to
heavy armor, but can combine bone and leather to create armor
that offers similar protection to a breastplate or scale mail.

Many of the Jhorash'tar tribes wish for peace with the [[dwarves|dwarf]], and are working with the [[Frosthaven clans|Toldorath and Tordannon]] to reach an understanding. For the most part, these tribes don't want to live
alongside Mror in their cities, but wish for their own recognized
lands, and want the right to gather the bones of other [[orc]]s
from across the holds. However, there are also tribes hungry
for vengeance, driven by the cries of their fallen. Such tribes
continue to engage in guerilla war and to spread terror however
they can. As far as the Mror know, the orcs have had no contact
with the [[Realm Below]] or the forces of [[Dyrrn]]—but it's possible
that a tribe has been touched by the Corruptor, and could
emerge with unusual powers or even allied with [[aberration]]s.

It's up to the DM whether the Jhorash'tar were involved in
the destruction of [[Noldrunhold]]. Whatever the truth, Jhorash'tar
tribes live safely in Noldrun territory, though they shun its cities.
In the [[Webs]] of [[Zarash'ak]], a [[goblin]] named Jhugaar preaches
raving sermons promising the rise of the [[overlord]]
known as the [[Voice in the Darkness|Tul Oreshka]]. If true, this
prophecy could draw the [[Lords of Dust]] to Zarash’ak
(though, of course, it could be madness).
In order to attune to this magic item, you must possess the [[Mark of Healing]].

While you wear this pendant, you automatically stabilize whenever you are dying. In addition, whenever you use your [[dragonmark]] to heal yourself, you heal twice as fast.
''Leader:'' [[Ulara d'Jorasco]]<br/>
''Headquarters:'' [[Vedkyar Enclave]] ([[Vedykar]], [[Karrnath]])<br/>
''Dragonmark:'' [[Mark of Healing]]

//What's the price of a life? Well, I've got a rate sheet right over here. I'd be happy to discuss it.//

<div align="right">—Bessi d'Jorasco, [[Fairhaven]] healer </div>

The Healer's Guild provides a vital service to [[Khorvaire]], and the [[Last War]] ensured there was great need for healers. The leader of the guild, Baron [[Ulara d'Jorasco]], is much beloved in northwestern Khorvaire for
her instrumental role in combating an epidemic in that
region a decade ago, and Jorasco medics served in every
nation's army during the war.

The guild runs schools that teach medicine, as well as
houses of healing that provide both mundane and magical services. If it could save a life, it's probably marked by the House Jorasco [[griffon]] emblem, and it will come
with a cost. If you have the gold, Jorasco healers can
remove a disease instantly with [[restoration]]. If you
can't afford such a service, they will treat you with mundane techniques. House Jorasco is also the source of [[potions of healing|potion of healing]]. While many criticize Jorasco's demands for payment, the house maintains that it's not about
greed; it's about ensuring the prosperity of the house, so
they can continue to help future generations.

While the public face of Jorasco is that of the healer, there are rumors that the house engaged in disturbing experiments during the [[Last War]], working with House [[Vadalis]] to develop biological weapons and new creatures. A Jorasco heir has to decide if they want to investigate these rumors. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
Ambassador Jorasesh is an [[Inspired]] who leads the [[Riedra]]n [[embassy|Riedra Embassy (Sharn)]] in [[Sharn]]. He spends most of his time in negotiations, discussing trade, the reconstruction of [[Khorvaire]], and the exploration of [[Xen'drik]]. However, he
is a philosopher and historian, and when he is not at
the embassy or attending a gala event, he often visits
[[Morgrave University]]. Jorasesh is slowly developing a
following at the University; he is brilliant and charismatic, and students and sages alike are intrigued
by the handsome Inspired lord.

Jorasesh and his entourage (including his bodyguard [[Maleshari]] and right-hand-woman [[Helkashtai]]) have no direct attachment to the [[Dreaming Dark]], and Jorasesh
knows nothing about the shadow agents the Dark
has placed throughout the city. However, Jorasesh
is required to obey the commands of any Inspired
member of the Dreaming Dark who comes to [[Sharn]],
and these agents often stay at the embassy under
some form of diplomatic cover. 
The daughter of [[Starrin d'Cannith]]’s second wife, Elsabet, Jorlanna takes a diplomatic
approach to the struggle for control of House [[Cannith]].
[[Merrix|Merrix d'Cannith]] promises new creations; Jorlanna promises
better relations with the [[Five Nations]] and the other
[[dragonmarked house]]s. Her detractors say those
better relations are exactly the problem. In her youth,
Jorlanna fell in love with an heir of House [[Deneith]]
and might have borne a child. (Marriage and interbreeding between members of different houses has been forbidden since after the [[War of the Mark]], due to a belief it results in children with [[aberrant dragonmark]]s.)
Many scorn her for that romance, and find her too
accommodating of the other houses.
Most of the citizens of the "Kingdom of [[New Galifar]]" in [[Q'barra]] consider the people of the western lands to be corrupt warmongers. Q’barra
participated in the [[Treaty of Thronehold]], but it has
little interest in trade with [[Breland]]; the Q’barrans
primarily deal with the [[Mror Holds]], the [[Lhazaar|Lhazaar Principalities]]
Princes, and the [[Inspired]] lords of [[Riedra]]. As a result,
Q’barra does not maintain an official embassy or
consulate in [[Sharn]]. Unofficially, Q’barra’s interests
are represented by Joseth ir’Kalain.

Joseth is a clever negotiator and shrewd
judge of human nature, but he is an honorable man
who believes in the ideals of the old kingdom of [[Galifar]]. He
lacks the resources of an embassy, but Joseth is a
possible patron for a group of adventurers. While
he lives modestly in [[Ambassador Towers]], Joseth owns a [[dragonshard]] mine
in Q'barra, and can draw considerable funds from
the [[Kundarak Bank|Kundarak Bank of Sharn]]. The first Q’barrans fled east to
escape the [[Last War]], and Joseth may need to recover
family heirlooms, information, or other treasures
lost during this exodus. Joseth does not trust the
people of [[Sharn]], and he is far more likely to recruit
his own agents; if a party contains a character from
Q’barra, all the better. 
Warforged juggernauts are imposing war machines built for close combat and raw might. They tower over their comrades; juggernaut warforged stand between
6 and 7 feet in height and can weigh up to 450 pounds. 
The {{!!title}}, a band of bloodthirsty brigands, hide within the [[King's Forest]]. The band is variously estimated to have anywhere from a dozen men to as many as a hundred brigands and a mock court of beggars, harlots, and other hangers-on. A half-orc outlaw known as Tree Viper leads the gang. 

The band periodically raids the thorps, villages, and plantations that line the edge of the King's Forest, and sometimes it ambushes caravans and travelers as they move through the forest. The [[Knight Rangers|King's Shields]] have tangled with the Jungle Boys on more than one occasion, but they haven't been able to capture their leader or put an end to their marauding.
Most of [[Shavarath]]'s [[celestial]]s serve the Legion of [[Justice]], which
embodies the concept of war fought for a just cause. Cohorts
and their component centuries represent specific concepts
within that broad ideal. The Century of Mercy shows kindness
to fallen foes, while the Century of the Innocent Guard
protects civilians—even if they're just [[manifestation]]s, the //idea// of
civilians—and avoids collateral damage. [[Angel|angel]]s won't conscript
adventurers, but also won't leave their duties to help them.

Justice's Century of the Sun asserts that Justice Command is the [[Sovereign|Sovereign Host]] [[Dol Arrah]] herself.
Where the [[Crimson River]] marks the frontier
between the [[dragonborn clanhold]]s in the southern
jungles and the [[Basira Swamp]], Ka’rhashan stands as
the largest [[dragonborn]] community in [[Khorvaire]]. The
settlement surrounds a plaza set with brass towers
and buildings of volcanic glass and stone—ruins from
the [[Age of Demons]].

Outsiders, including [[lizardfolk]] and [[kobold]]s, can
freely enter Ka’rhashan. However, creatures not of
reptilian or draconic descent must hire [[dragonborn]]
minders or risk running afoul of unfriendly natives.
Entering holy areas is strictly forbidden, and characters who do (most often in search of treasure) end up on the wrong side of the dragonborn’s severe justice.

The [[dragonborn]] clans of [[Q'barra]] fight a ritual war every five years to determine control of Ka’rhashan. Elders of the winning clan administer the town and its limited but exotic trade, and extend their influence across all the other clans. The Flamebrow clan currently rules Ka’rhashan, as it has for almost a century, led by High Elder [[Bhisma Na'kala Flamebrow]].
Kaius I was the governor-prince (and later, king) of [[Karrnath]] when King [[Jarot ir'Wynarn]] of [[Galifar]] died in 894 YK. He joined with his siblings, the rulers of [[Breland]] and [[Thrane]], in their rejection of the succession of Princess [[Mishann ir'Wynarn]] of [[Cyre]], thus sparking what would become the [[Last War]].

Kaius I was also responsible for embracing the [[Blood of Vol]] as [[Karrnath]]'s state religion, and establishing the Order of the [[Emerald Claw]] in 896 YK.

His son, [[Kaius II|Kaius ir'Wynarn II]], ascended to the throne after the mysterious and sudden death of Kaius I. But few know the terrible truth: Kaius I was transformed into a [[vampire]] against his will by a high-ranking member of the [[Emerald Claw]]. Kaius I faked his death and disappeared from the public eye, spending eighty years in hiding, practicing control over his sinister urges and developing techniques for hiding his true nature. Now, he has reclaimed his place has king of [[Karrnath]], assuming the identity of [[Kaius III|Kaius ir'Wynarn III]].   
In 991 YK, Kaius III came of age, taking his place as the rightful ruler of [[Karrnath]] and succeeding the regent, his aunt Lady [[Moranna]]. Although he is famous for his part in initiating the [[Treaty of Thronehold]] which ended the [[Last War]], for ending the [[Blood of Vol]]'s status as official religion of Karrnath, and for efforts at rebuilding his land, few know much about him personally. He grants few private audiences and rarely makes public appearances; he seems content to let his wife, Queen [[Etrigani]], and his chief advisor, Lady Moranna, attend to the daily tasks of governing the land.

Tall and thin, with striking eyes and a sharp mind, Kaius III cuts an impressive figure, the spitting image of his great-grandfather [[Kaius I|Kaius ir'Wynarn I]]. What few know about Kaius III is that he bears a terrible secret: The reason he looks so much like his ancestor is because he is the same person. Kaius is a [[vampire]] and has been one for nearly eighty years. Only his wife, his chief advisor, and the [[Minister of the Dead|Vedim ir'Omik]] know the truth about his nature. 

With power once again in hand, he has done his best to undo what he sees as mistakes, ousting the [[Blood of Vol]] and restoring peace to the [[Five Nations]]. Despite the passage of years, he still seeks his original goal of a reunited [[Galifar]], with himself as king.

The real Kaius III, the king's great-grandson, still lives, held in the deepest reaches of the prison of [[Dreadhold]].

!! Challenge from Drago Thul

After his ascension to the throne, the warlord [[Drago Thul]] began proclaiming that Kaius was in fact a vampire, having no idea just how accurate his accusation was. This was a serious accusation; the [[undead]] have no rights under the Code of Galifar and cannot inherit titles or lands. Thul's challenge spread like wildfire, only to be crushed when Kaius III met the warlords under the midday sun and cut his palm to show his freely flowing blood. Drago Thul fled to [[Stormreach]] after the [[Last War]].
A new and formidable threat to the [[Tashana|Tashana Tundra]], the savage
[[human]] barbarians of the Kalaak swarmed from the area
of the [[Eska Mountains]] and laid waste to everything in
their path. Undiscriminating in their wanton destruction, the raids target [[shifter]], [[human]], and [[dwarf]] alike. The few survivors of these raids
describe returning to camps that are not just pillaged,
but utterly savaged and desecrated, with dark references
to torture and cannibalism. Some captives are cruelly
injured and released; those who can still speak tell of self-mutilating barbarians using hooks and knives to sculpt
their own flesh into nightmare visages.

The Kalaak are relentless in their insane killing.
Entire herds of caribou are found slaughtered and mutilated, left to rot on the taiga. This terrible waste goes
against the very nature of the Tashanan people, especially
the [[shifter tribes|Culture of the Tashana shifters]]. Recently, the [[Saartuk]] and [[Qiku]] tribes have organized scouts and sentries as the Kalaak raids
travel farther south into the heart of the Tashana. But it
is the northern [[Chuniigi]] who have borne the brunt of the
Kalaak aggression. Desperate, the Chuniigi have in turn
begun raiding [[Dorann|Dorann Holds]] [[dwarf]] clanholds and even other
southern tribes, bringing a dangerous instability to the
natural order of the Tundra.

One of the fearsome war chiefs of the Kalaak is [[Kunigaal]] the Desecrator.

''Getting PCs Involved:'' The Kalaak raiders represent
a grave threat to the order and balance of the Tundra, and a good opportunity to present truly terrifying villain for PCs. The PCs might need to cross the vast wilds
of the Tundra to reach a particular destination. Perhaps
they have been hired by [[Khorvairian|Khorvaire]] agents to find and
contact a remote [[shifter]] tribe in order to barter for the
Tashanan goods so valued in certain circles of Khorvaire. Simply making the journey is hazardous enough, but upon arrival, the PCs find the shifters under attack or already destroyed.

Or the PCs might take up the cause of the beleaguered shifter tribes directly. The Sky Tellers are deeply concerned about the presence of the Kalaak in the
Tashana. They might hire or otherwise compel the PCs
to journey to the [[Krertok Peninsula]], where the Kalaak
appear to be based. There the characters find a strange
and terrible relic from the [[Age of Demons]]—a gargantuan statue of an ancient [[overlord]], the physical remains of a [[demon]] long ago dispatched and bound. The
Kalaak worship this ancient evil, whose vague stirrings
of malevolent consciousness power their terrible savagery. Here PCs might uncover the true directors of the Kalaak terror—[[Sarlona]]n [[rakshasa]]s, whose machinations
endeavor to free the [[fiend]]s of ages past. 

!! Kalaak vs Karrak

One may notice that the Kalaak who are influenced by the [[overlord]] of the [[Tashana Tundra]] share an almost identical name to the [[Karrak]]-worshipping [[eneko]], who are influenced by the [[overlord]] of [[Syrkarn]]. The nature of the [[demiplane]]s of [[Khyber]] is such that the prisons of overlords are not confined to one place on the surface. Could the two cults actually serve the same master?
The most powerful [[quori]] are the kalaraqs, also known as eyebinders—entities formed of pure shadow that is outlined by a nimbus of energy. A host of disembodied eyes whirl around a kalaraq, each reflecting a consciousness the creature has consumed.

Kalaraq quori guide the quori race, and the [[Devourer of Dreams]]—the personal emissary of the [[Dreaming Dark]]—is of this order. Although the kalaraqs never fight one another overtly, each has its own agenda, and each hopes to someday seize the throne of the Devourer of Dreams. Because of this internal conflict, it is unusual for a kalaraq to leave [[Dal Quor]] to inhabit a mortal vessel and become one of the [[Inspired]].

Kalaraqs are able to implant psionic [[mind seed]]s in [[humanoid]]s, which over time can turn the host into a thrall under the control of the kalaraq.
//I am kalashtar, born of two worlds. Over a thousand years ago, my ancestor bound her bloodline to the spirit Kashtai, and I am a child of that union. Kashtai moves within me. Her memories come to me in dreams, and at times her voice whispers in the silence of my mind. As long as at least one of my sisters is alive, Kashtai will survive—and as long as she lives, she will fight [[il-Lashtavar]]. //

<div align="right">—Lakashtai, servant of the light</div>

The kalashtar are a compound people, created from the
union of humanity and renegade spirits from the [[plane of dreams|Dal Quor]]—spirits called [[quori]]. Kalashtar are often seen as wise, spiritual people with great compassion
for others. There is an unmistakable alien quality to the
kalashtar, though, as they are haunted by the conflicts of
their otherworldly spirits. 

!! Bound to Spirits

Every kalashtar has a connection to a spirit of light, a
bond shared by other members of their bloodline. Kalashtar appear [[human]], but their spiritual connection affects them in a variety of ways. Kalashtar have symmetrical, slightly angular features, and their eyes often glow
when they are focused or expressing strong emotions.

Kalashtar can't directly communicate with their [[quori]]
spirits. Rather, they might experience this relationship
as a sense of instinct and inspiration, drawing on the
memories of the spirit when they dream. This connection grants kalashtar minor [[psionic|psionics]] abilities, as well
as protection from psychic attacks. All of these quori
dream-spirits are virtuous, but some are warriors and
others are more contemplative. Work together with the
DM to determine the nature of your linked spirit. Typically, a kalashtar knows the name and nature of their
spirit, but some may know nothing of their spirit or the
source of their psychic gifts, such as an orphan kalashtar
raised among strangers. 

The bond to the spirit can cause some kalashtar to
display unusual quirks. Consider rolling or selecting a
trait from the table below.

| !<<dr d10>> |!Quirk |
| 1 |You try to understand the motives and feelings of your enemies. |
| 2 |You prefer using telepathy over speaking aloud. |
| 3 |You feel a strong drive to protect the innocent. |
| 4 |You apply dream logic to mundane situations. |
| 5 |You discuss things out loud with your quori spirit. |
| 6 |You suppress your emotions and rely on logic. |
| 7 |You are strongly influenced by the emotions of those around you. |
| 8 |You prefer to find nonviolent solutions to problems whenever possible. |
| 9 |You are driven by a warrior spirit and will fight for any noble cause. |
| 10 |You are obsessed with [[Dreaming Dark]] conspiracies. |

!! Hunted by Nightmares

The virtuous spirits tied to the kalashtar fled from the
dream-realm of [[Dal Quor]] to escape evil spirits that dominate it. The rebel [[quori]] believe that through meditation
and devotion, they can change the fundamental nature
of Dal Quor, shifting the balance from darkness to light.
Most kalashtar communities focus on acts of devotion
known as the [[Path of Light]]. But the dark powers of Dal
Quor have their own plans for [[Eberron]]. Through the
force known as the [[Dreaming Dark]], these monsters
manipulate the folk of [[Khorvaire]] to eliminate kalashtar
whenever possible.

Many kalashtar defend themselves from the Dreaming Dark by focusing on devotion to the Path of Light.
Others, though, seek out the agents of the Dreaming
Dark and oppose their plans, or protect the innocent
however they can. Still other kalashtar grow up isolated,
knowing nothing about Dal Quor or the Dreaming Dark.
Such orphans might use their abilities for personal gain
or otherwise act against the virtuous instincts of their
quori spirits; this can cause internal conflicts and violent
mood swings. 

!! Kalashtar Names

A kalashtar name adds a personal prefix to the name of
the quori spirit within the kalashtar. Such names have
no relation to the kalashtar's gender.

Kalashtar orphans are unlikely to know the name of
their spirit and take names from another source.

//''Quori Names:''// Ashana, Ashtai, Ishara, Hareth, Khad, Kosh, Melk, Nari, Tana, Tari, Tash, Ulad, Vakri, Vash

//''Kalashtar Names:''// Coratash, Dalavash, Dolishara, Halakosh, Khoratari, Koratana, Lanhareth, Molavakri,
Nevitash, Sorashana, Torashtai, Valakhad, Vishara
Lord Kaltaresh, Keeper of Seals, is a [[du'ulora]] [[Inspired]] and the supreme commander of the [[Edgewalkers]] of [[Riedra]]. He guides the Edgewalkers from the division headquarters in the bastion of [[Dar Mun]].

Kaltaresh (in a long-dead vessel) organized the soldiers who opposed the [[Nulakesh]] incursion in 390 Unity (88 YK). Thus, among the Edgewalkers, he is known as "the First."

The Keeper of Seals is especially powerful and cunning for a
[[du'ulora]]. Two thousand years ago, he was one of the commanders in the battle against the [[quori]] who eventually became the [[kalashtar]], and he learned much of
the [[plane]]s during this hunt. He hates the kalashtar and
believes that the followers of the [[Path of Light]] must be
destroyed. However, Kalataresh is one of the few [[quori]]
of the age who is not cruel by nature. He does what he must
to protect his people, but he does not savor violence. He is truly concerned with
the stability of [[Eberron]] and disturbed by the [[Mourning]],
believing the fate of the quori to be linked to Eberron.

For now Kaltaresh follows the guidance of the [[Dreaming Dark]], but he could ally with Lady [[Sharadhuna]] if she opposes the [[Devourer of Dreams]].
The //Kapaa'vola//, or "Treacherous Whisper", was the psychic contagion that destroyed the ancient [[goblinoid]] empire of [[Dhakaan]].

!! End of an Empire

The golden age of [[Dhakaan]] lasted over five millennia, with
[[goblin]]s ruling over the lands that would later be claimed by
[[Galifar]]. As the legend suggests, this prosperous era ended with
the [[Xoriat]] incursion, when the [[daelkyr]] led armies of [[aberration]]s
into [[Khorvaire]]. The daelkyr destroyed Dhakaani cities and
transformed [[goblinoid]]s into aberrations, such as [[dolgaunt]]s and
[[dolgrim]]s. After a long and bitter struggle, Dhakaani champions
turned the tide. The [[orc]] [[Gatekeeper|Gatekeepers]] [[druid]]s bound the daelkyr in
[[Khyber]], but it was Dhakaani warriors who scattered their armies
and hunted down the beasts that survived. 

But as legend tells,
the [[daelkyr]] achieved victory even in defeat. [[Dyrrn]] the Corruptor
created a psychic contagion that severed [[goblinoid]]s from the [[Uul Dhakaan]], and further encouraged chaotic behavior and irrational
beliefs. Leaders among the [[duur'kala|dirge singer]] identified the threat but couldn't
find a way to stop it; isolation was the only answer. Determined
to preserve their culture, Dhakaani forces sealed themselves
in subterranean fortresses, vowing to return only after the
''Kapaa'vola''—the Treacherous Whisper—had faded. These armies
called themselves the [[Kech Dhakaan|Heirs of Dhakaan]], Keepers of the Empire—a term still used today to encompass all Dhakaani clans.

On the surface, the remnants of the empire fragmented
and collapsed. As far as the Kech Dhakaan are concerned,
the history of the Empire of [[Dhakaan]] came to an end the
moment [[Dyrrn]] the Corruptor unleashed the Kapaa'vola.
But in truth, the empire lingered for centuries after the
Keepers left; the wider world doesn't even know the term
Kapaa'vola, and history books consider the fall of Dhakaan
to be a long and ugly affair. Dyrrn's curse caused paranoia
and wild beliefs to flourish, further driving the survivors apart. The discipline and knowledge of Dhakaan were lost,
and the traditions of the daashor—[[artificer]]s of Dhakaan—
and the dirge singers were forgotten. New religions and cults
emerged. Some tribes embraced the [[Dark Six]], while others
revered a wider pantheon. Under [[Dhakaan]], the [[goblinoid]]
subspecies were united; in the wake of the Kapaa'vola, the
strong dominated the weak. Some tribes developed unusual
and complex traditions, while others were cruel and feral.
When [[human]] explorers found these warring tribes living in
the ruins of grand cities, many assumed that the goblinoids
had claimed the remnants of a human civilization they
destroyed.
Karr'Aashta runs a small agency whose members can find out anything a client wants to know—for a price. Karr'Aashta has
a reputation for taking on cases that the other [[Tharashk]] [[inquisitive]]s won't touch, and he specializes in
jobs dealing with the [[Cogs]]. However, ‘Aashta has a
secret—he is a follower of the Dragon Below. The [[Cults of the Dragon Below]] are a factious bunch, and often fight one another. As a result, ‘Aashta's allegiance
could help conceal the activities of a cult or lead them
to the adventurers—or he could provide the adventurers with information they need to locate a cult and upset its plans, to serve the ends of his own sect. 
Karrak, the Final Guardian, is a mysterious deity worshiped by some [[eneko]] cults in [[Syrkarn]]. These cults can be found anywhere eneko are found in [[Sarlona]], but they camp in high concentrations around the ruined [[yuan-ti]] city of [[Sustrai Mor]], where some say an [[overlord]] from the [[Age of Demons]] is bound.

Karrak is thought to be an aspect of the [[Keeper]] by some scholars, and worship of this deity may have its origins in the [[Rushemé|Sovereign Host]] faith of the [[ancient titans|Age of Giants]] of [[Xen'drik]]. However, some claim the Karrak-worshippers are channeling ancient [[fiend]]ish powers and practicing dark magic.

!! Kalaak vs Karrak

One may notice that the [[Kalaak]] who are influenced by the [[overlord]] of the [[Tashana Tundra]] share an almost identical name to the Karrak-worshipping [[eneko]], who are influenced by the [[overlord]] of [[Syrkarn]]. The nature of the [[demiplane]]s of [[Khyber]] is such that the prisons of overlords are not confined to one place on the surface. Could the two cults actually serve the same master?
The sprawling city of Karrlakton, the second largest city in [[Karrnath]] (population: 300,000), is the birthplace of kings (both [[Karrn the Conqueror]] and [[Galifar I|Galifar ir'Wynarn]] were born
here) and is the center of power for House [[Deneith]]. The
house's headquarters, [[Sentinel Tower]], dominates the
city's skyline. Surrounding
the tower are training grounds, barracks, and smithies
to accommodate all of House Deneith's needs. Sentinel
Tower serves as the headquarters of the famed [[Sentinel Marshals]], though most of them are abroad. 

The turbulent [[Cyre River]] separates this once-bustling port city from the
deathly [[Mournland]]. Karrlakton stands in full view of [[Cyre]]’s clouded devastation. Cyre’s shimmering misty curtain fills the horizon, casting a gloomy pall over Karrlakton’s citizens. The city draws unwanted attention from prophets, doomsayers, and
apocalyptic priests. These ranting oracles proclaim
the impending doom that awaits the world, pointing
across the river to support their dire predictions. 

Since the [[Last War]]’s end,
a significant number of Karrlakton’s citizens have
drifted from the city to find new lives, but the city
struggles on, surviving through the manufacture of
arms and armor and from meager trade by way of
the occasional elemental [[airship]] or other vessel that
braves the river’s frothing waters.
The Karrn Bay lies the coast of [[Karrnath]] and the [[Mror Holds]].
The Karrn River in [[Khorvaire]] flows from the foothills of the [[Ashen Spires]] in [[Karrnath]], past [[Atur]] and [[Korth]], into [[Scions Sound]].
Karrn the Conqueror established the pre-[[Galifar]] nation of [[Karrnath]] about 2000 years ago, defeating the remaining [[goblinoid]] settlements in the area. He then attempted to conquer and unite the other four burgeoning [[human]] kingdoms of [[Khorvaire]], but was unsuccessful.

Other than forming [[Karrnath]], Karrn is also known for writing the [[Analects of War]], for establishing [[Dreadhold]], and possibly even creating the strategy game known as [[Conqueror]].
''Capital:'' [[Korth]]<br/>
''Hallmarks:'' Ale, dairy, glass, livestock, lumber, martial discipline, paper, textiles, [[undead]] 

In a nation of storms and long winters, the grim and
stoic Karrns are accustomed to enduring hardship without complaint.

First and foremost, Karrnath is known for its military
tradition. Strength, strategy, and discipline are the core
values of Karrnath. Karrnath's soldiers might be the
finest in [[Khorvaire]], but they lack the magical support
of [[Aundair]] or [[Thrane]], which evened the odds during
the [[Last War]]. Nonetheless, Karrns are proud of their
martial history, and most are convinced that they would
have eventually won the Last War.

Karrnath suffered a series of severe food shortages
and plagues early in the Last War. As a result, the king
embraced the Blood of Vol as the national religion. The
priests of this faith bolstered Karrnath's forces with [[undead]], developing the [[Odakyr Rites]] for creating tremendously efficient [[animated soldiers|Karrnathi undead]]. The current king, [[Kaius ir'Wynarn III]], broke ties
with the [[Blood of Vol]] and has stopped creating new [[undead]], but Karrnath still has a significant number of skeletons and [[zombie]]s in service. Many Karrns still believe
in the Blood of Vol and approve of the use of undead, but
just as many feel that this practice disgraces Karrnath's
proud military history and that the necromancers might
have been responsible for the famines and plagues. 

The nation's name has not changed since the ancient days
before the founding of the [[Five Nations]], when [[Karrn the Conqueror]] not only established the country that still bears
his name but also tried to conquer and unite all of [[Khorvaire]] under his rule. Centuries later it was another [[Karrn|Karrn ir'Wynarn]],
one of King [[Galifar|Galifar ir'Wynarn]]'s sons, who rededicated the nation to
himself in 32 YK, the same year when the [[Five Nations]] officially adopted the names of Galifar's five eldest children.

!! Interesting Things About {{!!title}}

* [[Rekkenmark Academy]] is the premier military institute in Khorvaire; prior to the Last War, all of [[Galifar]]'s officers trained at Rekkenmark. 
* The [[Sovereign Host]] has regained its place as the dominant religion of Karrnath, but the [[Blood of Vol]] retains a strong following. Communities that practice the faith still use skeletons and zombies as guards or laborers.
* The laws of Karrnath are harsher than those in other treaty nations, approaching a state of martial law. 

!! Karrnathi Characters

Karrns are somber folk and disapprove of extravagance
or excessive shows of emotion. As you develop a Karrnathi character or NPC, consider the following:

* ''Military Service.'' Karrns have a strong tradition of military service, making soldier or sailor appropriate backgrounds for any character. Criminals and charlatans have a difficult time evading the harsh laws of Karrnath. The Martial Adept feat can give a character a strong sense of military experience.
* ''Martial Tradition.'' Karrnathi tradition emphasizes teamwork, focus, and force, and melee warriors prefer heavy armor and weapons. Fighters favor the Champion and Battle Master martial archetypes, and Karrnathi wizards choose the School of Evocation or Necromancy as their arcane tradition.
* ''The Dead.'' Undead soldiers have served in Karrnath's armies for decades. How do you feel about the undead? Are you a follower of the Blood of Vol who considers the undead to be a practical tool? Do you have a relative or friend currently serving? Or do you despise the Blood of Vol and the use of necromancy? 

!! Cities and Sites

Sturdy walls surround Karrnathi communities, and
even the smallest village maintains a capable militia. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

Karrnath has always been a martial nation, and its
people remain vigilant. Early in the war, King [[Kaius I|Kaius ir'Wynarn I]] instituted the [[Code of Kaius]], a strict set of laws and
limits. Karrnath weathered a number of famines during
the war, and this privation led to an ongoing program of
rationing to ensure that the nation is prepared for whatever lies ahead. The war is over, but the Code of Kaius
and the rationing remains in place; the people of Karrnath willingly endure ongoing hardship to ensure that
their future is secure. The populace frowns on excess of
any sort, accepts limits on luxury items, and approves of
swift and harsh punishments for crime.

King Kaius III was one of the architects of the [[Treaty of Thronehold]] and remains committed to peace. However, many of the nation's warlords believe that Karrnath would have won the [[Last War]] and that Kaius denied the Karrnathi people their rightful destiny. Should these warlords gain sufficient support, they could push
for a military coup.

A second destabilizing factor is the tension between
the followers of the [[Blood of Vol]] and the Karrnathi traditionalists. The Seekers assert that the Blood of Vol
saved Karrnath and point to the power of its undead
troops. The traditionalists claim that the dark magic
of the Seekers caused famines and plagues, crippling
Karrnath and forcing it to rely on the undead. The Blood
of Vol could back an uprising in Karrnath, or those who
wish to drive out the Seekers could trigger a civil war. 
The embassy of [[Karrnath]] is a brooding fortress in the midst of [[Ambassador Towers]]. The Karrns are always prepared for the worst, and the embassy is designed to endure a siege. The interior of the embassy is filled with [[glyphs of warding|glyph of warding]],
[[alarm]]s, and [[arcane seal]]s—one wrong step can prove deadly. The embassy contains
its own garrison of twenty elite soldiers, commanded by
Kanarr Talan, all prepared to die in the service of
Karrnath. Riots, thieves, spies—the Karrns are
ready to deal with them all. 

Ambassador Syra ir’Tarrn is a brilliant diplomat, and she is
completely devoted to her nation and her [[king|Kaius ir'Wynarn III]]. She
has no ties to the Order of the [[Emerald Claw]], and
she doesn’t even know about the [[temple|House of Hazal]] of
the [[Blood of Vol]] in [[Graystone]]. Syra deals with the
legitimate diplomatic activities of the embassy, while
Malen Torr, a ruthless spymaster, handles espionage
and shadow work.

Malen Torr is loyal to [[Karrnath]], but he does not
approve of the king’s promotion of peace; Malen
believes that the only way to secure true peace is
to restore [[Galifar]] under Karrn rule. He has made
contact with a number of the warlords of Karrnath
who share his opinions, and in the future he may set
plots in motion to disrupt the peace process and to
weaken [[Breland]] or gain control of new weapons for
Karrnath. Depending on the political and ethical
alignment of a party of adventurers, Malen could be
a valuable patron or a deadly foe.
[[Undead|undead]] soldiers form the elite core of the army of [[Karrnath]]. Fearless and tireless, they are a terrifying sight on the battlefield. With the end of the [[Last War]], most Karrnathi undead have been sealed in vaults below the city of [[Atur]]. However, the Karrnathi army keeps numerous undead in its service, while others have been commandeered by the Order of the [[Emerald Claw]].

The Karrnathi undead are created using a set of magical rituals known as the [[Odakyr Rites]], and bear little resemblance to the people they were in life. They are imbued with what the Rites refer to as "malign intelligence", allowing them to make tactical decisions and operate without direct guidance. These undead are content to stand motionless and silent for days, and can see in perfect darkness. They show no emotion, and certainly no mercy or compassion. Undead soldiers kill any opposing forces—including civilians among those forces—unless given explicit instructions to the contrary.

A Karrnathi undead doesn't have the specific memories of the warrior who donated
his bones. The military specialty of the undead reflects
that of the fallen soldier, so only the bones of a bowman
can produce a skeletal archer. However, the precise
techniques of the skeleton aren't those of the living
soldiers. [[Rekkenmark|Rekkenmark Academy]] doesn't teach the bone dance or
the twin scimitar style common to the skeletal swordsmen. So where, then, do these styles come from?

A Karrnathi undead soldier's name is typically a combination of
name and number (e.g. “Aleph 12”) and the records of the
original identity of the body are hidden in the tomes of
the [[Corpse Collectors]] at [[Fort Bones]].

The distinctive armor of the Karrnathi skeletons
is forged for them and fitted to their fleshless bones.
[[Fort Bones]] operates a small forge for this purpose,
though most of this armor is created at the Night Forge
of [[Atur]].
The massive Karrnwood covers the northern portion of [[Karrnath]]. This dense forest is the source of much of the nation's booming timber and paper industry.

When [[Taer Syraen]] is in the Material Plane, it manifests in the Karrnwood. An unnatural chill spreads from the [[feyspire]] and covers several square miles of the forest in snow, even in summer months.
This fabled fortress, known even in [[Riedra]] and
[[Khorvaire]] as the home of the mysterious [[Keepers of the Word]], lies in northwestern [[Adar]]. All Adarans know it as the place where the [[kalashtar]] [[Taratai]] passed
from the world in her stand against the [[Inspired]], creating the [[Shroud]] that protects Adar to this day.

Carved from the heart of a mountain, the fortress
has an outer face set into a cliff thousands of feet
above the [[Kasshta River]], looking westward into
[[Syrkarn]]. Ships from the river can be ferried by magic
lifts to a magically maintained lake nearly a mile up
the cliff. From the east, overland routes converge to
form a trail that winds to Kasshta's great gate.

Unlike all other monasteries of [[Adar]], which lie concealed behind a blend of psychic and arcane techniques, Kasshta Keep refuses to hide from outsiders or the [[Inspired]]. This is a major reason it is considered the de facto capital of [[Adar]]. The keep is frequently engulfed by unnatural weather, such as violent storms or mists arcing with
lightning.

Most of the keep's inhabitants live in subterranean
chambers. To illuminate the depths, the [[Keepers of the Word]] created magic lights that nourish people and plants as sunlight does. Other magical effects
keep Kasshta's air fresh and pleasant.

!! Leadership

[[Chanaakar]], the current Speaker of the Word, lives and works in Kasshta Keep. He rarely leaves.
The [[Keepers|Keepers of the Word]]' Council of the Wise advises him, and some of these elders actually oversee the keep's functions as a settlement. Chanaakar lives in the highest rooms of Kasshta Keep not designed solely for military purposes. Directly beneath his living quarters are the Council Chambers and the Council Hall. 

!! Notable Features

In nearly all areas of Kasshta Keep, water, heat, ventilation, and light are supplied by elemental magic. 

!!! Council Chambers

In the highest sections of
Kasshta Keep, important elders and mystics live and
work. Not every elder takes a chamber in these hallowed
halls—many choose to remain among their families
(or lineage groups, if [[kalashtar]]). So, about half of the
Council Chambers are occupied by persons important to
the functioning of Kasshta Keep. All these rooms have
extensive passive magical defenses.

The most open and public room at this level is the
Council Hall. A hemispherical chamber, it is set up as an amphitheater with a central raised dais for speakers. The
Council of the Wise meets here. Part of the hall is often
set aside for citizens of Kasshta Keep to air grievances or
watch the proceedings.

Unknown to many in Kasshta Keep, the central platform is a [[magic item]]. Some of the elders, including the Speaker, can command the dais to produce [[calm emotions]], [[sleep]], [[dimensional anchor]] (more useful before the [[Shroud]]), [[hold]], [[tongues]], and [[zone of truth]] up to three times per day.
The area around the dais is also a complex magical diagram useful for other spells such as [[private sanctum]] or [[magic circle]]. 

!!! Asperi Rookeries

Kasshta has long had little [[asperi]]
"neighborhoods." The asperis who live in these places are
considered citizens. Though asperis are wild and free in
[[Adar]], the guardians of Kasshta watch over these rookeries to
protect them from harm. Given their openness, the rookeries form one of the few potential points of infiltration. 

!!! Dujong

Below the Council Chambers is the Dujong,
the area where many of Kasshta Keep's warriors live and
train. Rooms similar in layout to the Council Hall provide wide training grounds, and ample ventilation keeps the area pleasant. 

!!! The Hatta

On the lowest level of Kasshta is an open
courtyard filled with orderly buildings and stalls, a wide
lane passing through the middle. The whole arrangement
resembles a tiny village. Here, merchants sell common
goods and arrange deals. The Hatta, as Kasshtans call it, is
like the open markets in villages elsewhere in [[Adar]], but it
is unusual in the eight monastery-fortresses that guard the
land of refuge. Only [[Dvaarnava]] has anything similar.

In Kasshta Keep, and [[Adar]] as a whole, the goods
available are highly variable and the prices fluctuate based
on this reality. Much of what is available are basics needed
for comfortable living or engaging in craftsmanship. Further, while [[Adarans]] do use money, that too is highly variable, and merchants often weigh coins. Barter is common.
Assume any [[magic item]] or reagent is available in Kasshta Keep, up to a reasonable limit, and decide on its price based on how you want it to appear in your campaign.
The blue-green waters of the Kasshta River cut through the reddish stone cliffs of [[Adar]]. Upstream, the monastery fortress of [[Kasshta Keep]] overlooks the river thousands of feet below.

[[Riedra]] maintains a number of fortresses along
the Kasshta River and [[Jathara Sound]] between [[Syrkarn]]
and [[Adar]]. These serve as focal points for [[Inspired]]
operations within Adar. 
//You cannot defeat me. You fear death, knowing your flesh will rot and your soul will shrivel away in [[Dolurrh]]. But I serve the Grim King, the Keeper of the Gate—and even if you kill me now, he will open the gate for my return.// 
<div align="right">—A cultist of Katashka</div>

The [[overlord]] Katashka embodies the fears of both death
and the [[undead]]. People often assume that the followers of
the [[Blood of Vol]] want to become undead, but it is Katashka's
cultists who embrace this dark destiny. His loyalists dream of
a world where the dead reign over the living, reveling in the
power death holds over the rabble, secure in the belief that
Katashka will either grant them immortality through undeath
or raise them when they fall.

Katashka thrives both on the fear of death and fear of the
undead. As such, his cults might spread plagues or otherwise
cause mass death, or they might unleash [[ghoul]]s in the sewers
or trigger [[zombie]] outbreaks. His intent is not death itself—the Grim King draws strength from the fear of the living. As such, Katashka rarely seeks to kill people swiftly. The primary purpose of the lingering plague is to sow fear among those
fighting it, and the small pack of ghouls that causes long-term
terror is more effective than an army that wipes out a city in
a day. Likewise, Katashka's undead champions revel in their
unnatural condition; they want people to know what they are
and to fear them.

The Gatekeeper's cults are often transactional, with cultists
serving the Grim King in exchange for secrets of [[necromancy]]
or undead servants. Katashka's cults have no established territories, but are actually
rarer in [[Karrnath]] than elsewhere in the [[Five Nations]], as the
[[Blood of Vol]] presents a different path to necromantic magic
along with a more positive overall message for followers.

There are some obvious similarities between Katashka and
the [[Keeper]], and some scholars assert that they are one and the
same—that Katashka's actions in the [[Age of Demons]] inspired
the myths of the Keeper. A critical difference is Katashka's
focus on undeath. Priests of the Keeper also deal with general greed, offering deals that have nothing to do with death or undeath.
The agents of [[Katra|Sora Katra]]'s Voice in [[Droaam]] are envoys and entertainers,
diplomats and mediators. Their task is to maintain morale
and lines of communication, and to help resolve disputes
before they get out of hand. Most of the agents of Katra's
Voice are [[changeling]]s, but [[medusa]]s, [[tiefling]]s, and even
[[harpies|harpy]] can be found in this role. Many focus on their role
as entertainers, sharing stories with the common folk and
painting tales of the bright future that lies ahead. Others are
focused more on mediation and the administration of justice,
especially if there is unrest between the chib (chieftain) and laborers.
The grand auditorium near the [[University|Morgrave University]], Kavarrah Concert Hall
hosts the finest musical performances in [[Sharn]].
Residents of [[Upper Central]], [[Upper Northedge]], and
[[Upper Menthis]]'s [[Platinate]] district attend shows in
Kavarrah dressed in their finest [[glamerweave]] garments, often arriving by [[skycoach]] after dining in
[[Skyway]] restaurants.
This little restaurant is one of the well-kept secrets of [[Sharn]], and without a recommendation, a character only knows about it if they are familiar with this district. The Kavv family
emigrated from the city of [[Stormreach]] in [[Xen'drik]],
and the food is an intriguing blend of [[Khorvairian|Khorvaire]]
styles, using Xen'drik spices and vegetables most
people have never encountered. Kavv's is a small,
intimate establishment, and despite the extremely
high quality of the food, a typical meal averages 30
cp. Saza and Taji Kavv still have many friends and relatives in Stormreach, and if the party befriends the Kavvs these contacts could prove to be useful during
trips to Xen'drik. 
Deriving from the [[Dhakaan]]i term meaning "Keepers", a //kech// is a clan within the [[Heirs of Dhakaan]] dedicated to preserving a pillar of their ancient empire.

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the City

While the [[Dhakaan]]i are renowned for their weaponcraft, it
may be surpassed by their skill with fortifications and civic
engineering. Many of the greatest cities of the [[Five Nations]] are
built on Dhakaani foundations, and ruins of other Dhakaani
fortresses still linger after many thousands of years. These
techniques are the treasure guarded by the Kech Draal, and
Draal [[artificer]]s specialize in the [[transmutation]] effects and
the shaping of earth and stone. Every [[kech]] has its architects,
just as the Draal have their soldiers and their [[dirge singer]]s—but
stonework and mining are the pride of the Kech Draal.

The Kech Draal have little interest in filling the throne of the
Emperor Yet to Come. While they look forward to building the
next empire, they have no interest in competing with the other
Keepers; they seek only the realization of the dream. They have
not yet made their presence felt in the world, and it is up to
the DM where their deep vault lies. It's possible that they are
beneath [[Wroat]] or [[Korth]], secretly dwelling below the deepest
foundations of a modern capital.

The [[golin'dar|goblin]] play a more central role in the Kech Draal than
in many clans. While the clan is formally led by the [[dirge singer]]
Kuula Dhakaan and the warlord Druun Dhakaan, the [[ghaal'dar|hobgoblin]]
consult with a golin'dar council on all major decisions. The
golin'dar Taala is the senior voice on this council, respected for
her wisdom and skill.

The neutrality of the Kech Draal can make them a good
choice for a [[Dhakaani|Heirs of Dhakaan]] character, as they can find a welcome
with any of the Keepers. A Draal character might be gathering
information about the world, seeking lost treasure, or even just
eager to survey the styles of architecture that have developed
over the past millennia.
! Clan of Heroes

When the [[kech]] sages identified the threat posed by the
[[Kapaa'vola]], some chose retreat, hiding in the deep vaults and waiting for the curse to pass. One of their leaders, Khaas
Dhakaan, had no interest in hiding. Gathering the greatest
heroes of the age—[[Dhakaan]]i champions, [[Khesh'dar]] assassins,
[[Gatekeeper|Gatekeepers]] [[orc]]s—Khaas led his army into the depths of [[Khyber]],
and into the [[demiplane]] that served as the [[prison|Palace of Sinew]] of [[Dyrrn]] the
Corruptor. Khaas swore to end the Treacherous Whisper and to
recover artifacts stolen by Dyrrn and its minions—artifacts that
Khaas believed could restore the splintering empire.

Khaas and his champions were never heard from again,
neither in the waking world or in the [[Uul Dhakaan]], and it was
assumed that they were lost. In truth, they were trapped within
[[Dyrrn]]'s [[demiplane]], the [[Palace of Sinew]], fighting an endless struggle against the
minions of the [[daelkyr]]. Time moves strangely in Dyrrn's realm,
and by the reckoning of the Ghaalrac, it has been less than
three centuries since they set out on their mission. Trapped
in a realm of madness, the Ghaalrac have blended [[Dhakaan]]i
and [[Gatekeeper|Gatekeepers]] techniques with the [[symbiont]]s of the [[daelkyr]],
with results that others might find horrifying. They have crafted
powerful living weapons and artifacts, along with magebred
champions with unnatural powers—armored [[bugbear]]s with the
regenerative abilities of [[troll]]s, [[goblin]] assassins with the ability
to slip through space. They have found ways to bind [[aberration]]s
to their will, and have forced [[beholder]]s and [[grell]]s to serve them.

The descendants of the [[Gatekeeper|Gatekeepers]] [[orc]]s that ventured into
[[Khyber]] with the Kech Ghaalrac remain to this day, having
found their own place in the clan's caste system as specialists
in [[druid]]ic magic. However, the traditions carried by these once-Gatekeepers vary greatly from their surface counterparts, in
part because they've been cut off from the natural world. While
still driven by the goal of fighting [[aberration]]s, after hundreds of years in an alien land, the orcs of the Kech Ghaalrac would
seem similarly alien to other [[Gatekeepers]].

Now, after centuries of struggle in [[Khyber]], the Kech Ghaalrac
have returned. The current leader—who also uses the name
Khaas—possesses what the Ghaalrac call //Ur'taash//, the “First
Crown.” It's said that this was the final creation of [[Jhazaal Dhakaan]], forged to unite the empire; it protects his mind, allows him to communicate with Ghaalrac squads across great distances, and possesses powerful coercive abilities. Khaas
claims to have torn this crown from [[Dyrrn]]'s grip as he dealt a
mortal blow to the Corruptor. He believes that it is the Ghaalrac
who broke the power of the Treacherous Whisper, and that only
they can restore the Empire of Dhakaan.

Khaas and the other leaders of the Kech Ghaalrac carry
the names of heroes of ancient Dhakaan: Torrm of the
Gatekeepers, the master assassin known only as Khesh, the
mighty [[guul'dar|bugbear]] Korrga. The original heroes are long dead,
but these dar claim to be their descendants and carry their
ancient weapons. They possess tremendous power, and they
intend to use it. But there are many questions about the Kech
Ghaalrac. Are they truly what they claim to be, or have they
been corrupted by [[Dyrrn]] and turned into tools of the [[daelkyr]],
whether they realize it or not? They aren't part of the [[Uul Dhakaan]] as experienced by the other Keepers, but they have their own version of the dream that sustained them through the long war, and believe that it is the other clans who have
lost sight of the dream. The other Keepers will know nothing
of the Kech Ghaalrac until the Clan of Heroes reveals itself; will they support Khaas Dhakaan of their own volition, or be compelled by the power of //Ur'taash//? Or will the [[Heirs of Dhakaan]] oppose these transformed heroes?

The Kech Ghaalrac can appear anywhere that suits the
needs of the campaign. When they appear, it should be
dramatic. One option is for them to seize the [[Gathering Stone]], House [[Deneith]]'s fortress in [[Darguun]]; this strikes a
dramatic blow against //chaat'oor// ("defilers") and gives the Ghaalrac an
opportunity to bend Darguuls to their will. Khaas Dhakaan
believes that dar and Darguul alike are all flawed—but
that all can be redeemed by the power of Ur'taash.

The Kech Ghaalrac is an unlikely origin for a player
character; their story works best when people don't know
if they have been corrupted or are righteous, despite their
unnatural tools and techniques. However, a Dhakaani character
from another kech could be determined to uncover the truth
about the Kech Ghaalrac. Or a character could be the distant
descendant of one of the Ghaalrac heroes, seeking to learn the
final fate of their ancestor and to recover a prized relic from the
Ghaalrac champion who carries it.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of Thunder

Siege warfare and combat engineering are the specialties of
the Kech Hashraac. The [[Dhakaan]]i don't employ [[siege staff]]s or
[[evoker|evocation]]s, and the Hashraac has spent generations developing
new weapons to dominate the battlefield. If the DM wishes
to add conventional muzzle-loading firearms and cannons to a campaign, the Kech
Hashraac could have developed these weapons during their
long isolation. Alternatively, the Hashraac could specialize
in the [[enhanced artillery|arcane artillery]], alchemical explosives, or an entirely new form of weapon.

The Kech Hashraac have yet to reveal their presence to the
world at large. While few in number, the force they command
could be vital in any conflict that lies ahead. Will they support
another [[kech]] claiming the imperial throne, or will they pursue
it themselves? The warlord Duul Hashraac leads the clan; he is
noteworthy both for being an [[artificer]] as opposed to a common warrior, and for using his clan name instead of “Dhakaan” as his sobriquet. Duul is proud of what his people have achieved; whether he seeks the throne or serves as kingmaker, he
believes the Kech Hashraac hold the keys to Dhakaani victory.

The Kech Hashraac are a logical choice for a Dhakaani
Artillerist [[artificer]]; the artificer's magic can be tied to the tools
the DM chooses to provide to these Keepers. A Hashraac
player character could be dispatched to study the battle magic
of the [[Five Nations]], to seek out rare components needed for
new weapons, or to investigate the [[Mournland]] and the theory
that the [[Mourning]] was caused by battle magic. Alternatively, a
Hashraac artificer could have left the clan to pursue their own
unorthodox weapons research, hoping to return in triumph
once they have perfected their techniques.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of Night

Long ago, interaction with the [[Aereni line|Aereni noble line]] of [[Vol]] led to the [[dirge singer]] Iraala becoming the first dar [[vampire]]. She shared this
gift with her lover, the warlord Muurat. In the centuries that
passed, the two were placed in charge of the covert operations
of the empire. Spying and assassination remained the domain
of the [[Khesh'dar]], but the Kech Nasaar served both as internal
security and as commandos specializing in guerilla tactics
and psychological warfare. It was the Kech Nasaar who first
recognized the threat of the [[Kapaa'vola]], and set the Keeper seclusion in motion.

Over their long seclusion, the Kech Nasaar have continued to study unconventional paths of warfare. Nasaar [[dirge singer]]s often train in the techniques of the [[bard]]ic College of Whispers, while elite soldiers of the Kech Nasaar might be [[gloom stalker]]s. Under the leadership of Iraala and Muurat, the Nasaar have also explored
the arts of [[necromancy]], though it's up to the DM to decide
just how far they've continued down this path. Do they have
squads of [[vampire]] commandos? Have they developed entirely
new forms of [[undead]]? Given their penchant for psychological
warfare, Nasaar agents could sow terror and confusion by
raising the bones of soldiers who died in the [[Last War]], making
it seem like the vengeful dead yearned to continue the battle. Or
perhaps the Nasaar have developed techniques allowing them
to seize control of undead raised by other necromancers—a
technique that could cause untold chaos in [[Karrnath]].

Iraala and Muurat continue to lead the clan, giving a direct
tie to the ancient empire. The edict of a long-dead emperor
asserted that no dead creature could wear the imperial crown;
while the services of the Nasaar were valued, the dead are
severed from the [[Uul Dhakaan]] and cannot draw on the wisdom
of the past or see [[Jhazaal|Jhazaal Dhakaan]]'s dream. The Nasaar could have
fallen into true darkness in their isolation, and now seek to
seize power for themselves. On the other hand, despite being
cut off from the Uul Dhakaan, Iraala and Muurat remember
the actual glory of the fallen empire, and could be the truest
devotees of the concepts of //muut// and //atcha//, placing the needs
of the empire above their personal ambitions. As in ancient
times, they might seek to guide the living emperor, and to
ensure the [[Dhakaan]]i Empire follows the proper course.

A player character from the Kech Nasaar could follow
unusual paths. A Nasaar dar might be gathering information
for the clan, or they could be tasked to monitor the activities
of the other Keepers, especially the [[Kech Ghaalrac]] and [[Kech Shaarat]]. Iraala may have hidden artifacts across [[Khorvaire]] before the fall; a Nasaar character could seek to recover these in her service, or could have gone rogue to pursue one of these treasures.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Tiger

Beasts served many important roles in the Empire of [[Dhakaan]].
The Ruuska dar fill much the same role that House [[Vadalis]] does
for the [[Five Nations]]: tending and training the many beasts of the
empire, while always searching for—or creating—new beasts to
fill a need. //Ruuska// is the Goblin word for “tiger,” and tigers and
dire tigers are often used as cavalry in the vanguard of Dhakaani
armies. But the Kech Ruuska breed all manner of beasts, from
fierce guardians to clever messengers and simple livestock.

Just as there are soldiers in every kech, there are tenders
in every vault who maintain the beasts of that vault. However,
the Kech Ruuska specialize in breeding and training them,
producing the finest beast masters, and keeping the
widest range of exotic creatures in their arsenals. The Ruuska
also work with magebreeding and may have produced entirely
new beasts or [[monstrosities|monstrosity]] previously unknown on the
surface. While the Ruuska don't have a spiritual bond to the
natural world, they might have developed a form of [[druid]], serving as a specialist in assuming animal forms and controlling beasts. The Ruuska have also experimented
with [[lycanthropy|lycanthrope]]. It's up to the DM to decide if they were able
to control and weaponize the curse, if their efforts ultimately
came to nothing, or if lycanthropy has spread throughout the
Ruuska—a secret they are concealing from the other clans.

The Kech Ruuska are led by the Beast Master warlord Lhaar
Dhakaan and the [[dirge singer]] Oruul. The [[Kech Shaarat]] are
putting considerable pressure on the Ruuska to support their
claim to the crown. It remains to be seen if Lhaar bows to these
threats, or whether the Ruuska seek an alliance that lets them
turn the tables on the powerful Shaarat.

The Kech Ruuska are a good option for a [[Dhakaan|Heirs of Dhakaan]]i ranger.
The clan can also be an interesting way to add new or exotic
beasts or monstrosities into the world, and could be an
intriguing foil for a storyline involving House [[Vadalis]].

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Sword

The Kech Shaarat are the largest of the [[Keeper clans|kech]]. Founded
by the Warlord of the South in the final days of the empire of [[Dhakaan]], the
Shaarat possess an artifact known as //Skai Shaarat//—the Great
Blade—a sword handed down from warlord to warlord since
the days of the Six Kings. While they lack the exotic specialties
of the other clans, the Kech Shaarat excel at war. The deep
vault of the Kech Shaarat is tied to a [[demiplane]] in [[Khyber]]
known as the [[Ironlands]]. This provided them with access
to resources and space denied to the other clans, including
the [[byeshk]] ore the [[Dhakaan|Heirs of Dhakaan]]i prize for their weapons, while also keeping them on a constant war footing. Of all the Keepers, the Kech Shaarat have the
finest forge [[artificer]]s, as well as talented battlesmiths—though the
Dhakaani don't generally employ [[construct]]s, these artificers
have created innovative [[steel defender]]s. On the other hand, the
Kech Shaarat have not emphasized the role of the [[dirge singer]]s as
much as other clans, and have a weaker [[bard]]ic tradition.

The Kech Shaarat have emerged into the open and are the
most active of the Dhakaani tribes. The warlord Ruus Dhakaan
(no relation to the [[Kech Ruuska]], though his name does mean
“Tiger”) has reclaimed several ancient Dhakaani fortresses in
the [[Seawall Mountains]], and is working to refortify these ruins.
In the course of this expansion, the Kech Shaarat have already
absorbed a lesser clan—the //Kech Nozhii//, who maintained the
treasury of the empire—which has expanded their resources.
They are actively pressuring the [[Kech Ruuska]] to submit to an
alliance acknowledging Ruus as the Emperor Yet to Come, and
Shaarat warriors have a bitter rivalry with the [[Kech Volaar]].

Ruus has sent representatives to [[Rhukaan Draal]] and pledged
to support Lhesh [[Haruuc|Haruuc Shaarat'kor]], but this is a ruse designed to bide
time and to take the measure of an enemy. Ruus hasn't revealed
the true nature of his people or the full scale of his forces to the
[[Ghaal'dar]], and most Darguuls believe the Kech Shaarat are a
Ghaal'dar clan with strange traditions. House [[Deneith]] is keen
to gain the services of these mysterious warriors, but Ruus
Dhakaan refuses to have any dealings with the chaat'oor (defilers; an insulting way to say non-dar).

Ruus Dhakaan is a brilliant strategist and charismatic leader.
He earned //Skai Shaarat// with his courage and skill, and should
never be underestimated. While he's determined to claim the
imperial throne, he's also concerned with //muut// and the good of
the empire; he will pressure other Keepers to support his claim,
but won't butcher his own kind. However, he's ruthless when it
comes to dealing with chaat'oor, and doubts whether the modern
“[[goblin]]s” can be redeemed. They may be close enough to dar
that they could be worthy servants, but he's considering whether
it's simpler to slaughter the [[Darguul|Darguun]]s once the dar are united.

The Kech Shaarat are the most aggressive of the clans,
and this is an interesting option for an entire party of dar
adventurers. A lone Shaarat dar could be an exile from the
clan or a spy evaluating the strengths and fighting styles of the
chaat'oor. One option is for a Shaarat player character to have
challenged Ruus and been defeated; now they seek an ancient
artifact that would allow them to face Ruus again and claim
leadership over the clan.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Dream

The Kech Uul are a small [[clan|kech]] of the [[Heirs of Dhakaan]]. Their vault is a fortified monastery hidden deep in [[Khyber]]. This is the seat of the
//chot'uul//, the monks who watch over the [[Uul Dhakaan]] and
protect the dreams of the empire. This clan also has the largest
number of uul'kala (dream singer) bards, and knows the most about how to
produce [[dream key]]s and [[dreambound|kra'uul]] objects.

The Kech Uul have yet to return to the surface of [[Khorvaire]].
Its people spend much of their time within the [[Uul Dhakaan]]
itself, using drugs and meditation to enter the dream even while
waking. The monks of the Kech Uul are devoted to protecting
the dream from outside influences, but they're also experts in
navigating the dream itself; if a Dhakaani dreamer is searching
for a particular memory or wishes to speak with the dream-vestige of an ancient hero, a Kech Uul monk can be an invaluable
guide. Likewise, the uul'kala of the Dream Keepers are the
backbone of long-distance communication between clans; the
dream singers maintain message stations at various points within the
dream, and can pass a message from one dreamer to another.

There are several ways that the Kech Uul could fit into a
campaign. They can serve as a neutral resource supporting
all clans, maintaining communication and offering guidance
through the dream. However, it could be that they're not what
they seem. The Kech Uul have always worked to protect
[[Jhazaal|Jhazaal Dhakaan]]'s dream from outside influences, but it's possible the
clan has been partially or fully replaced by [[quori]] imposters,
who plan to influence the Emperor Yet to Come to serve the
ends of the [[Dreaming Dark]]. Or perhaps the Kech Uul was
destroyed long ago by the [[daelkyr]] or another threat; the Dream
Keepers continue to serve their function, but they're actually
long dead, and the chot'uul encountered in the Uul are simply
dream-vestiges, memories lingering in [[Dal Quor]].

The name of the Kech Uul's current leader is unknown outside
the clan. Uul dar often wear masks or veils; they do not seek
//atcha// (personal glory), and desire only to help others achieve Jhazaal's dream.
A player character tied to the Uul dar could be an uul'kala, a
bard pursuing a dream-vision or searching for dream-related artifacts. An exotic possibility is that the character believes it's possible to bring other species into the [[Uul Dhakaan]], allowing for a peaceful union; if this
is the case, is this goal supported by the clan elders, or is
the character an eccentric renegade? Alternatively, any dar
character could have a mentor from the Uul dar, who visits
them in their dreams offering guidance and inspiration.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Word

The Kech Volaar believe that knowledge is power. Their deep
vault holds scrolls and tablets recording thousands of years of
imperial history. While they have strong warriors and a proud
martial tradition, the Volaar value the song over the blade and
have the strongest [[dirge singer]]s of any clan.

While the Volaar weaponsmiths aren't a match for those
of the [[Kech Shaarat]], the clan leaders recognize the value of
arcane magic over pure mundane might. The Volaar have long
worked to push the limits of [[dirge singer]] magic, and to master
the techniques that created wonders such as the [[Uul Dhakaan]]
and the greatest artifacts of the old empire. The Volaar have
experimented with [[warlock]]s—working with supernatural
patrons under carefully controlled conditions—and sought to
cultivate [[sorcerer]]s when they have appeared among the dar
populace. Since their return to the surface, the Kech Volaar are
working both to recover the greatest artifacts and treasures of
the empire, and to study the arcane techniques of the modern
//gath'dar// (non-Dhakaani). Where the [[Kech Shaarat]] believe that [[Dhakaan]]i might
can sweep aside any enemy, the Volaar recognize the arcane
power wielded by the [[Five Nations]] and the [[dragonmarked house]]s, and are doing everything they can to study and
master this unfamiliar science.

Perhaps because of this, the Kech Volaar are also the most
conciliatory of the Keeper clans. They are the most willing to
interact with the gath'dar, both because they recognize the need
to understand these possible enemies, and in the hopes that
some form of coexistence may be possible. Like the [[Kech Uul]],
Volaar leader Tuura Dhakaan wonders if the Uul Dhakaan can
expand to incorporate other creatures—if the empire can unite
gath'dar as it does the dar.

Despite these hopes, the Kech Volaar are devoted to the dar
above all else. They are the Keepers of History, and they know
the sacrifices their ancestors had to make and the bitter wars
against the //chaat'oor// ("defilers") and the //taarn// ([[elves|elf]]). They are wise and
willing to seek all paths to prosperity, but will never surrender
the dream of the eternal empire.

Tuura Dhakaan has revealed herself to the world, and has
sent representatives to the court of Lhesh [[Haruuc|Haruuc Shaarat'kor]]. Like the
[[Kech Shaarat]], the Volaar have concealed their true history
and power. Volaar [[dirge singer]]s often travel among the [[Ghaal'dar]]
sharing stories, helping to educate them about their glorious
past and the traditions of //muut// and //atcha//; this ties to Tuura's
hopes that the “[[goblin]]s” can be redeemed and drawn back to
their past glory. Tuura is determined to claim the throne of the
Emperor Yet to Come; she hopes to find the strength needed to
compel the [[Kech Shaarat]] through reclaiming powerful artifacts
and building allies.

The Kech Volaar are one of the most active Dhakaani
clans. Adventurers could encounter Volaar reclaimers across
[[Khorvaire]] as they search for Dhakaani relics. A Volaar [[wizard]]
or [[artificer]] could be struggling to master the techniques of the
gath'dar, while a dirge singer could be an envoy sent to recover an
ancient treasure or to seek allies among the outsiders.

The stronghold of the Kech Volaar is the fortified city of [[Volaar Draal]].

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
Every Vassal knows they should never flaunt good fortune,
avoiding arrogance and pride. Those who crow too loudly may
catch the jealous eye of the Keeper. Even the mightiest hero can
be laid low by disease or ill fortune, as the Keeper has a vast
arsenal to bring down those that he desires. Once he pulls you
down into the darkness, he will snatch your soul before it can
reach [[Dolurrh]] and add you to his endless hoard, where he can
toy with you and torment you until the end of time.

The Keeper is the patron of those who put personal gain
above all else. He guides those who use guile to gain gold,
regardless of the cost to others. A rogue who invokes [[Olladra]]
sees themselves as the hero of the story; one who calls on the
Keeper has no compunctions about being the villain. Beyond
guiding those who place profit before all else, the Keeper is also
known for his willingness to make deals—though his bargains
are always slanted in his favor. Priests known as Talons make
these deals on behalf of the Keeper, though the terms are
often abstract and driven purely by faith. An entertainer could
bargain with a Talon, exchanging ten years of their life for
fame; even if the entertainer subsequently becomes famous,
there's no way to know if this is the result of the bargain, nor to
anticipate when the entertainer might suddenly die. This could
easily be a part of the backstory of a player character. Did your
entertainer make a bargain with the Keeper?

Another possible path for a player character or deadly NPC
is that of being a [[Keeper's Fang]]. These people receive visions
of things that the Keeper wishes to add to his hoard; these
are usually the souls of specific people, but they could also be
artifacts or other unique treasures. 

The Keeper's symbols include a [[dragonshard]] in the shape of a fang or a [[dracolich]].
The Keeper of the Flame is the head of the Church of the [[Silver Flame]]. They serve as intermediary between the [[Voice of the Flame|Tira Miron]] and the [[Council of Cardinals]]. The Keeper is not elected, but rather "called" by the Voice, a mystical process understood by very few, and then confirmed by the Council. Historically, the Keeper is the only person capable of channeling the power of fountain of fire in the [[Grand Cathedral]] in [[Flamekeep]], performing miracles no [[cleric]] or [[paladin]] can match.

The Keeper wields secular as well as religous power. In 914 YK, the last king of [[Thrane]], [[Thalin ir'Wynarn]], died. The people rejected the claim of King Thalin's heir and installed a [[Silver Flame]] theocracy. Since then, the nation has been led by the Keeper of the Flame and the [[Council of Cardinals]].

The current Keeper is Jaela Daran, an eleven-year-old girl who was only six when she was confirmed in 993 YK.
These infamous weapons, prized by assassins, have a Khyber
[[dragonshard]] embedded into the pommel that channels the souls
of victims, but doesn't itself trap them. There's much debate over
the actual fate of the souls of those slain by a Keeper's Fang.
Common myth says that the souls of victims are trapped in the
[[Lair of the Keeper]], and heroes can seek to reclaim a soul from
the [[Sovereign of Death and Decay|Keeper]]. Another myth maintains that
these weapons channel souls to the [[overlord]] [[Katashka]], and that
one must deal with the [[Lords of Dust]] to restore a victim. The [[Shaarat'khesh|Khesh'dar]] assassins of the Empire of [[Dhakaan]] believe these blades utterly destroy the souls of their victims.

Whenever you use this magic dagger to incapacitate a creature, the creature immediately dies and its soul removed. A creature whose soul has been stolen in this way can be
restored to life only by means of a [[wish]] spell.
The Keeper's Maw is a bay off the coast of the [[Demon Wastes]], just north of the [[Lair of the Keeper]].
Most of the inhabitants of [[Adar]] follow the teachings of the [[kalashtar]], but some follow other paths. When the [[Inspired]] conquered [[Sarlona]], they purged society of all forms of [[arcane magic]]. Led by Speaker [[Chanaakar]], the [[Keepers of the Word]] are the descendants of the [[wizard]]s and [[sorcerer]]s of ancient Sarlona, who have preserved the mystical traditions of their ancestors for over a thousand years. While they are concentrated in [[Kasshta Keep]], they can be found in all the fortresses of Adar. In this way, the Keepers ensure that a single attack cannot destroy their traditions. 

The Council of the Wise rules Keeper holdings. It
is made up of individuals who have the confidence of the
people they represent. Elders among the Keepers are
titled "venerable"; the elder [[Thatari]] is referred to as Venerable Thatari, for example. The council selects a person
as Speaker to guide discussion, focus on issues, and break
deadlocks. In all cases, an elder can be removed if he or
she loses the faith of the represented. 

Knowledge and its preservation are most important,
so many Keepers are dispassionate about other pursuits.
However, the influence of [[Taratai]] and the [[kalashtar]] on
the organization has been significant. The Keepers respect the [[Path of Light]], and some practice it.

Many Keepers merely read, discuss, and teach the
lore already possessed by the order. To a person, they
are capable spellcasters. They preserve even techniques
thought harmful to the mind or soul, for the sake of
learning. Dangerous spells and objects are present within
[[Kasshta Keep]] and other places the Keepers call home.
As the corruption of [[Raadu Xeel]] shows, this policy can
prove troublesome.

In [[Adar]], the Keepers study the land, its strange
phenomena, and its planar connections. They aim to
someday connect with the [[Storm Guardians]] and gather
information on the draconic history of Adar. As much of
this work is for its own sake as it is for some higher purpose. However, [[Chanaakar]]'s time as Speaker has changed
this situation to some extent, and some grumbling about
this change might be heard behind closed doors.

''Getting the PCs Involved:'' The Keepers of the Word
can be the source for almost any new magic or [[spell]] you
want to introduce into your campaign. Keepers of the Word frown on the
actual practice of [[pact magic|warlock]] in their
midst, and the [[Shroud]] also makes such magic difficult
at best.

The Keepers require those who seek their teachings
to prove themselves worthy. Since the sages are cloistered
ascetics, they are more than willing to send teams to
remote sites in [[Adar]] and even other parts of [[Sarlona]] and
the world. On the other hand, a Keeper arcanist could
make a valuable addition to a party. Characters can always
find a market for items and spells among the Keepers,
even if the PCs don't work for the order directly.

The Keepers might hire the PCs (or merely send
duty-bound characters) to explore a [[Lamannia]] [[manifest zone]] deep in [[Adar]] and report back what they find. Alternatively, a small Keeper hold that seems to have gone
rogue might need dealing with. Perhaps this corruption
needs to be weeded out without alerting other Keepers
of the Word, or the party might be sent directly from
[[Kasshta Keep]] to investigate. Then again, the PCs could
be pawns of the Keepers' enemies, and just going to talk
to the hold's residents might be the best course. 
The [[Gray Tide]] [[principality|Lhazaar Principalities]] is ruled by the mysterious Prince Kel, and it has been since its founding over a thousand years ago. Most outsiders believe that this is the work of one or more [[changeling]]s—a lineage that preserves Kel's image and persona.
Antos Keldoran ([[dwarf]]) runs a small smithy in [[Ashblack]], where he
produces high-quality metal arms and armor. If a character can win his affection (dwarf characters have advantage), Antos sells masterwork metal goods at a 10% discount. 
Kelki is a reliable [[Summit Road]] guide, and
[[Murephan]] has taken a liking to the young and vivacious
[[dromite]]. When traveling with Murephan and those being
aided by the Summit Road, Kelki spends a lot of time
explaining what Murephan really meant with his harsh
words. In these "translations," Kelki is usually correct.
Fortunately for everyone involved, Kelki defers to the
elan's judgment in important matters. Kelki has nothing
resembling common sense, and the dromite is too fond
of fire. 
//This old [[dwarf]] must be well into his second century. His long beard is white as marble, and his muscles are lean and weathered beneath his deeply wrinkled skin. He wears the dress uniform of a high-ranking officer in the Brelish Army of the East, and a ceremonial broadsword in a jeweled scabbard is slung across his back. He fixes you with a steely gaze, and for a moment he has the bearing of a mighty warrior; then he smiles widely, and the aura of menace and power melts away.//

The ir'Morans are an ancient family with a proud
tradition of military service. For the first 40 years of
the Last War, Lord Kellas served as the commander
of the [[Brelish|Breland]] Army of the East. Then came the Day
of Ashes. On 3 Dravago 943 YK, Kellas engaged the [[Valenar]] raiders and suffered a devastating defeat.
While his physical injuries were soon healed, Kellas
never truly recovered from the battle. He resigned his
commission and returned to [[Sharn]], and he remained
hidden in his family estate for decades.

With the end of the [[Last War]], Lord ir'Moran
has finally returned to public life. Most people have
forgotten the precise role he played in the war, and
he is simply known as “the General.” He cheerfully
exchanges war stories with other veterans and regales
youngsters with his exploits, but any mention of the
Day of Ashes produces an icy silence. Kellas has
never forgiven the [[Valenar]] for his defeat, and over
the years this mania has expanded to include all [[elves|elf]]
and [[Cyrans|Cyre]]. On the surface he seems like a kindly,
doddering old man, but he is still a brilliant tactician
and member of the [[Sixty]]. He has considerable wealth
and has retained his contacts in the Brelish military;
he may use this power to threaten elf characters or
to stir up trouble on the Day of Ashes. 
Kelneluun is a large inland sea in central [[Sarlona]], located in the [[Riedra]]n province of [[Dor Maleer]] amidst the [[Frostwall Mountains]] and [[Paqaa Mountains]].
The Kelshak ("Broken Blade") Mountains in [[Borunan]], [[Riedra]], take their name from the same [[Sovereign Host]] myth that inspired the monastic Order of the [[Broken Blade]].
The Kennel is similar in appearance to the [[Catacombs]], but
contains the [[shade]]s and [[husk]]s of beasts and monstrosities,
along with the [[nalfeshnee]] and [[marut]]s that tend them. Here,
you'll hear the howls of fading wolf spirits, and see flocks of
spectral birds flying through grand halls, along with larger and
fiercer creatures. Beast spirits rarely linger long in [[Dolurrh]], as
most have fewer memories to erase. But all dogs go to Dolurrh!

The [[Queen of the Dead]] might have created special servants
that wander these halls, just as she made the [[shadar-kai]]. It's
possible adventurers could be questioned by a clever raven
with the soul of a poet.
''District Type:'' Apartment townhomes<br/>
''Buildings: ''Average residences (40), poor
residences (220)<br/>
''First Impression:'' Kenton is a working class district. The long halls surrounding the central towers
are divided into dozens of tiny apartments, home to
the laborers and commoners who keep the city running. The few people on the streets are generally in
a hurry, either heading to work or just to somewhere
more interesting than Kenton.<br/>
''Social Class: ''Lower class<br/>
''Neighbors:'' [[Rattlestone]] (northwest); [[Little Barrington]] (east); [[Cassan Bridge]] (bridge, north); [[Everbright]] (bridge, northeast); [[Foundation]] (below); [[Sunrise]] (above)

Kenton is an unremarkable residential district.
Apartments in Kenton are reasonably priced,
and it's not a bad place to live. The architecture is
functional and bland, and there are few comforts
to be found in a Kenton apartment besides four
walls and a roof. One notable feature of Kenton is its relatively high [[shifter]] population; Caine Spire and Helas Keep are two residential towers that are
almost entirely populated by shifters. 
Once an agent of the [[dragon]]s of [[Argonnessen]], the [[changeling]] Keshraa was [[mind seed]]ed by Lady [[Sharadhuna]] of the [[Thousand Eyes]]. Draconic discipline, an indomitable will, and the
innately slippery thoughts of the changeling were pitted
against [[quori]] power, and a new being arose in the aftermath, one who had the memories and cunning of the
[[kalaraq]] spirit but no loyalty to [[Dal Quor]] or [[Argonnessen]].
Now calling themself Keshraa, this changeling eluded his
captors and disappeared.

Keshraa is a mastermind engaged in a complex and
ruthless vendetta against the [[quori]] who created them.
Although they frequently work with rebels and dissidents,
they are utterly amoral and don't care what happens to
the [[Inspired]], [[Riedra]], or [[Khorvaire]]. Their only interest
is the game they are playing with Lady [[Sharadhuna]] and the
[[Thousand Eyes]]. They might help those who are working
against the [[Inspired]], but Keshraa does nothing out of
kindness. If they provide assistance, that help is serving
their purposes.

This rebel [[changeling]] could hold influential positions in any number of dissident groups, though they consider these groups to be nothing
more than tools. They might appear out of nowhere to help
PCs in their hour of need, wearing the face of a priest,
a soldier, or even one of the [[Inspired]]. They have absolutely
no regard for human life. Still, in [[Sarlona]], the help of a
villain might be the best one can hope for.

Keshraa has turned a number of [[Chosen]] against the
Inspired, and could serve as a mentor to a Chosen PC.
They claim to see a reflection of themself in the character—
the vessel turned against the Inspired. Do they truly have
an emotional bond with their protege, or is this one more
ruse intended to create a more effective weapon? 

When dealing with Keshraa, remember that they have
the cold cunning of a prince of nightmares, and that they
have successfully eluded the [[Thousand Eyes]] for almost
a decade. Their intellect is a far greater weapon than their
[[psionic|psionics]] powers. If they are forced into battle, something has
gone terribly wrong for them. 
The viceroy in charge of
[[Ghallanda Hall]] in [[Sharn]], Keslo is a harried [[halfling]]
indeed. Since the end of the [[Last War]], he has been
spending more and more of his time keeping his
guests from attacking each other (a natural consequence when bitter enemies live in proximity to one
another). One of the few actions that will cause the
[[Ghallanda]]s to withdraw their hospitality is for one
guest to attack another, and Keslo has had to forcibly remove more guests in the last two years than in
the previous twenty. Because his job involves careful negotiations with nearly every powerful group in Sharn, he’s one of the best-connected people in the city. Not much happens in Sharn that Keslo d’Ghallanda doesn’t find out about eventually.
//A handsome, slender [[gnome]] with light skin and sharp features, Kessler often wears a beautiful suit of red and black [[glamerweave]]. A sporty black cap hides his short dark hair, and his beard and mustache are carefully trimmed and waxed. His deep blue eyes study everything around him and he laughs merrily. //

Kessler is known across [[Breland]] and [[Zilargo]] for his
razor wit and lyrical skill, performing solo or taking
the staring role in performances staged by playhouses
and theater groups. His satirical work //The Battle of the Five Ducks//—a comedy skewering the rulers of the [[Five Nations]]—is among the best-selling books of the last
century. While his sharp words have earned him
many enemies in high places, his charisma and quick
wits have made him a fixture at gatherings of the elite
and powerful. Kessler is a brilliant and insightful man, but he is completely fearless and will criticize anyone or anything. While he is remarkably intelligent, he is a consummate hedonist; in addition to fine food, wine, and music, he enjoys the company of
women of all races and has recently become addicted
to [[dreamlily]]. Kessler has no ties to any organization;
he has been approached by the [[Trust]] ([[Zilargo]]'s secret
order of spies and assassins) on many occasions, but
he has an independent mind and has no interest in
chaining himself to a higher power.

''Adventure Idea:'' Adventurers often perform
questionable actions. Perhaps a party accidentally desecrates a shrine, is caught breaking into the house of
a noble, or otherwise has fate turn against them. The
consequences aren't that serious—until Kessler seizes
on the subject for his latest satire, a work examining
the danger presented by adventurers. Suddenly the
party is the laughingstock of [[Sharn]]. Former associates
don't want to be seen with them, merchants raise their
prices, and it's only a matter of time before word of
Kessler's new act spreads across [[Breland]] and into the
other nations. Can the party find a way to straighten
things out with the gnome?
Ketaal is a [[ghaal’dar|hobgoblin]] daashor ([[artificer]] with a focus on arms and armor) of the [[Kech Volaar]], a student of both [[wizard]]ry and artifice. He has joined the [[Wayfinder Foundation]], which provides him an opportunity to study both
gath’dar magic and the secrets of the ancient [[giant]]s. He’s a
brilliant scholar and valued member of the Foundation, even
while he’s gathering information for the Kech Volaar.
This [[kobold]] [[warlord]] has
laid claim to [[Shaarat Kol]] in the south of [[Droaam]],
assembling a host of [[goblin]]s, [[kobold]]s, and [[gargoyle]]s
under his command. Though he is mocked by other
warlords, Kethelrax has the favor of [[Sora Katra]] and
has proven surprisingly clever. More than once,
Shaarat Kol has turned back challenges by foes that
underestimated the kobold lord’s strength.
The Kethuun Forests are a chain of forests in the [[Nulakesh]] and [[Pyrine]] provinces of [[Riedra]] that follow the coastline of [[Koralandaluun]].
The teeth of this small brass key constantly change shape.
You can insert it into any lock and lock it.

Once you have used the key, it can't be used again until the
next dawn. 
This small stylized key plays a vital role in the work of House [[Kundarak]]. A person with the [[Mark of Warding]] who places an arcane [[alarm]], [[lock|arcane lock]], or warding glyph can tie the effect to a keycharm. Whoever holds the charm will receive the notification from the alarm, bypass the lock, or avoids triggering the warding glyph. The holder of the keycharm can also end any one spell tied to it if they know the proper command word. The keycharm can have up to three tied spells at one time.
Khaar is a [[guul’dar|bugbear]] barbarian of the [[Kech Ghaalrac]]. He’s
stalking a [[cult of the Dragon Below|Cults of the Dragon Below]] that serves [[Dyrrn]] the
Corruptor, intending to kill them and take their [[symbiont]]s
for himself. He could be an ally if the adventurers are
already fighting the cult, or he might expose a cult they
weren’t yet aware of.
House [[Tharashk]]’s [[dragonshard]] mining operations in [[Q'barra]] are controlled
by the [[Velderan]] clan. Lord Khalar Velderan is a
cunning and ruthless man. In his youth he was an
[[inquisitive]] in [[Sharn]], and he’s comfortable fighting
with either words or steel. Khalar is [[human]] with only a touch of [[orc]] blood in his ancestry, but the majority of the [[Tharashk]] forces in the region are [[orc]]s
or [[half-orc]]s. The house has also brought large numbers of monstrous mercenaries to [[Q'barra]] to serve as laborers and guards. [[Ogre|ogre]]s and [[minotaur]]s are found
at Tharashk sites, and [[gargoyle]]s and [[harpies|harpy]] serve as
messengers and scouts. Repurposed [[warforged titan]]s
perform the heavy mining operations at the largest
pits. However, there is always room for cheap labor at
a Tharashk mine.

Despite the success he has enjoyed so far, Lord
Khalar is hungry to expand his operations and
chafes at the restrictions imposed by King [[Sebastes|Sebastes ir'Kesslan]]. Although he is careful not to endanger the position of his house, he is secretly funding a number of
teams that are operating in forbidden territory. He
doesn’t care if independent miners enjoy limited success, but if a lucky prospector found a remarkably rich deposit, Khalar might try to buy out their claim... and failing that, employ bandits or others to drive the settler from their claim.

The town of [[Whitecliff]] in [[Hope]], located near the largest [[dragonshard]] mine yet discovered, serves as the base of operations for Khalar's covert schemes, and when Khalar isn't lobbying in [[Newthrone]], he stays there.
Khalesh was once a theocratic nation dedicated to the
worship of the [[couatl]], with a long history of crusades.
During the [[Sundering]], it was revealed that many of the
noble families of Khalesh were actually [[shulassakar]]. The
[[Inspired]] combined the general disdain for Khalesh with
fear of these alien creatures, and the Khaleshites were
largely exterminated over centuries of war. The humans
inhabiting the region today are mostly descended from
resettled people of the west.

The Khalesh region includes a number of [[couatl]] ruins from the [[Age of Demons]]. The [[Inspired]] work to suppress knowledge of these ruins, which are hidden in
[[wild zone]]s and protected by the [[Edgewalkers]].

The people of Khalesh know that "demons" (the [[shulassakar]]) once ruled their land. As a result, they are especially devoted to the [[Path of Inspiration]], believing
that great faith is required to resist the temptations of the
//altavars//. They shun the ancient ruins and don't assist those
who want to explore them. 
Captain Khandan Dol is a male [[dwarf]] who leads
the [[Redcloak Battalion]]. Khandan is a local legend
who served in the [[Brelish|Breland]] army throughout the [[Last War]]; he was knighted by the last king of [[Galifar]] and swore an oath to the [[first queen of Breland|Wroann ir'Wynarn]]. He enjoys drinking and gambling. He takes discipline seriously,
though, and expects his soldiers to show complete loyalty to their country and its king. Because of his experiences in the war, he has a deep dislike for [[Thrane]]s
and followers of the [[Silver Flame]], but he rarely lets
these feelings interfere with his duties. 
The Khavish Theater, one of
four upscale theaters in [[Upper Menthis]] (the other
three are all located in the [[University District]]), stands
out for its ability to cater to the needs of [[gnome]]s and
[[gnome]]-sized races, with ample seating for people
of all sizes. Two stage troupes share
the theater—the Khavish Players, made up mostly of
human actors, and the [[Zilargo]] Repertoire Group,
consisting entirely of gnome performers.

The Khavish Players present more contemporary and widely appealing acts than the performers
at the other Upper Menthis theaters, incorporating
music, sex, and comedy—though not to the extent of
the burlesque found in [[Lower Menthis]]. The Zilargo
Repertoire Group generally performs works that
only interest [[gnome]]s, full of intricate histories and
a level of detail that audiences of other races find
excessive (and mostly boring). Occasionally, they
stage a comedy aimed at mixed-race audiences, generally featuring acrobatics and pratfalls. Recently,
the famous gnome [[bard]] [[Kessler]] agreed to play with
the Zilargo Repertoire Group, and that has brought
more mixed crowds to their performances.
! The Silent Folk

Under [[Dhakaan]]i tradition, the golin'dar—[[goblin]]s—are
traditionally laborers and artisans. While the [[guul'dar|bugbear]] and
[[ghaal'dar|hobgoblin]] train for war, the golin'dar maintain the hearth. But
there is a force that stands outside this tradition, lurking in the shadows of the empire. These are the //Khesh'dar//—the Silent Folk—golin'dar who use their speed and cunning as spies, scouts, and assassins.

While the Khesh'dar are part of the [[Uul Dhakaan]], they
have always remained separate from its traditions. They have
always served the emperor and their warlords, but they do so
in their own time. Their refuges have always been hidden, even
before the [[Kapaa'vola]]. The ascetic Khesh'dar aren't compelled
by money or power; they choose when to offer aid, and set a
fair price on their services. The Khesh'dar take no sides in
disputes between clans, and they do not seek to rule; in the
present day they serve both the [[Kech Shaarat]] and the [[Kech Volaar]]. However, they don't accept missions that they see as
threatening the empire itself; as a result, they rarely accept
a charge to kill a warlord or a [[dirge singer]].

Because of this long tradition of secrecy, even the warlords
of the [[Kech Dhakaan|Heirs of Dhakaan]] don't know where the vaults of the
Khesh'dar are located, or just how many of the Silent Folk are
out there. [[Goblin|goblin]]s are spread throughout [[Khorvaire]] and most
of the great cities of the [[Five Nations]] have significant goblin
populations, and this provides an easy opportunity for the
Khesh'dar to move freely throughout the modern world without
drawing attention. The Khesh'dar have been active throughout
the last century, spying on the chaat'oor ("defilers") and building up
resources and safe houses across the Five Nations. They've
recruited many eyes among the modern city goblins and the
goblins of [[Darguun]], though these contacts rarely understand
exactly who they are dealing with. The Khesh'dar likewise have
spies and agents among the golin'dar of every Keeper clan,
ensuring that there are few secrets hidden from the Silent Folk.

!! Two Traditions

The Khesh'dar are split into two primary traditions. The
''Taarka'khesh'' (“Silent Wolves”) are swift scouts, experts
in wilderness reconnaissance and targeted strikes. The
Taarka'khesh typically rely on [[worg]] cavalry; many develop
an unusual primal bond with their worg companions, and
the golin'dar view the worgs as partners, not beasts. Though
worgs don't have an innate tie to the [[Uul Dhakaan]], the beast masters of the Taarka'khesh can summon their worg
companions to them while dreaming.

 The second Khesh'dar tradition is that of the ''Shaarat'khesh''
(“Silent Blades”), spies and assassins trained to operate within
cities. Both usually operate covertly, disguised to blend in
with the local [[goblin]] population. However, each order has a
distinctive half-mask that is worn over the lower face during
formal interactions.

It's up to the DM to decide just how widespread the
Khesh'dar are. They may have a single deep vault and only a
few hundred operatives, or it could be that they are the largest
of the Dhakaani clans, with outposts hidden across [[Khorvaire]].
They may have been building networks for thousands of
years, simply waiting for the Keepers to rise before putting
these resources to use. But are they truly content to serve any
emperor? Or do the Khesh'dar have a hidden agenda of their
own? Is it possible that they're tied to the [[Lords of Dust]]...
or even to the [[dragon]]s of the [[Chamber]]?

The Khesh'dar could serve as an espionage agency patron
for a group of golin'dar adventurers. More likely, a single
character could be an undercover operative of the Khesh'dar,
either pursuing a deep, long-term mission or simply gathering
intelligence while waiting for specific orders. It's not unusual
for the Khesh'dar to seek to cultivate useful allies among the
//gath'dar// (non-dar). It would be unusual for one of the Khesh'dar to explain
their traditions to an outsider, but it's not impossible that a
Khesh'dar could form a bond to a gath'dar comrade over the
course of their adventures.

!! Notable Members

<<list-links-article "[tag{!!title}sort[title]]">>
The main continent of [[Eberron]], at least from the point
of view of the humans and their closest kin, is Khorvaire.
In ages past, the [[goblinoid]]s ruled the continent. By the
time the first [[human]] settlers arrived 3,000 years ago, the
goblinoid nations were already in ruin. Their time had
passed, and the stage was set for humans and the other
newer races to carve out their own age.

On Khorvaire, humans settled what became known
as the [[Five Nations]]. [[Dragonmark|dragonmark]]s began to appear, and
the [[dragonmarked families|dragonmarked house]] developed into the mercantile
houses as time went on. Humans interacted with the races
they encountered—trading and forming partnerships
with [[dwarves|dwarf]], [[gnome]]s, and [[halfling]]s, conflicting with
and driving off goblinoids and other monster races. In
time, humans and their allied races (including [[elves|elf]], who
migrated from [[Aerenal]] to forge a new way of life on Khorvaire) controlled the central region of the continent. They
settled large portions of what is now the [[Eldeen Reaches]],
[[Aundair]], [[Breland]], [[Thrane]], [[Zilargo]], the [[Mournland]],
[[Karrnath]], the [[Talenta Plains]], the [[Mror Holds]], and the
[[Lhazaar Principalities]].

Eventually, the great and wondrous kingdom of [[Galifar]] arose from the joining of the [[Five Nations]]—the original human settlements. During the reign of the Galifar kings
and queens, human lands expanded, the dragonmarked
houses stabilized, and wonders such as [[Sharn]], the City of
Towers, and the [[Korranberg Library|Library of Korranberg]] were established. The
shining kingdom was legendary, even in its own time, and
for good cause.

Many of the most amazing accomplishments of Khorvairian civilization came to pass during Galifar's almost
nine hundred years of existence. The mastery of magic and
the arcane arts, which developed through the efforts of
the [[Twelve]], King [[Galifar I|Galifar ir'Wynarn]]'s [[Arcane Congress]], and similar enterprises that followed, led to the construction of
great cities, wondrous monuments, magical conveniences,
and powerful weapons of war. Massive civil works projects,
bolstered by magic, paved the way for the metropolitan
centers of central Khorvaire. Magic helped crops grow and
herds prosper, so hunger rarely struck the inhabitants of
the kingdom.

In its day, Galifar stretched from the [[Barren Sea]] to
the [[Lhazaar Sea]], covering every mile of the continent. In
practical terms, the crown claimed the entire continent
but was only able to govern the central region with any
proficiency. The farther one traveled toward the edges of
the continent, the more wild, undeveloped, and uncivilized the land became. This fact was especially true in the
areas that would eventually become the [[Shadow Marches]],
[[Droaam]], [[Darguun]], [[Q'barra]], and [[Valenar]]. These frontier
regions attracted some humans, but were more likely to be
home to the monstrous races. The humans that did make
the trip to these areas fell into a few categories: explorers,
profiteers, missionaries, and settlers.

Profit made an excellent incentive for sending people
into the wilderness. There were resources to discover and
gather, trade routes to open, maps to create, and money
to be made. Some explorers set out for crown and glory others just to see what was out there. More often, however, explorers were attached to profiteering projects designed
to open up some part of the wilderness for use by the
civilized regions. This led to the construction of trading
posts and supply outposts from which additional expeditions could be launched.

Trading posts developed into settlements in some
locations, and there were always those who sought to find
new and better lives in new lands. Settlers had hard lives,
and many fell victim to monster raids and other hazards,
but a few settlements survived. The [[human]]–[[orc]] communities of the [[Shadow Marches]], for example, are in
this category.

Missionaries occasionally delved deep into the wilderness to bring the message of their faith to the natives.
Some, such as the [[Sovereign Host]], went to teach. Others
went to destroy, as with the [[lycanthrope]] extermination
launched by the [[Silver Flame]].

In 894 YK, King [[Jarot|Jarot ir'Wynarn]], the last king of [[Galifar]],
died. With his death, the kingdom of Galifar collapsed.
Civil war erupted as his scions refused to uphold tradition and instead battled for the crown. This conflict,
which became known as the [[Last War]] thanks to headlines
plastered across many years' worth of [[Korranberg Chronicle]]s,
lasted just more than a century. When it ended, the
makeup of the continent was changed. [[Cyre]], one of the
original Five Nations, was reduced to a blighted, decimated region called the [[Mournland]]. The peace conference that resulted in the [[Thronehold Accords|Treaty of Thronehold]] and ended
the war created twelve distinct nations from what was once
mighty Galifar. The recognized nations, who each signed
the treaty and are now in place on Khorvaire, are [[Aundair]], [[Breland]], [[Darguun]], the [[Eldeen Reaches]], [[Karrnath]],
the [[Lhazaar Principalities]], the [[Mror Holds]], [[Q'barra]], the
[[Talenta Plains]], [[Thrane]], [[Valenar]], and [[Zilargo]]. Regions
formed during the war but not yet recognized as sovereign include [[Droaam]], the [[Shadow Marches]], the [[Demon Wastes]], and the [[Mournland]]. Though the original [[Five Nations]] have been reduced to four, the common usage
remains: “By the Five Nations” continues to be the pledge
(or curse) of choice.
In the common calendar of [[Khorvaire]], days are 24
hours long, divided into day and night. Seven days make
up a week, four weeks a month, and twelve months a
year. The months correspond to the twelve [[moon]]s of
[[Eberron]] (see the table below), and the prominent moon carries the name of the month in which its
orbit brings it closest to the planet.

The seven days of the week, in order, are ''Sul'', ''Mol'',
''Zol'', ''Wir'', ''Zor'', ''Far'', ''Sar''.

The common calendar of Khorvaire tracks the years
since the founding of the kingdom of [[Galifar]], using
the abbreviation YK. The last king of Galifar, [[Jarot ir'Wynarn]], died on 12 Therendor 894 YK. The Day of [[Mourning]] occurred a century later, on 20 Olarune 994
YK. By default, a new Eberron campaign begins on 1 Zarantyr 998 YK.

See also [[Modern Age]].

|!Month |!Name |
| 1 |[[Zarantyr]] (mid-winter) |
| 2 |[[Olarune]] (late winter) |
| 3 |[[Therendor]] (early spring) |
| 4 |[[Eyre]] (mid-spring) |
| 5 |[[Dravago]] (late spring) |
| 6 |[[Nymm]] (early summer) |
| 7 |[[Lharvion]] (mid-summer) |
| 8 |[[Barrakas]] (late summer) |
| 9 |[[Rhaan]] (early autumn) |
| 10 |[[Sypheros]] (mid-autumn) |
| 11 |[[Aryth]] (late autumn) |
| 12 |[[Vult]] (early winter) |
The Khraal rainforest
fills the eastern spur of [[Darguun]]. Within its dense depths,
all manner of strange and dangerous creatures roam. An
extensive series of ruins, believed to be from the time of
the [[Dhakaani Empire|Dhakaan]], lies deep within the vibrant jungle.
A few towns and villages can be found along the edge of the
great jungle, but not even the most powerful [[hobgoblin]]s
or [[bugbear]]s have been brave enough to try to forge settlements within this dangerous wildwood.

The raiders known as the [[Khraal Lords]] hide within this jungle.
A vicious band of pirates and
marauders hides within the jungle of [[Khraal]] in southeastern [[Darguun]]. Led by the cruel [[hobgoblin]] ''Baalo One-Eye'', the Khraal Lords terrorize the
scattered [[goblinoid]] communities of southern [[Darguun]]. The
band also possesses two small warships it recovered from a
[[Cyran|Cyre]] base on the [[Ghaal River]]. Now Baalo and his followers
use the ships to raid vessels crossing [[Kraken Bay]], though
they avoid prey that is better armed or more sea-savvy than
themselves (which includes most ships they come across).
For this reason, the Khraal Lords have begun sending
scavenging forays into the [[Mournland]] from the southern
sea. With few connections outside [[Darguun]], Baalo has been
selling whatever relics he acquires to a House [[Deneith]] clerk
who tends an outpost in [[Wyvernskull]]. The clerk, a hireling
without blood ties to the house, pays a third of what the relics
are worth and has been selling them, in turn, to Prince
[[Oargev|Oargev ir'Wynarn]] of [[New Cyre]] for a handsome profit.
The ancient kingdom of Khunan was once the greatest of the four kingdoms of what is now the region of [[Syrkarn]] in [[Sarlona]]. The [[wizard]]s of this land were experts in the [[Externalist]] tradition of [[arcane magic]], directly channeling the power of the [[plane]]s to produce incredible displays of mystical might. 

In the early days of the [[Sundering]], Khunan invaded its neighbor [[Lamecha]], ostensibly for the southern ports that stayed largely free of [[Rhiavhaar]] piracy. [[Mae-Kree]], [[Sunyagir]], and [[Lamecha]] allied against Khunan. As a result, a devastating period of arcane conflict known as the magewars ensued. 

When it was done, great Khunan lay broken. Some say the kingdom was destroyed by the partial release and re-binding of a demonic [[overlord]] from the [[Age of Demons]], but precise records of what happened to Khunan have been lost or destroyed. Over the course of decades, tribes of [[ogre]]s crossed the [[Andnemun Desert]], eager to occupy the ruins of this once-great land. In their midst, however, new creatures arose that had
never before been seen on [[Sarlona]]n soil—the [[yuan-ti]]. More cunning than the [[ogre]]s and even [[oni]], they quickly established dominance over the remnants of Khunan.

Fragments of lost lore collected by [[Adar]]'s [[Keepers of the Word]] suggest that sages of the day believed the [[yuan-ti]] to be magical mutants, descendants of the Khunani
transformed into serpent-like aberrations that quickly rechristened their new kingdom "Syrkarn."

!! The Syrkarn Exodus

When the [[Inspired]] arrived on Sarlona, the whispered alliances they forged among the warring human nations were quickly turned against the yuan-ti. [[Syrkarn]] was invaded, and the yuan-ti were hunted to the point of extinction. However, even in the aftermath of victory, the human populations of [[Lamecha]], [[Sunyagir]], and [[Mae-Kree]] were suddenly ordered out of their ancestral lands. In 90 Unity (-212 YK), thousands of people were moved and resettled in [[Khalesh]], [[Dor Maleer]], and [[Corvagura]].

To this day, no official rationale for the exodus has
been given. However, those who have attempted to piece
together and connect the oral histories of the yuan-ti
with the vague lore of the [[Age of Demons]] have suggested
that in the course of eliminating the threat of the intelligent and powerfully psionic yuan-ti, the Inspired discovered the dark power behind their creation. 

!! Khunan Today

The savannahs of the modern province of Khunan are populated by [[human]]s and [[eneko]]. The largest city in [[Syrkarn]], [[Nderitese]], is built on the foundations of ancient [[yuan-ti]] ruins in Khunan, just north of the [[Tese Hills]]. The splendor of the Itzaina plains are one of the most beautiful sights in [[Sarlona]], filled with vibrant wildflowers and plants seen nowhere else on Eberron.

The kingdom once included the [[Aventus Islands]], but today they are considered part of the [[Riedra]]n province of [[Rhiavhaar]].
In {{!!title}}, you might...

* Fight [[mind flayer]]s and armies of hideous [[aberration]]s.
* Discover a wondrous realm lit by an [[inner sun|Vale of the Inner Sun]].
* Prevent a fiendish [[overlord]] from escaping its ancient prison.

The common creation myth contends that when the [[Progenitor Dragons]] fought, [[Eberron]] trapped Khyber in her
coils and became the world, imprisoning her evil sibling in a living prison. Bound within the world, Khyber spawns demons and monsters to plague the children of
Eberron. This might be myth and metaphor, but it's also
a description of fact: there are worlds within the world,
realms inhabited by [[aberration]]s, [[fiend]]s, and all manner
of monsters.

Any time someone descends below the surface of the
world, they enter Khyber. But the underworld takes two
very different forms. First is the natural realm, networks
of tunnels and caverns formed from stone and soil.
These passages are dark and dangerous, but they're exactly what you expect to find in an underground realm.
Such passages might be home to [[carrion crawler]]s, giant beetles, or clans of [[kobold]]s. But ultimately these mundane caverns follow the laws of nature.

There's another aspect to Khyber: go deep enough and
you find a seemingly endless array of [[demiplane]]s, each
stranger than the last. When descending into a chasm,
you could find a labyrinth inhabited by [[demon]]s or discover a realm consisting of the guts of a colossal living creature. Anything is possible in Khyber, and these
"worlds within" are home to all manner of terrors.

The [[demiplane]]s of Khyber are not concretely tied to
the world above. You could discover a passage in [[Breland]] that leads into a disturbing subterranean swamp filled with [[ooze]]s and slimes. After traveling what seems
to be a few miles, you might emerge from a different tunnel in [[Xen'drik]], half a world away from where you began.

The [[Mror Holds]] demonstrate this mystery. Over the
past century, the [[dwarves|dwarf]] discovered a vast subterranean kingdom within the [[Ironroot Mountains]]. Most
of these halls rest in the natural layers of Khyber. The
halls connect to one another in logical cartographic order. But as the ancient dwarves dug deeper, they opened
passages into the unnatural realms and unleashed the
hordes of the [[daelkyr]] [[Dyrrn]] the Corruptor. Passages
to Dyrrn's realm also exist in the [[Shadow Marches]], on
the opposite side of [[Khorvaire]]. The Corruptor's domain
doesn't necessarily stretch across the entire world; the
portals to the worlds within defy natural law.

These connections impact the world in a number of
ways. Dark forces can rise anywhere in the world, bursting out of a previously unknown portal to Khyber. This
fact dictates the primary mission of the Church of the
[[Silver Flame]]: to stand ready to defend the innocent from
such unnatural threats. Because the [[demiplane]]s connect to the world at random, you never know what you
might find when you venture into the depths. A newly
opened chasm in the sewers could be an entirely mundane hole in the ground, or it could be a passage to the [[Abyssal Forest of Khaar]].

The many layers of Khyber share similarity only in
their strangeness and deadliness. Eberron is the natural
world; Khyber is the source of [[fiend]]s and monstrosities
and the domain of the alien [[daelkyr]]. Some [[Cults of the Dragon Below]] believe that paradise awaits them in the
[[Vale of the Inner Sun]], but such cultists also consider
[[gibbering mouther]]s and [[mind flayer]]s to be creatures of
beauty. Wondrous treasures might wait in the worlds
below amid hordes of [[demon]]s and [[aberration]]s. 

!! {{!!title}}'s Influence in Khorvaire

In [[Khorvaire]], you might...

* Find a way to close a passage to Khyber before a horde of horrors emerges from it.
* Battle a [[mind flayer]] that has established a cult in the sewers.
* Stop the spread of a deadly drug or strange disease flowing from a well tied to Khyber.

Khyber is an ever-present threat. Any deep passage
could connect to a realm of [[fiend]]s or spew out an army
of [[aberration]]s. Despite the magnitude of this threat,
portals to Khyber are very rare, and they are stable
once found. If you dig a hole in the ground, the odds
that you'll eventually reach the [[Vale of the Inner Sun]]
are infinitesimal. And if a portal to Khyber existed in
the sewers of [[Fairhaven]], odds are good that it would already have been discovered. The risk arises when you're
exploring passages where no one has gone before.
The sewers of Fairhaven might be safe today, but if an
earthquake opens a new shaft or a group of cultists digs
deeper, a previously unknown passage to Khyber could
be uncovered. Wherever a passage to Khyber appears,
monsters and dark powers can rise up to threaten the
world above. 

[[Cults of the Dragon Below]] often have ties to Khyber.
Some serve [[aberration]]s or fight alongside [[dolgrim]]s and
[[dolgaunt]]s. Others can unintentionally
threaten a community by releasing something from the
underworld: an unnatural disease, a malevolent [[demon]],
or a strange and addictive drug. In dealing with such a
cult, the question is not only how to stop their current
machinations, but how to seal the passage or prevent it
from posing an ongoing threat.

Treasures from Khyber can take many forms. The
[[daelkyr]] create living tools, including [[symbiont]]s, but any [[magic item]] could be presented as an organic creation: a living cloak of the mountebank that
teleports its wearer through the plane of madness; a
dagger of venom made from chitin and muscle, similar
to a scorpion's barb; a crystal ball made by the daelkyr
[[Belashyrra]] that looks like a giant eye, casting visions of
distant places directly into the wielder's mind. Items recovered from fiendish demiplanes might be constructed
from standard materials but have a sinister aspect or
appearance, such as a sword of life stealing from the
[[Abyssal Forest of Khaar]] made of jagged, blackened steel.
Shadows trail the blade, and it issues a hungry moan
any time it draws blood. 

!!! Trinkets from {{!!title}}

| !<<dr d10>> |!Trinket |
| 1 |A pressed flower with vivid green petals; when you smell it, you hear eerie music |
| 2 |A tiny ball of putty; if you set it down, it begins to slowly crawl around |
| 3 |A perpetually warm disk of dark iron |
| 4 |A small journal with leathery pages; any words you write in it slowly disappear |
| 5 |A four-sided die carved with strange markings |
| 6 |A cameo with the silhouette of an unknown species |
| 7 |A preserved finger with purple flesh and four joints |
| 8 |A perfectly preserved eye; if you set it down, it rotates to follow your movement |
| 9 |A small box; when opened, you alone hear screaming |
| 10 |A preserved insect; you've never seen another like it |

!! Demiplanes of Khyber

<<list-links-article "[tag[demiplane]sort[title]]">>
''District Type:'' Undercity<br/>
''Buildings: ''Dungeons (8), temples ([[Dragon Below|Cults of the Dragon Below]], the [[Shadow]], the [[Mockery]], the [[Fury]]), poor lodging (20), poor food (40), average
trades (20), poor trades (60), average services (20),
poor services (80), poor residences (420)<br/>
''First Impression:'' This is an actual city beneath the
city, with homes and shops carved into the walls of the
Cogs. It is still a maze of passages, but the “streets” are
a little wider and the ceilings rise higher. The heat is
far less intense that in the industrial district, but the
air is still filled with the stench of smoke and garbage.
Goblins watch from the shadows, and in the distance
two ogres stagger out of a bar.<br/>
''Social Class:'' Lower class

Khyber's Gate covers the distance between [[Ashblack]]
and [[Blackbones]]. Due to the lack of lava streams, it does
not have any of the heavy industry found to the east or
west. For the most part, Khyber's Gate is a tenement
district, filled with tiny houses carved into the tunnel
walls. A great many of the monstrous immigrants from
[[Droaam]] have settled in Khyber's Gate, using strength
or supernatural abilities to drive the original residents
away. Beyond these monsters, the vast majority of the
inhabitants are [[goblin]]s. The other inhabitants of the
Gate are drawn from all races, though they share a
common desperation; an [[elf]] resident of Khyber's Gate
has little in common with one of the haughty inhabitants of [[Shae Lias]]. Many of the non-goblin inhabitants of the region are criminals who have fled from justice.
Some people have established businesses in the depths,
while others travel up to the surface and make a living
by begging or stealing. While the vast majority of the
trades and services offered in Khyber's Gate are illegal, there are a few people who practice useful mundane trades. Khyber's Gate is a community of sorts,
and brewers, tailors, and cooks are just as valuable
as burglars and assassins.

Khyber's Gate is an extremely disorganized
region. There is no central authority—it is simply a
question of who has the power to enforce their desires.
At the moment, [[Daask]] is the most powerful force in
the undercity. The [[Cults of the Dragon Below]] have a
strong following in the undercity, but as is often the
case, the cults are not a unified force; there are three
different sects, and they fight one another as often as
anyone else. The [[rakshasa]]s [[Zathara]] and [[Nethatar]]
are powerful and deadly inhabitants of the region,
but few people even know of their existence.

Khyber's Gate is part of the ruins of a goblin city that was abandoned thousands of years ago. No one knows how deep it goes. The monstrous inhabitants of the district have no love for treasure hunters or adventurers, and it's a dangerous place to explore.

In Khyber's Gate, an adventurer should always be
cautious—there's no telling when what appears to be a
lowly [[goblin]] might turn out to be a [[vampire]], a [[wererat|lycanthrope]],
a [[rakshasa]], or an even more dangerous [[fiend]]. 

!! Noteworthy Locations

* [[Shamukaar]]. This is the most successful tavern in Khyber's Gate. The place is a safe haven for all within it, regardless of species or politics; once you make it through the door, you can breathe easy. 
* The [[Wounded Dragon]]. A small shop located behind Shamukaar, as well as the abode of the [[changeling]] [[artificer]] [[Cask]].
* The [[Temple of the Six]]. A temple to the [[Dark Six]] and headquarters of [[Daask]].
* The [[Citadel of the Closed Circle]]. Over 200 years ago, the last surviving members of the destroyed arcane order known as the [[Closed Circle]] were sealed in the order's fortress in the undercity. 
* The [[Workshop of Tyrial Dashar]]. This former workshop of a [[wizard]] is now a fortress inhabited by two [[rakshasa]]s working on behalf of the [[Lords of Dust]].

Ki-rins are noble, celestial creatures native to [[Irian]]. They resemble [[unicorn]]-like stags, covered in golden scales rather than fur. In the mortal world, a ki-rin is celebrated far and wide as a harbinger of destiny, a guardian of the sacred, and a counterbalance to the forces of evil.
The herb known as kieros grows only in the region of [[Aerenal]] known as the [[Madwood]]. It is used by [[elvish|elf]] [[alchemist]]s for elixirs involving magical preservation.
Economic forces drive the wants and needs of [[Lower Tavick's Landing]].
Kilk ([[changeling]]) has the support of the [[Tyrants]], but has also won the loyalty of the other merchant lords of the district.
On the surface, it appears that Kilk looks out for the
mercantile interests of his ward, but he also monitors
and manipulates events across the city. Only [[Thurik Davandi]] can match Kilk for intrigues and scheming, and Kilk has a web of informants and spies across the city. He has done his best to make himself useful to the [[King's Citadel]] and the [[Guardians of the Gate]],
and as a result he has developed powerful allies within
both organizations.

Kilk is an invention of the [[Tyrants]]. There is
one [[changeling]] who plays the role more often than
others, but at any time Kilk could be any one of
the Tyrants—even [[Ek]] himself. Through Kilk, the
Tyrants have a second way to affect the city, and a
more respectable façade for dealing with groups such
as the King's Citadel. 
The most common deck of
playing cards used in [[Khorvaire]] has four suits, each
tied to one of the four elements. The largest tavern
in Hareth's Folly uses the King of Fire as its trade
sign. The tavern, a strange structure supposedly
inspired by Hareth's visions of [[Fernia]], consists of
black stone and brass, and [[continual flame]] spells have
been placed on fixtures throughout the building—
including tables and chairs. Half a dozen card games
constantly play out in the back rooms of the King,
and the place does a brisk business in gambling on
races and [[skyblade]] matches.

Lat Horasca, a former [[glidewing]] jockey, owns the tavern, which he won in a
dramatic hand of cards. Lat is a gambler, not an innkeeper, but he has married into House [[Ghallanda]] and
his wife Kela manages the day-to-day affairs of the business. Things
can get rowdy during the [[Race of Eight Winds]], but Lat
has wisely invested in an excellent bouncer, an [[ogre]]
named Korrla. When she's
not working, Korrla often fights at the [[Burning Ring]]
in [[Lower Menthis]].
[[Breland]]’s elite military service operates from the obsidian tower also known as "the Citadel" in [[Wroat]]. The headquarters contains offices, headquarters, residences, and training grounds for the force of warriors, mages, and spies
who serve at the king’s pleasure. Second to the king, the commander of the King's Citadel is Lord [[Kor ir'Wynarn]].

The Citadel is made up of these four divisions: 

* The [[King's Dark Lanterns]] gather intelligence and engage in covert operations. 
* The [[King's Shields]] protect the royal family and its closest associates.
* The [[King's Swords]] are elite soldiers used in the most dangerous military operations.
* The [[King's Wands]] are [[wizard]]s and [[sorcerer]]s, serving the crown in all arcane matters.

!! The King's Citadel in Sharn

The members of the King's Citadel are the direct agents
of the [[Brelish|Breland]] [[Crown|Boranel ir'Wynarn]]. As such, the King's Citadel stands
above the [[Sharn Watch]]. Its members have the authority
to take control of any investigation and to command the
service of any guard or sentinel. Typically the Citadel
leaves the daily chores of law enforcement (including
the conflicts between the criminal organizations of the
lower towers) in the hands of the Sharn Watch. The
Citadel is concerned with forces that threaten the entire
city, or even the kingdom. Foreign spies, mad necromancers, and ancient fiends—these are the foes of the King's Citadel, rather than pickpockets and burglars.

Of course, many of these greater threats might be beyond the capabilities of the typical Citadel agents. Much
as the [[Blackened Book]] does, the Citadel keeps a close
eye on unusual and talented individuals, and a party of
adventurers might be called upon to assist the Citadel in
a dangerous mission.

Unlike the Sharn Watch, the Citadel doesn't ask for
help; it demands it. The knights of the Citadel are the
representatives of the King of Breland, and any Brelish
citizen who refuses to help them is committing an act of
treason. The Citadel isn't required to provide compensation for the services it demands, but an adventurer
who wins the respect of the Citadel can certainly benefit
from the relationship.

The headquarters of the Citadel in [[Sharn]] is in the [[Ambassador Towers]] district of [[Middle Central]], in Andith Tower. That
structure also serves as the city jail. 
The King's Dark Lanterns is the intelligence division
of the [[King's Citadel]], an organization sworn to defend
[[Breland]] from its enemies and dispense justice in the
name of King [[Boranel|Boranel ir'Wynarn]]. As the secret servants of the
crown, members of the organization are granted the
authority to conduct intelligence operations on foreign
soil, execute covert missions across the globe, and prevent national secrets from falling into the hands of rival
intelligence agencies. The Dark Lanterns also have an
unwritten license to eliminate any creature that threatens their nation, its sovereign, or its citizens. 

//''Headquarters.''// The King's Citadel is based in [[Breland]]'s capital city of [[Wroat]], under the command of
the king's brother, Lord [[Kor ir'Wynarn]]. A [[changeling]]
named Captain [[Vron]] serves as the leader of the Dark Lanterns, with four subordinate knights marshal leading branch offices across Breland, in [[Sharn]], [[Starilaskur]],
and [[Xandrar]]. A much smaller branch office keeps an
eye on Brelish interests in the city of [[Stormreach]], in
[[Xen'drik]]. Small, temporary field offices are sometimes
established to coordinate missions outside [[Breland]];
these offices double as safe houses for agents in trouble,
and they are designed to be wiped clean at a moment's
notice if discovered by local authorities.

The [[Sharn]] office of the [[King's Citadel]] is in Andith
Tower in the [[Ambassador Towers]] district. Though a
knight marshal commands the office, most of the King's
Citadel members in [[Sharn]] are Dark Lanterns, and thus
under the authority of a scheming and ruthless [[gnome]]
named [[Talleon Haliar Tonan]].

//''Agents.''// The King's Dark Lanterns includes more
than 500 agents operating within [[Breland]]'s borders and
roughly one-fifth that number stationed abroad. They often work in teams, and also work closely with the other
divisions of the [[Citadel|King's Citadel]]. Sometimes they recruit local
talent, often under false pretenses, to help them accomplish their missions in foreign lands. 

//''Allies.''// By their nature, espionage agencies must be cautious in choosing their allies, and the King's Dark Lanterns is no exception. Its most trustworthy allies include the following facets of the Brelish government:

* ''King Boranel. ''The King's Dark Lanterns, as one would expect, serve the king of Breland, and he is their greatest advocate and ally. The king views loyalty as mutual: as long as an agent's loyalty is irreproachable, [[Boranel|Boranel ir'Wynarn]] is willing to exercise his considerable power on that agent's behalf.
* ''The King's Citadel.'' The [[Citadel|King's Citadel]] has three branches besides the Dark Lanterns. The [[King's Swords]] are elite special combat forces. The [[King's Shields]] protect the king and his closest family members and associates. The [[King's Wands]] provide magical support to the other branches of the Citadel as well as other Brelish forces. Some Dark Lanterns might think themselves superior to members of the other branches, but even so they recognize other Citadel agents as players on the same team. When your group needs a little extra help, the other branches of the Citadel are there for you. 

//''Enemies.''// Rare is the espionage agency that is loved.
Even within [[Breland]], the populace views the Dark Lanterns with suspicion, and powerful people outside the
royal family harbor resentment at the influence of the
Citadel. Many people and institutions outside Breland
view the Dark Lanterns as a hostile force. As a result,
the following groups account for just a few enemies of
the Dark Lanterns:

* ''Brelish Populists.'' As much as King Boranel is loved in his country, many Brelish voices argue that the era of monarchy is at an end, and the throne of Breland should be replaced by a government democratically elected by the citizenry. When these forces grow restless enough to plot and riot, the Citadel—and often the Dark Lanterns—work to bring them to heel. As a result, those who question the authority of the king are the most likely Brelish citizens to mistrust the Dark Lanterns or view them with open hostility. According to rumor some of those people even hold high positions in the Brelish government.
* ''Foreign Nations.'' Every nation knows the King's Dark Lanterns serves as an espionage force and do their best to track the movements of Dark Lantern agents within their borders. Foreign governments treat Dark Lantern agents with care to avoid sparking an international incident, but they are quick to arrest Dark Lantern agents suspected of wrongdoing.
* ''New Cyre.'' One of the world's largest concentrations of [[Cyran|Cyre]] refugees settled in eastern Breland under the leadership of [[Oargev ir'Wynarn]], the last prince of Cyre. Many voices among the Cyrans, possibly including Oargev himself, call for the establishment of an independent nation in what is now Brelish territory, but Boranel is determined to hold on to every acre of his land. The Dark Lanterns actively infiltrate the Cyran refugee community, rooting out those who would act against the king. 
A great tropical rainforest fills the southeastern portion of [[Breland]], from the [[Dagger River]] in the west to the [[Trolan River]] (now part of [[Zilargo]]) in the east, from the [[Howling River]] in the north to [[Khorvaire]]'s southern coast. The King's Forest is a hunting preserve that once belonged to the [[Galifar]] king and now falls under the protection of Breland's crown. The [[Knight Rangers|King's Shields]] patrol the rainforest, watching for poachers and trying to keep in check the bandits and brigands who hide within its depths. Since the [[Treaty of Thronehold]], the easter portion of the forest has been part of [[Zilargo]]. It isn't unusual for bands of brigands to flee across the border as they try to evade the Brelish rangers.

Once, the King's Forest covered the entire southern half of Breland, cut in half by the mighty [[Dagger River]]. Logging and cultivation have reduced the forest's size over the centuries, and a royal decree was necessary to preserve the portion of forest that remains. All kinds of tropical plants, insects and wildlife fill the King's Forest. Hunting, except by permit or royal invitation, is strictly prohibited. In the fall season, the king and his court, as well as honored guests, enter the King's Forest to participate in a Great Hunt.

The [[Jungle Boys]], a band of bloodthirsty brigands, hide within the King's Forest. 
The King's Shields is an agency of [[Breland]]'s [[King's Citadel]]. Led by Captain Sortan, a [[human]] [[paladin]], the Shields provide protection for the royal family and other dignitaries, as well as overseeing matters of royal security throughout the kingdom.

The ''Knight Rangers'' are a subdivision of the King's Shields that patrol the borders of [[Breland]] as well as the [[King's Forest]].
The King's Swords is an agency of [[Breland]]'s [[King's Citadel]]. Led by Captain Ellanar, a [[half-elf]] [[paladin]], the Swords consist of elite warriors trained to operate far and wide on public missions in service to the king.
The King's Wands is a division of [[Breland]]'s [[King's Citadel]]. Led by Captain Nebik, a [[gnome]] [[wizard]], the Wands provide magical support and undertake missions that require arcane talents. The agents of the Wands usually work as part of a task force that includes operatives from other divisions of the Citadel.
Where the domain of the [[Amaranthine City]] of [[Mabar]] feels like an empire
in its last days, the Kingdom of Bones is one that's already
fallen. If a [[layer]] contains a fortress, it's not preparing for a
final battle; it's what remained after the battle. The gates are
shattered, and bloodstains and broken weapons are scattered
across the floors. The people of this domain fought a dreadful
war and lost... but this being Mabar, their bones remain. The
skeletons of peasants continue their menial labors, seemingly
oblivious to the futility of their actions. Even in death, these
commoners are oppressed by their cruel lords. [[Wight|wight]]s,
[[deathlock]]s, and [[vampire]] spawn might serve as the soldiers of
the tyrants, while the overlords themselves may be vampires or
mummies, still ruling from their ruined keeps.

All of the kingdom's cursed nobles bow before the [[Bone King]],
who embodies the concepts of death and decay.
The Knights Arcane of [[Aundair]] is a large order of [[eldritch knight]]s that embodies the mixing of [[arcane|arcane magic]] and martial traditions. Many of the Knights Arcane conventionally raise their own mounds to serve as traditional cavalry, mixing spell and blade from horseback. The Knights Phantom are an elite unit of light cavalry that prefer to leverage the spell [[phantom steed]] over flesh and blood mounts, using a special [[magic item]] that extends the duration of the steed for several hours.

Perhaps the most famous of the Knights Arcane are the [[dragonhawk]] riders, whose mastery of magic solidified [[Aundair]]'s aerial superiority during the [[Last War]]. Still, this wasn't enough to prevent the major losses Aundair faced throughout the war. It takes years for a [[dragonhawk]] to grow to a rideable size and war-ready state. Furthermore, the reliance on the noble class for both mounts and riders limited the overall size and scope of aerial warfare.

The Knights Arcane are led by Lord [[Darro ir'Lain]].
Choose an object that you can see within 60 feet. The object can be a door, a box, a chest, a set of manacles, a padlock, or another object that contains a mundane or magical means that prevents access.

A target that is held shut by a mundane lock or that is stuck or barred becomes unlocked, unstuck, or unbarred. If the object has multiple locks, only one of them is unlocked.

If you choose a target that is held shut with [[arcane lock]], that spell is suppressed for 10 minutes, during which time the target can be opened and shut normally.

When you cast the spell, a loud knock, audible from as far away as 300 feet, emanates from the target object.
Kobolds are tribal reptilian humanoids about the same size as [[goblin]]s. They historically worshipped [[dragon]]s and dwelled in subterranean tunnels, making complex traps to protect their lairs.

The kobolds of [[Khorvaire]] trace their history to the dawn of [[Eberron]]. According to ancient legend, kobolds were formed from the drops of blood shed in the battle between [[Eberron, Siberys, and Khyber|Progenitor Dragons]]. A new generation of [[dragon]]s descended from [[Siberys]], [[Khyber]] brought forth [[fiend]]s and horrors, and [[Eberron]] gave birth to the creatures of nature—but the kobolds were already there, spawned from the first battle. True or not, this myth is the driving force behind kobold psychology and culture.

Two subraces of kobold exist in Khorvaire: the ''iredar'' (Draconic for "ones of earth"), who trace their ancestry to Eberron, and the ''irvhir'' (Draconic for "ones below") that descend from Khyber. These two races share a common appearance, but each race has a distinctive body odor that kobolds can instantly detect; in fact, a kobold can automatically identify the subrace of any other kobold within 15 feet. Kobolds find the scent of others of their kind to be soothing, and kobolds that spend long periods of time away from their own kind often become depressed.

Beyond scent, the key distinction between the kobold subraces is supernatural. Kobolds produce a surprising number of [[sorcerer]]s, which is a phenomenon they attribute to their supposed bond to the progenitor dragons. Irvhir sorcerers typically possess spells tied to corruption and darkness, while iredar sorcerers usually have powers of defense and binding. This is not an absolute rule, and exceptions exist. However, an iredar kobold that makes use of spells such as fear, darkness, or chilling touch may be viewed with suspicion by her companions, who see these as the powers of the Dragon Below.

Stories are told of a third subrace of kobolds: the ''irsvern'' (Draconic for "ones above"), children of Siberys. According to legend, these kobolds have wings and live in hidden communities on the peaks of the tallest mountains. In 867 YK, Tolas Koln of the [[Wayfinder Foundation]] set out to recover a copy of the Talarash Siberys said to reside in an abandoned draconic temple in the [[Ironroot Mountains]], and the last entry in the expedition journal describes an encounter with winged kobolds with astonishing sorcerous powers. Some say that this is a documented encounter with the irsvern kobolds, while others dismiss it as a hoax perpetrated by Koln himself.

Outsiders often assume that kobolds are primitive and savage since they live in unmodified caverns and rely on oral tradition instead of written records. Also, they live in small tribal communities and have never come together to create cities, nations, or empires. However, kobolds are just as sophisticated as [[human]]s or [[gnome]]s. While they prefer to live in natural environments instead of creating artificial structures, kobolds have a great gift for mining and stoneworking, and they often fill their lairs with cunning traps. But their culture is driven by tradition, and the kobolds have never sought to change or progress. They are the children of the [[dragon]]s, vessels of the [[progenitors|Progenitor Dragons]]' will; change will come when the great dragons mandate it.

!! Lands and Settlements

To date, kobold communities have been encountered in [[Q'barra]], [[Droaam]], and in the [[Seawall Mountains]] between [[Darguun]] and [[Zilargo]]. However, kobolds are extremely reclusive, and recent events suggest that kobold communities are hidden across [[Khorvaire]].

The kobolds of [[Eberron]] prefer to live in natural caverns. The irvhir kobolds make their homes deep beneath the surface, while the iredar kobolds usually live in mountain caves. The kobolds believe that these caverns are the veins of the progenitor dragons, and they often carve elaborate draconic designs on the walls. Kobolds prefer to live in tribes containing approximately 100 adults. The largest communities can have up to 600 adults. Generally, though, a community splits once its population rises too far above 100 adults, with younger kobolds moving away to found a new community.

Kobolds bond with [[dire animal|dire beast]]s. Dire creatures—especially burrowing animals such as rats, weasels, and badgers—are frequently found in kobold communities.

!! Power Groups

Kobold culture revolves around three forces. The ''stonescales'' (or ternmolik, in Draconic) perform the day-to-day tasks required for the survival of a community: crafts, agriculture, and the gathering of food when agriculture will not suffice. The ''claws'' (gix) are soldiers and hunters. And the ''blood seers'' (iejirastrix) are mystics who hear the voices of the progenitor dragons—[[sorcerer]]s and [[druid]]s whose magical powers are seen as proof of the kobolds' divine ancestry.

Typically the chieftain of a village is an old claw, though in a peaceful region a stonescale can hold the post. The chieftain manages the daily affairs of the community while the blood seers link the communities together. Seers often travel from village to village to meet with other blood seers, discussing their visions and issues affecting the race as a whole.

One other force that has an impact on kobold culture: the [[Chamber]]. While most dragons dismiss the kobold's claims of draconic ancestry, kobold blood seers can have strange (though often distorted) insights into the [[Draconic Prophecy]], and the Chamber occasionally makes use of kobold agents. This can result in teams of kobolds equipped with powerful magic weapons and items—an unpleasant surprise for a group of adventurers that underestimates the little reptiles.

!! Beliefs
Mainstream kobold culture is oriented around the worship of a particular progenitor dragon. The irvhir tradition is one of the oldest [[Cults of the Dragon Below]], though it has no connection with the [[aberration]]-oriented cults of the [[Shadow Marches]]. The iredar kobolds revere [[Eberron]] as the source of life and nature; this is a unique [[druid]]ic tradition with no ties to the sects of the [[Eldeen Reaches]].

The kobolds see themselves as the hands of the progenitors in the modern age. And in the past, visions of the blood seers have often been tied to the [[Draconic Prophecy]]. It is a mystery, since the kobolds themselves rarely understand the significance of their actions—but even the [[Chamber]] respects this uncanny gift.

Of course, not all kobolds are bound to these beliefs. A few tribes have split off from these traditions, ignoring the words of the blood seers. Irvhir kobolds often turn to the worship of the [[Shadow]] or the [[Mockery]], while independent iredar revere [[Boldrei]] and [[Olladra]].

!! Interaction with the Outside World

Kobolds speak Draconic. There is no evidence of the kobolds ever having possessed another language or having been taught by [[dragon]]s. Most kobolds love to talk, and a meal with a group of kobolds is a deluge of yapping voices.

Most kobolds prefer to avoid contact with the outside world. Irvhir kobolds are especially xenophobic, and the miners of [[Zilargo]] have been fighting irvhir kobolds for centuries. Iredar kobolds are more moderate in their views. They have little interest in foreign cultures and fight irvhir kobolds as often as they battle [[gnome]]s or [[human]]s.

In the wake of the [[Last War]], kobolds have had more active presence on the surface of [[Khorvaire]]. Kobold scavengers often rummage through battlefields and ruined villages. Previously unknown irvhir communities have risen from the depths to strike at weakened thorps and hamlets along the borders of the [[Mournland]]. Whether these are random attacks of opportunity or driven by the seers of [[Khyber]] remains to be seen.
Kol Korran is the Sovereign of World and Wealth. He guards travelers and guides traders. His symbols include a nine-sided gold coin or [[white dragon]]. 

Kol Korran guides fair negotiation; those driven solely by greed prefer the [[Keeper]] of the [[Dark Six]].
Prince [[Kolberkon]] is the leader of the [[Diresharks]] and governor of [[Port Verge]]. He has ambitions to unseat his rival [[Ryger ir'Wynarn]] become the next High Prince of the [[Lhazaar Principalities]]. His hope of leading the Principalities rests on his ability to outshine High Prince Ryger in every way, and Port Verge is his starting point: He hopes to develop the city to outshine [[Regalport]], the seat of the [[Seadragons]].

Kolberkon's alliance with House [[Lyrandar]] for financing his grand schemes is well known, but he has also privately struck deals with the Order of the [[Emerald Claw]]. He is well aware that these alliances carry risks, but Kolberkon is wily and cautious, and is ready for an attack from any of a dozen foes at all times. Unknown to most, he has employed several talented [[changeling]]s who he uses as decoys, sometimes posing as the Prince even at parleys and banquets.
''Capital:'' Lake Home<br/>
''Primary Resources:'' Copper, silver<br/>
''Enemies:'' [[Doldarun]]<br/>
''Celebrated Virtues:'' Diplomacy, flexibility, pragmatism. Never miss an opportunity.

The Kolkarun [[dwarves|dwarf]] aren't the wealthiest clan, but they are
skilled negotiators and are one of the more active clans in the
wider world. Some Kolkarun dwarves believe that their mythic
founder was [[Kol Korran]], though they don't like to brag about it.
They've established strong ties to [[Aundair]], [[Karrnath]], [[Zilargo]],
and the [[Talenta Plains]], and Kolkarun diplomats played a critical
role in securing Karrnathi support for recognition of the [[Holds|Mror Holds]].
Kolkarun has had many alliances and feuds over the centuries,
but always manages to trick others into fighting its battles.
Rivals say “Kolkarun's mother was a [[gnome]],” and assert that
Kolkarun dwarves are cowards and opportunists. The Kolkarun
shrug and respond, “Only a fool passes up an opportunity.”
Currently, they have strong ties to [[Mroranon]], which relies on
their support in the [[Iron Council]] and makes use of Kolkarun
as ambassadors and spies, and they have maintained strong
ties to [[Soldorak]] since the Exile. Many of the most powerful
members of the [[Aurum]] are Kolkarun dwarves.

Kolkarun dwarves are the most adept sailors of the Mror.
While they don't focus their efforts on fishing, they have long
been the primary sailors ferrying goods along [[Mirror Lake]] and
facilitating trade and transit within the holds. However, House
[[Lyrandar]] produces better ships than the Mror ever did, and
today Kolkarun sailors are often licensed by Lyrandar.

Kolkarun was quick to explore the [[Realm Below]] before the
threat was known, but even they proved unable to negotiate
with the horrors of the deep. Kolkarun holds a few outposts in
Sol Udar—often with the help of [[Droranath]] mercenaries—but
hasn't made strong offensive moves in recent decades.

Kolkarun dwarves are among those most likely to travel,
and Kolkarun entertainers, sailors, and merchants can be
found across [[Khorvaire]]. Most of the [[Iron Council]]'s spies are
Kolkarun; the charlatan background works well for both clever
merchant and freelance spy. [[Bard|bard]] is a reasonable choice for a
Kolkarun character, and they're among the few dwarves with a
true interest in lore.
The [[King's Citadel]] serves the king of [[Breland]] and
follows his every command. Day-to-day management
of the organization falls to [[Boranel|Boranel ir'Wynarn]]’s chief advisor and brother, Lord Kor ir'Wynarn. Kor collates reports from agents in the field, manages royal family
security, allocates resources to reinforce local law
enforcement agencies, and sends out spies and assassins to attend to major threats.

Kor also oversees [[Brokenblade Castle]] when King Boranel is away.
The chief of [[Galshani]]'s animal caretakers in the [[Mokush]] manor has noticed no
odd behavior from the animals when dealing with the
disguised [[Yrnuxi]], so they aren't a weak point in her ruse.
While he has no real love for Galshani, Korac still suspects
something strange is happening in the manor. He's
eager to help anyone who comes to investigate Mokush. 
The [[Koralanda River]] in [[Corvagura]] cuts through the heart of [[Riedra]]. Many of the major cities of the nation lie along this river's floodplain. The Koralanda flows into [[Koralandaluun]].
Koralandaluun is a large bay that lies between mainland [[Sarlona]] and the islands of [[Ohr Kaluun]]. Major rivers of the provinces of [[Nulakesh]] and [[Corvagura]] empty into Koralandaluun, including the [[Koralanda River]].
''District Type:'' Finance district<br/>
''Buildings:'' Banks (10), moneychangers (60), temples
([[Kol Korran]]) (2), upscale food (80), exotic trades (40),
upscale trades (200), upscale residences (160)<br/>
''First Impression:'' There doesn't seem to be anyone
here who is not wealthy, and the whole district
seems to be set up as a shrine to money itself. Every
shop sells only the fi nest goods, each huge house is
impeccably maintained, and the sound of money
changing hands fills the air. Even the guards—who
are everywhere—seem well off.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Platinum Heights]] (north); [[Mithral Tower]] (southwest); [[Skysedge Park]] (southeast); [[Oak Towers]] (bridge, north); [[Crystal Bridge]] (bridge, northeast); [[Ambassador Towers]] (below, west); [[Sovereign Towers]] (below, east)

Korranath, [[Sharn]]'s sprawling financial district, is
also the seat of the [[Aurum]]'s power in the city. Named
for the great temple of [[Kol Korran]] that lies at its heart,
Korranath is utterly dedicated to the darker side of the
god of wealth—the pursuit of wealth at any cost.

Korranath includes the neighborhood of Korran-Thiven. Its name means “Korran's Blade”
in Dwarven, and institutions there seem more obsessed with protecting wealth than with acquiring it. 

!! Noteworthy Locations

* [[The Korranath|Korranath (temple)]]. The temple of Kol Korran is an ostentatious display of wealth and a popular tourist attraction, since many believe praying at the Korranath ensures success in business. 
* [[Kundarak Bank of Sharn]]. This is the largest bank in Sharn and the center of House [[Kundarak]] urban operations in the city. 
* The [[Vaults]]. Located below the Kundarak Bank, the Vaults are Kundarak's heavily guarded storage facility.
* [[Wayfinder Foundation|Wayfinder Foundation (Sharn office)]]. The guildhall for this legendary [[association of explorers|Wayfinder Foundation]]. 
The grand temple of [[Kol Korran]] is one of the most incredibly ostentatious
and elaborate structures in [[Sharn]]. Surrounded by
a grand colonnade, the interior of the temple rises
in a grand dome a hundred feet across covered with
gold leaf and studded with precious gems. The tiles
in the mosaic floor are made of precious stones as
well, and all the sacral objects inside the temple are
solid gold. Sightseers and pilgrims regularly crowd
the Korranath, milling under the watchful eye of
the temple soldiers employed to protect the fabulous
wealth inside.

The high priest of the Korranath, appointed by
the mayor on an annual basis, is rarely a [[cleric]] though
he carries out rote ceremonial functions. The current
high priest, [[Kalphan Riak]], is a leader of the [[Aurum]].
The ancestral home of House [[Sivis]] and the oldest city in [[Zilargo]], Korranberg
has long been a seat of learning and a haven for folk who love the written word. Countless aristocrats of other nations come to study in the famous [[Library of Korranberg]]. The offices of the [[Korranberg Chronicle]] are located in the Bookbinder’s Quarter, along with a diverse range of scribes, printers, and the finest cartographers in [[Khorvaire]]. Old scrolls, maps, and weathered tomes can be bought
and sold in the quarter’s Paper Market, and explorers and adventurers make up a sizable portion of the clientele here. The [[Street of a Hundred Temples]] showcases almost every pantheon on Eberron, and includes the Codex Vault, [[Khorvaire]]'s largest
shrine to [[Aureon]]. 
By far, the most well known and widely read newspaper
is the //Korranberg Chronicle.// Thanks to its relentless and mostly
unbiased coverage of the [[Last War]], and through a distribution deal with House [[Orien]], the Korranberg Chronicle enjoys a loyal
and avid readership throughout central [[Khorvaire]].

A typical edition of the //Korranberg Chronicle// features
news from around the [[Five Nations]], [[Zilargo]], and the [[Mror Holds]], as well as stories of adventurers and exciting expeditions, business solicitations, royal proclamations, and
almanac information. While the main offices are located in
[[Korranberg]], the Chronicle employs chroniclers far and wide,
and maintains field offices in every major nation. House
[[Orien]] distributes each edition (the Chronicle appears three
days a week; [[Mol, Wir, and Far|Khorvaire calendar]]) along its mail and [[lightning rail]] runs, allowing the Chronicle to reach a huge audience. Indeed, almost everyone in the [[Five Nations]] knows the Chronicle slogan: “If it happens in the Five Nations, you'll
read about it in the //Korranberg Chronicle//.”
In the center of [[Adar]] rises a single massive mountain, over 32,000 feet above sea level, the peak of which is always shrouded in storm clouds. Korrandar is said to be the home of the [[Storm Guardians]], the [[blue dragon]]s that protect the mountain from those who would abuse its sanctuary. At the peak of Korrandar, hidden from view beneath thick clouds, is said to be an active volcano; some say that a powerful [[overlord]] is imprisoned within the mountain, and that the draconic guardians were actually sent to guard against the escape of this [[fiend]]. 

Korrandar's storms often prevent flight, and the [[Shroud]] thwarts dimensional travel. The elusive [[Storm Guardians]] are usually seen only if they
have business with intruders. Otherwise, the mountain is a wilderness of
the most unforgiving type. The supernatural energy surrounding the
mountain could also result in sudden squalls of blood
snow, death hail, and howl of the north, as well as ebony
ice and rare pools and rivulets of coldfire.

!! Spheres of Korrandar

A set of ancient and hidden halls—round, domed chambers built according to
the [[Draconic Prophecy]]—lie under the mountain's clouds,
glaciers, and rocks. The [[Storm Guardians]] call these halls
"spheres." Unobservant explorers are often fooled into
entering caverns under the spheres instead of the spheres
themselves. Within the spheres are trials of worthiness, and
ancient creatures bound to enforce these tests. Each test
is tied to the nature of a dragon god, and art on the walls
and/or ceiling of each chamber shows the constellation
representing the appropriate deity and the symbol of that
entity. No passages exist between the rooms—bound earth [[elemental]]s open the walls
between tests once they are passed. These walls are at least 5
feet of magically treated hewn stone, and breaching them draws the ire of powerful earth elementals. 

Personalize these tests so it seems as if the PCs were
predestined to come to the spheres.

!!! Test of the Messenger

A key found in a ruined [[dragon]]
hold elsewhere in [[Adar]] fits into a stand shaped like a dragon head made of brass and set with turquoise. The keyhole is set inside a golden star. This is the test of Aasterinian, Messenger of Io. If the key is placed in the stand, a secret door
on the far side of the cavern opens immediately. Without
the key, the secret door must be found and opened by force or otherwise breached. Regardless, the door is 20 feet up the far wall, across a 20-foot-deep pit leading into caves beneath the halls.

!!! Test of Fate

Here, through a gossamer wall of violet
energy, is the test of Chronepsis. A shade effect calls forth
duplicates of the PCs as they might have been if they
had chosen darker life paths and worldviews. Under the
unblinking eye of Chronepsis in the ceiling, the characters must face their sinister selves. 

!!! Test of Wealth

Set in the center of this place is a pool shaped like a sun and swirling with purple energy. Knowledgeable explorers might recognize the pool as a symbol of Astilabor, the Hoard Mistress. Eight golden statues of noble and winged kobolds
pour violet streams into the pool, and something sparkles
deep within. Those who give generously by casting wealth
into the pool might find their wealth increased tenfold
in the form of a desired [[magic item]]. Those who steal are
punished when the statues animate. 

!!! Test of the North Wind

This room's domed ceiling sparkles as a night sky, the constellation of Bahamut shining
most brightly. Those who look into the stars see the depredations of an evil dragon or some spawn of [[Tiamat]], and those who want to do so can be carried as if by a cold wind to the wicked wyrm's lair. Slaying the beast returns the questers
here and the evil one's hoard to the [[Teeth of the Three]]. 

!!! Test of Death

The massive skull of a [[black dragon]]
rests in the center of this chamber, signifying the baleful majesty of Falazure. Its eyes flash red as anyone enters, calling forth heinous [[undead]] to harry good folk. Evil
beings might find a boon here instead, such as the secret
of becoming one of the free-willed undead, if they are
willing to risk death to acquire it. 

!!! Test of Tales

The ghost of a very old [[copper dragon]]
sleeps here upon a golden book (the symbol of Hlal),
waiting for someone who can spin a tale or make a performance to rouse her heart
and free her from her duty. She
then imparts some important knowledge in the form of a
long-winded tale before sending the adventurers on their
way. Those who want to can read the golden book for a
special boon.

!!! Test of Justice

A magic golden longsword stands in the center of this room, balanced on a tiny platinum needle and flanked by stone dragons. This is the
test of Lendys. Spirits within the dragons judge each passer
for some misdeed, possibly causing the guardians to attack
if the defense is inadequate. Victorious characters are purified through this trial by ordeal. Death claims the guilty.
A paragon of law might be able to take the sword and the
needle from this room. 

!!! Test of the Firelord

Those who manage to make it
through the previous halls come to a volcanic shaft that has
cool lava at the bottom. A wide spire of rock stands in the
middle, red and glistening. An observant character might
notice roughly carved symbols of Garyx,
the All-Destroyer, on the outside of the archway leading into the shaft. Across the tube is a platform that apparently allows access to another part of the complex—but this
platform is higher in the shaft than the entry point and
obscured by the spire. Further, a decoy cave opens in the
northern wall near the lava.

The moment anyone enters the volcanic tube, it
springs to life as if erupting, forcing the characters to make
a mad dash for the other side. Run this event as if each party
member faced some danger each round from flying debris,
dangerous gases, or hot magma. Add fire [[elemental]]s and
other fire creatures if you prefer combat to a furious rush
or carefully plotted escape. The fires settle down as the
characters exit the shaft, almost as if it were all an illusion.
Monsters do not pursue those who make it to the platform,
but they might follow those who enter the caverns. 

!!! Test of Life

Beneath a black ceiling etched with a
silver seven-pointed star, the skeleton of a [[couatl]] is reverently coiled in a funerary basin, polished bones and bright
feathers showing through ornaments of gold and precious
stone. Those who return this creature to life pass the test of
Tamara and gain the aid of a powerful [[celestial]] for
a while. The couatl warns those who return it to life of the
test of power. Creatures sitting in the basin rapidly recover from any injuries. Any corpse laid in it is granted a constant [[gentle repose]] spell. At the same
time, the basin reduces the body to skeletal remains. 

!!! Test of Power

A grand idol of [[Tiamat]] stands in the
center of this chamber, and the evil one suffers none to pass
this chamber. The idol becomes an aspect of Tiamat—a [[red dragon]] that can breathe the breath weapon of any [[dragon]] instead of just fire. It does not
chase those who flee back to the test of life. Those who best Tiamat's aspect are rewarded with passage to the [[Teeth of the Three]], and possibly more. 

!!! Chamber of the Teeth

This great, round chamber represents Io the Concordant, Creator of Dragonkind,
and in its center is set the [[Teeth of the Three]]. The
room glows in eerie colors—the light of the Teeth reflected
off polished surfaces. While anyone who returned
through Korrandar's halls would have to face many of
its tests again, the Chamber of the Teeth allows egress
through its ceiling. This way passes through the lairs of
several mighty [[Storm Guardians]], but the dragons show
those who have passed the tests through the winding caverns, letting them leave after having a short conversation
and presenting a small token of remembrance. 
Shekkal Korranor was the founder of the [[Clifftop Adventurers' Guild]], and he loved nothing more than a tall tale. After he retired
from adventuring, he established the Korranor as a stage focused
on tales of adventure — stories based on the heroes of the Clifftop
Guild. Performances at the Korranor are sure to be filled with
acrobatics and wild action. 

While small, the Korranor theater has an exceptional array of prop weaponry and pyrotechnic magics, as well as a set of trampolines.
The city-fortress of Korth has served as [[Karrnath]]’s capital since before the days of
the kingdom of [[Galifar]]. Some of its buildings date back
to the earliest [[human]] settlements on [[Khorvaire]]. The Korth skyline rises along
the southern shore of the [[Karrn River]] on the edge of the dense [[Nightwood]]. Its walls and towers bristle with the weapons of war, and military marches through the city help bolster the spirits of the Karrns as well as intimidate foreign diplomats. 

The city has well-kept streets and somber, symmetrical structures,
each in a fashion suggestive of its militant origins. Five major wards—Highcourt, Temple, Commerce, Community, and Low District—make up the city. Each ward contains residences and shops, but
exemplifies its particular function. For example, Highcourt Ward houses the [[king’s palace|Crownhome]], governmental buildings, and the homes of dignitaries. The Commerce Ward holds the [[dragonmarked|dragonmarked house]] emporiums and [[enclave]]s, warehouses, shops, and marketplaces; the forges of Korth produce some of the finest armor and weapons in [[Khorvaire]]. The headquarters of [[Cannith]] East, the [[Korth Enclave]], is located here. Above the Commerce Ward floats the imposing [[Ziggurat of the Twelve]].

The [[Last War]]’s ravages are evident in the damage to
the city’s steep walls and a majority of its buildings.
[[Cyran|Cyre]] and [[Aundair]]ian forces besieged the city several times, but each time the defenders threw back the attackers. Rebuilding is slow—some scars are not easily erased.
The Korth Edicts, signed in the city of [[Korth]] by King [[Galifar ir'Wynarn]] and representatives of the [[Twelve]] over a [[thousand years ago|Modern Age]], prevent the [[dragonmarked house]]s from owning land, holding noble titles, or maintaining
military forces (with an exception for [[Deneith]]), among other restrictions. The
edicts were established when the [[Five Nations]] were
united under [[Galifar]]. Today, many in the houses feel the edicts have
become obsolete in the wake of the [[Last War]]. 
[[Zorlan d'Cannith]] is nominally in charge of this [[enclave]], but many of [[Jorlanna d'Cannith]]’s functionaries (and sometimes Jorlanna herself) spend time in [[Korth]] because the Council of the [[Twelve]] is headquartered here. This walled compound is the site of much scheming among the factions of House [[Cannith]].
Korunda Gate was once the center of Kundarakhold, the lands belonging to [[Clan|Mror clan]] [[Kundarak]]. With the rise of House Kundarak, it has become the first
and greatest [[enclave]] of the house, and its deep vaults
are the core of Kundarak’s operations.

The city has changed little since the rise of the
house, though [[Kundarak]] has ceased all mining
operations throughout the hold as a condition of its
[[dragonmarked house]] status under the [[Korth Edicts]] and laws of the [[Mror Holds]]. The mines that once spread beneath the city now serve as treasure vaults for the house and its clients. However, Kundarak retains the mining rights to its ancestral territories, leasing those rights to other [[clans|Mror clan]] in return for a percentage of the wealth they extract. The house views such activities as part of its overall business dealings. More cynical observers label this activity blatant
interference and influence peddling.
The prince and founder of the [[Wind Whisperers]] is Koulton Brightwind. Born Koulton d'[[Lyrandar]], this gifted heir and bearer of the [[Mark of Storm]] fled his family in a prototype [[airship]] ten years ago, and has so far managed to evade the house’s efforts to retrieve the ship. House [[Lyrandar]] has put a price on his head, but Prince Brightwind has made arrangements with House [[Thuranni]], and so far his head remains attached to his shoulders.
The chot'uul monks, who guard the dreams of [[Dhakaan|Heirs of Dhakaan]], craft
objects that are drawn to [[Dal Quor]] with a dreamer. When
you dream, your kra'uul ("dreamforged") objects accompany you. The physical
object remains with your body in Eberron, but the idea of it
travels with you and you can use it while exploring Dal Quor.

Any kra'uul made of an otherwise-mundane object is a
common magic item. Kra'uul made of other magic items are
the same rarity as the standard version. While the techniques
of crafting kra'uul objects are known only to the chot'uul, the
DM can introduce other dreambound objects. A cursed sword
might follow its bearer even into dreams, while a powerful
artifact could be even more glorious when seen in Dal Quor. 
Krag is an island in the [[Lhazaar Principalities]]. The city of [[Port Krez]] on the north coast of the island is the seat of the [[Cloudreavers]].
Kraken Bay lies the coast of [[Darguun]], [[Valenar]], and the [[Mournland]], and is part of the larger [[Thunder Sea]]. Once the staging ground of [[Cyre]]'s powerful navy, now it is filled with bizarre aquatic monstrosities and mysterious shipwrecks.

The [[warforged colossus]] WX-42, "Hanamar", stands at the bottom of Kraken Bay, near the coast of [[Valenar]], buried up to its knees in sand and flooded, but it is otherwise intact.
The Krertok Peninsula in the [[Tashana Tundra]] of [[Sarlona]] is the apparent origin of the bloodthirsty [[Kalaak]] barbarians. Few are aware that in this region, a strange and terrible relic from the [[Age of Demons]] can be found—a gargantuan statue of an ancient [[overlord]], the physical remains of a [[demon]] long ago dispatched and bound. The [[Kalaak]] worship this ancient evil, whose vague stirrings of malevolent consciousness power their terrible savagery.
Krezent is an ancient fortress-citadel from the [[Age of Demons]], established by the [[couatl]] during their million-year war with the [[overlord]]s, and is possibly the last couatl fortress on Eberron. It is located on the edge of the [[Blade Desert]] in the [[Talenta Plains]], and it extends down into the depths of [[Khyber]], where powerful [[fiend]]s from that ancient conflict are bound.

Today, the [[halfling]]s of the plains shun the fortress and the surrounding area, believing it to be cursed. In truth, it is still inhabited by the [[shulassakar]], [[couatl]]-like [[human]]s who tend the ancient city and keep intruders at bay.

Located in the dwarven realm of [[Mroranon]]hold, Krona
Peak serves as the seat of the [[Iron Council]] and thus is
the [[Mror Holds]]' equivalent of a capital. This center of
commerce provides a major connection to the western
nations. [[Kol Korran's Throne]], [[Khorvaire]]'s largest temple to the [[Sovereign|Sovereign Host]] [[Lord of World and Wealth|Kol Korran]], dominates the cityscape. The [[Iron Council]] meets in the [[Ferrous House]].

The major trade road in the Holds runs west from the city, making it the conduit
for commercial traffic to the rest of the continent. Virtually all goods entering or leaving the [[Ironroot Mountains]] come through Krona Peak first. Clan [[Mroranon]]’s control of the capital reinforces its position at the head of politics in the Holds, but Krona Peak’s importance is a constant source of tension. The city keeps tariffs to a minimum in order to placate the other [[clans|Mror clan]].
Ultimate authority in the Church of the [[Silver Flame]] rests with the [[Keeper of the Flame]], but actual governance—the work of the individuals who chart the nation’s course—occurs in the [[Council of Cardinals]]. With such power comes opportunity for abuse, since the cardinals answer to none except the Keeper of the Flame, and she is still a young girl. Most church officials resist the temptation to exploit the benefit that their position affords them, keeping to the tenets of their faith, but a few have drifted, giving in to their baser impulses to reap the full rewards of their stations. Of these unprincipled members, High Cardinal Krozen represents the worst, embodying the theocracy’s dangers and the
excesses of its power.

!! Krozen's Accession

High Cardinal Krozen is the most powerful individual in [[Thrane]]. He, like
other senior religious officials, climbed through the
church’s ranks, serving for a time as a holy warrior
and priest, attaining the rank of archbishop for his
zeal and unmatched piety. When a senior member of
the [[Council of Cardinals]] died a decade ago, conservative officials in the government succeeded in getting Krozen appointed to replace him. The hardliners
viewed then-[[Keeper|Keeper of the Flame]] Tagor’s attempts to moderate
[[Thrane]] policies as a threat and wanted to strengthen their hand in his final days. In truth, it was hard to object to Krozen’s appointment—few could match his knowledge of the sacred texts or his passion for the church.

In the early years of his tenure, Cardinal Krozen
worked tirelessly to strengthen the church in the
lives of the common people of [[Thrane]], and to keep
Thrane’s military strong. In a few short years, he
assumed the position of High Cardinal. Peaceful
times and the ascension of a young, tolerant, and
highly compassionate [[Keeper of the Flame]], however,
were not to his liking. Indeed, this situation seemed
to quash his idealism. Krozen turned his attention
toward consolidating his control over the council,
using his network of allies to bend his peers to his
way of thinking.

Krozen’s rise to power did not come without casualties. He has made numerous
enemies over the years, usually officials he removed
from office or slandered to render them powerless.
His critics spread a slew of accusations about his
methods and motives, ranging from dirty tactics all
the way up to consorting with [[fiend]]s. These claims
have spawned investigations now and again, but each
turns up nothing that calls into question Krozen’s
service or loyalty.

Rumors also circulate about the extent of the High Cardinal’s influence, questioning his deference to the [[Keeper of the Flame]]. During the final years of the [[Last War]], the nation did little without Krozen’s assent, and most military initiatives came from his office. More than one [[Thrane]] official worries that the High Cardinal views himself more as the nation’s ruler rather than as a loyal advisor.

!! Krozen's Obsession

For the most part, the accusations against Krozen are true. Ever the pragmatist, he
simply removed those he saw as obstacles to achieving his goal—attaining complete power. Although he was ruthless, his loyalty and devotion to the [[Silver Flame]] remained true... at least until the [[Mourning]].

[[Cyre]]’s destruction rocked Krozen to the core,
leaving him reeling with fear. The nation’s destruction inflamed the seeds of paranoia that had already begun to blossom in his shadowed mind. Krozen
rarely meets with other [[cardinals|Council of Cardinals]] in any great
number, demanding that his few visitors treat with
him in private chambers under the watchful eyes of
his loyal guards.

Krozen’s eccentric behavior has done nothing to
diminish his power and influence. When the council meets, Krozen sends a proxy to explain his views and represent his interests. Since his representative
is rarely the same person from meeting to meeting,
he reinforces the mystique and suspicions about
his true character, leading many officials to wonder
what he is hiding. For several years now, his power
has gone unchallenged. His peers submit to his
demands out of fear of the reprisals they have seen
occur time and again.

!! Krozen's Secret

The [[Mourning]] changed everything for Krozen, though not because he gave
one whit for the [[Cyran|Cyre]] people. Rather, he sees the Mourning as a grave risk to the nation he considers his to govern as he pleases. If a weapon caused the Mourning, Krozen must find it and claim it for himself. If the Mourning was a magical phenomenon, he must find the trigger and control it to ensure that [[Thrane]] remains secure and to force his enemies to their knees. Krozen makes full use of the
church’s power, particularly the [[Argentum]]—a secret
society of treasure-hunters who retrieve relics for
the church—to seek out clues to the nature of this
catastrophe.

Krozen’s strength comes from the vast network of
agents in his service and a coalition of loyal supporters within the church. As he gained power, he was ever watchful for anything he might use. Sometimes,
he would use damning information to remove his
enemies, but more often he would tuck away the
tidbit for later use. With spies, assassins, and loyal
fanatics spread across [[Thrane]], he can use these
agents to blackmail his enemies, discredit them, or
otherwise have them removed from power.
 
he High Cardinal also employs sinister means to
attain his information and treasures. Bit by bit, he has
succumbed to the temptation of using dark magic, calling up foul [[demon]]s, dealing with [[devil]]s, and employing other hideous creatures to tease out the
secrets of his enemies. He conceals these activities
well, destroying anyone who would dare bring these
acts to light. Still, whispers abound, and Krozen’s
minions are ever watchful for those who would delve
too deep into the High Cardinal’s business.
If you have the [[Mark of Warding]], you can place these shackles on an incapacitated creature. The shackles adjust to fit a creature of any size from [[kobold]] to [[troll]]. In addition to serving as mundane manacles, the shackles prevent a creature bound by them from using any method of extradimensional movement, including teleportation or travel to a different [[plane]] of existence. They don't prevent the creature from passing through an interdimensional portal.

You and any creature you designate when you use the shackles can remove them at will.
''Leader:'' [[Morrikan d'Kundarak]] <br/>
''Headquarters:'' [[Korunda Gate]] ([[Mror Holds]])  <br/>
''Dragonmark:'' [[Mark of Warding]]

//My family has the finest vaults you can imagine. They forge the locks that secure royal jewels. And I learned to pick those locks when I was barely out of the crib.//

<div align="right">—Cutter, burglar and Kundarak excoriate</div>

If you want to keep something safe—jewels, secrets,
prisoners—Kundarak is there to help. The [[Warding Guild]] of House Kundarak trains locksmiths, security specialists, and more. It maintains the prison of
[[Dreadhold]], along with a number of smaller prisons. As
useful as these services are, it's the [[Banking Guild]] that
truly defines the house. Kundarak's lands in the [[Mror Holds]] include deep veins of precious metals, which
the [[dwarves|dwarf]] used to establish the banking industry of
[[Khorvaire]]. Anyone who makes a living from coin—from
bankers to goldsmiths—likely learned their skills at
House Kundarak. The security of banks bearing the
Kundarak [[manticore]] emblem is legendary. The house
also provides a special service to those who can afford
it: a system of extradimensional vaults, allowing a client
to store their goods in one location and retrieve them at
any other Kundarak [[enclave]].

House Kundarak has a close alliance with House
[[Sivis]]. Like the House of Scribing, Kundarak has worked
to earn the trust of its clients and to establish a reputation for unshakable integrity. The house has no love of
renegade dwarves using their marks to turn a profit, and
such rogues strive to avoid the eye of Kundarak.
As the dwarves of the [[Mror Holds]] have come into
increasing conflict with the [[daelkyr]], Lord [[Morrikan d'Kundarak]] has instructed house heirs to establish connections with the [[Gatekeeper|Gatekeepers]] [[druid]]s. The druids have
much in common with the house, being the creators of
the wards that protect [[Eberron]] from the daelkyr. 

!! Kundarak in the Mror Holds

The mythic founder of House Kundarak was a stonemason
who built the first shelter for the [[exiles|Mror History]]. While House [[Sivis]]
estimates that Kundarak's [[dragonmark]] appeared less than
three thousand years ago, in the stories, Kundarak had always
borne the mark and used its powers to protect their people.
Dwarves of all clans relied on Kundarak, both for wise counsel
and their expertise in building. Kundarak laid the foundations
of the fortresses that stood against the armies of [[Galifar]].

But soon after the [[Great Sorrow|Mror History]], Clan Kundarak became House
Kundarak, expanding its influence across [[Khorvaire]]. While
they held onto their ancestral lands, the [[Korth Edicts]] required
Kundarak to sever its ties to the other [[clans|Mror clan]], putting the
interests of its clients ahead of those of the Mror. While this
caused initial tension, it also brought an influx of gold and
influence, and served as a bridge between the holds and the
outside world. Kundarak helped bring dragonmarked services
to the [[Mror Holds]], and also helped build connections between
houses and clans—House [[Deneith]] and the [[Droranath]], House
[[Jorasco]] and the [[Frosthaven clans|Toldorath and Tordannon]]. So while there was some estrangement, the clans generally accepted Kundarak's
new role—though [[Soldorak]] has long decried Kundarak as
abandoning traditional values and selling out the dwarves.

House Kundarak has no seat on the [[Iron Council]] and is not
considered a [[Mror clan]]. Kundarak has done its best to stay out of
the [[War Below|Mror History]], though Kundarak engineers played an important
part in building defenses during the War Below, and were well
paid for their services. Despite the lure of treasures and the
mysteries of the past, Kundarak has no interest in courting
disaster beneath the very seat of its power; it has fortified
all [[deep portals|Realm Below]] beneath its spires. Should it choose to send
expeditions below, it would do so with extreme care and caution.

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
The Kundarak
bank, operated by the [[dwarven|dwarf]] [[dragonmarked House|dragonmarked house]] [[Kundarak]], is the largest and most important
bank in [[Sharn]]. Kundarak holds more loans than the
other nine banks in the city combined, including
many loans supporting key building projects, past
and present. From its perch at the top of Kundarak
Tower, the bank wields a great deal of behind-the-scenes influence over every part of politics in Sharn.

[[Daphanë d'Kundarak]] is the leader of the [[Kundarak Enclave|Kundarak Enclave (Dragon Towers)]] in [[Sharn]] and the president of the bank.
She divides her time between the house enclave in
[[Dragon Towers]] (in [[Middle Central]]) and the bank,
but favors the bank.
[[Kundarak]] Enclave can be
found in [[Sivis]] Tower, as the house commands a major
presence in the [[Korranath]] district (in [[Upper Central]]),
where the [[Kundarak Bank|Kundarak Bank of Sharn]] is located. Even so, Kundarak Enclave is large and impressive, with marble columns supporting lofty ceilings with dazzling mosaics
of precious metals and stones. Security, as one might
expect from the House of Warding, is extremely tight.
[[Daphanë d'Kundarak]] oversees the [[enclave]], but spends
most of her time at the Kundarak Bank.
A fearsome war chief among the [[Kalaak]], and some say leader
of that depraved people, Kunigaal the Desecrator is the embodiment of
Kalaak ideals. He is pitiless, ruthless, fearless, and utterly
blasphemous. His pale, hairless body, particularly his face,
is crisscrossed with terrible scars; some have meaningful
patterns, but others are telltale signs of wounds survived.
Kunigaal can cow even frenzied Kalaak raiders with his
unyielding gaze. Metal spikes adorn his face and the skin
of his body, and his fingers have been magically altered so
that wicked bone and iron claws replace the ends of them.
Kunigaal never goes alone into battle—superstitious and
wary of his own followers, he surrounds himself with evil
spellcasters and a private stable of elite, fanatically loyal
female Kalaak barbarians that are also his wives. 
Explorers tend
to need healing more than merchants and crafters, and [[Kurala d'Jorasco]] does a brisk business in [[Clifftop]]. She possesses the [[Mark of Healing]], which enables her to cure diseases and mend wounds, but she is also an adept of [[Boldrei]], and her faith enables her to channel divine magic to remove curses. While she runs her own
business, Kurala is a respected member of House
[[Jorasco]] and is often called in to help the healers
in [[Dragon Towers]]. Kurala's House includes three
lesser healers, and Kurala's husband Janasar, who specializes in the care and
treatment of animals.
The Kushtuar Hills are a chain of rolling mountains in [[Syrkarn]], stretching across [[Khunan]] and [[Sunyagir]]. They are the source of the [[Kushtuar River]], and include Mount Athay, the point of highest elevation in [[Syrkarn]].
The Kushtuar River in [[Syrkarn]] flows from the [[Kushtuar Hills]] into the [[White Lake]]. It forms most of the border between the provinces of [[Sunyagir]] and [[Khunan]].
A former member of the [[Karrak]] cults in [[Syrkarn]], Ky is one
of the best sources of information on cult activity—she
remains one of the few people to flee their ranks and live
to tell about it. Though she prefers the crowds of [[Ardhmen]] and [[Nderitese]] to the open plains where ambush is
easy, Ky is a loner. She remains a disciple of Karrak,
and the scythe she carries has never seen a wheat field.
Those seeking information on the cults inevitably find
themselves pointed in her direction, but seekers must
spend time and money (mostly at the ustah taverns) to
win her trust. 
A mere nine [[night hag]]s dwell in the [[Demon Wastes]]. The hags
spend most of their time engaged in mystical studies beyond
the realm of mortal ken (and mercifully so), exploring the
ancient ruins for arcane tomes from the [[Age of Demons]].
Most of the night hags react with hostility when approached
by strangers, but a few can be dealt with—provided the visitor has something to offer and minds her manners. The widely respected hag Kyrale serves as an ambassador and mediator among the [[fiend]]ish powers active in the Wastes, and mortals wishing to negotiate with the [[Lords of Dust]] or other fiends often seek her out to act as an intermediary.
//Slime, water, blood—fluids are the purest essence of life. We begin as a drop of liquid, and in the end we return to it. Drink the bounty of the Bile Lord. Heed the voice of the Lurker Within, for it's already part of you. Follow our teachings, and after death, you'll find eternal peace in the whispering choir.// 
<div align="right">—A cultist of Kyrzin</div>

The [[daelkyr]] Kyrzin deals in living liquids and foul fluids. It is
infamous as the source of all [[ooze]]s; some believe that there
are living rivers of [[gray ooze]] and green slime in the depths of
[[Khyber]]. Many cults revere [[gibbering mouther]]s and hear guiding
words in the ravings of these beasts; such cults refer to Kyrzin
as the Regent of Whispers. While oozes play a major role, its
cults can be associated with liquid in any form. One cult might
venerate an ancient well, while others say that the local lake
holds the ghosts of their ancestors. Any delusion associated
with liquids could be tied to Kyrzin.

Kyrzin's traditional cults are strongly established in the
[[Shadow Marches]], but Whisperers keep to themselves.
Marchers refer to the common cold as “the drip” or the “Bile
Lord's kiss;” and stories say that Kyrzin has sown giant oozes in
the rivers of the Marches. While many Marchers know stories
of the Prince of Slime, it's typically seen as a dangerous but
largely neutral force. Mold plays an important part in Marcher
medicine, and the Bile Lord is seen as a force that can cause
disease when angered, or help to prevent it. So most prefer to
ignore and avoid Kyrzin, and Whisperers are largely left alone.
This opalescent, symbiotic goo comes sealed in a jar and slowly shifts and moves, as if endlessly exploring the jar's interior. To attune to this item, you must first drink the contents of the jar, unlocking the following properties.

//''Resistant.''// While attuned to Kyrzin's ooze, you become highly resistant to all poisons and acids.

//''Amorphous.''// You can cause your body to assume the amorphous qualities of an [[ooze]]. For the next minute, you (along with any equipment you're wearing or carrying) can move through a space as narrow as 1 inch wide without squeezing. Once you use this property, it can't be used again until the next dawn.

//''Acid Breath.''// You can belch caustic acid in a stream up to 30 feet away. The acid burns creatures' skin and the fumes irritate their senses. Once you use this property, it can't be used again until the next dawn.

If you die while the ooze is inside you, it bursts out and engulfs you, turning your corpse into a [[black pudding]] allied with [[Kyrzin]].
It's hard to keep a consistent rhythm in Kythri. It takes effort to maintain any
pattern of behavior; without even thinking about it, people in Kythri adjust their behavior to avoid repetition. This is the essence of Kythri. On the one hand it's a vision of chaos, but it's also about change, adapting to overcome the unexpected, and challenging traditions.

Kythri is commonly imagined as utterly unstable, with landscapes taking shape only to boil away within moments. And this is true of the heart of the realm, known as the [[Sea of Chaos]]. But at the edges of the sea, there are islands that linger. The environments of these [[Shifting Islands]] steadily and constantly change; a vast desert might be a lush rainforest in a few hours. But the land itself remains constant, and creatures can live on these islands, adapting to the endlessly changing environment.

While Kythri constantly changes, its elements are usually natural. A jungle becomes a desert, a blizzard becomes a sandstorm—but it's comprised of //sand//, not tiny marble busts of King Boranel. This distinguishes Kythri from [[Xoriat]] or [[Dal Quor]]; while constantly changing, it's generally change between plausible options, unlike the unreal environments of the Realm of Madness and the Region of Dreams.

!! Universal Properties

All things change in Kythri, even time and the future. The only
thing that's truly reliable is that nothing's reliable.

* //''Broken Rhythms.''// A creature can't take the exact same action twice in a row. 
* //''Fluid in Form.''// The range and duration of [[transmutation]] spells is doubled.
* //''Embrace the Unknown.''// [[Divination|divination]] magic is severely attenuated in Kythri. Divination spells cast on other planes can't affect or target creatures, places, or objects on Kythri.
* //''Constant Change.''// Nothing remains exactly the same in Kythri. Every so often at irregular intervals, a creature finds that something changed about it or its possessions. Each player should describe what's changed about their character; this could be as simple as your cloak changing color or your sword now having a stylish [[Aundair]]ian design when it was originally [[Karrnath]]i. You could choose for the change to be physical—your skin, hairstyle, or sex—or mental—you suddenly hate olives or no longer believe in the [[Sovereign Host]]. These changes have no mechanical impact: the coins in your pocket may change in design, but copper coins won't turn into platinum. If you want a change to have mechanical impact—for example, if your [[cleric]]'s faith or race changes and you want your character sheet to reflect that—discuss the possibility with your DM.
* //''Chaotic Time.''// Time is fluid in Kythri, inconsistent both with the Material Plane and within its own islands. Adventurers who spend a day in Kythri could find that a year has passed in Eberron, or they could be trapped in Kythri for a year and find that only an hour has passed when they return.

!! Denizens

Most of Kythri's denizens fall into one of three categories. 

!!! Wild Things

The islands of Kythri are inhabited. But how can a creature
survive in an environment that can be a desert today and a
glacier tomorrow? The answer, of course, is that the creature
must change with the environment. Kythri's islands include
some creatures that appear to be natural beasts, though they
change as the region around them does; the wolf in the forest
becomes an arctic wolf when the land turns into a glacier, and
turns into a jackal when it's a desert. Even beyond their practical
changes for survival, Kythrian creatures might be constantly
shifting their plumage, behavior, and more fundamental
biology, whether from moment to moment or day to day.

However, not all of Kythri's wild things transform into familiar
forms. Part of the plane's core concept is evolving in response
to change, and Kythri is home to many creatures that blend
the features of two or more natural beasts: monstrosities such
as the [[owlbear]], [[griffon]], and [[chimera]]. It's commonly accepted
that at least some of these monstrosities first appeared in
Kythri, and that they first appeared in [[Eberron]] either by passing
through portals or due to the influence of [[manifest zone]]s.

Just as the environments of Kythri are chaotic but largely
blend natural elements, Kythrian monstrosities typically blend
the forms of natural creatures. While there are [[hippogriff]]s and
[[griffon]]s in Kythri, inherently alien creatures like [[kruthik]]s and
[[grick]]s aren't found here. The wild things of Kythri also include
natural shapechangers, notably a wide variety of [[mimic]]s—even
colossal ones that can assume the shape of natural features
such as hills or mountains. It's quite likely the mimics of Eberron
either immigrated from Kythri or were created by its influence,
much like the [[sahuagin]] of the [[Eternal Dominion]] use the blood
of the [[kar'lassa]] bound to Kythri to create their [[plasmid]]s.

Unlike other planes where these wild things would likely be
[[manifestation]]s, the wild things of Kythri are mortal creatures.
They live, reproduce, and die following (mostly) natural means,
and have to find sustenance and shelter in their islands. Between
the strange flow of time and unusual environments, this can
lead to dramatic surges in populations or sudden extinctions.
However, the plane itself seeds new life into islands that
somehow become depopulated, and if all the griffons in Kythri
were to die, new ones would eventually evolve. So even though
Kythri doesn't have manifestations, it ensures a steady stream
of mortals exist—and when they die, it replaces them.

!!! Slaadi

The [[slaad]]i make up the only native civilization of Kythri. They
aren't a monolithic society; some live in massive cities such as the ever-shifting [[Cornerstone|Cornerstone (Kythri city)]], while
others are tiny rustic communities. 

!!! Githzerai

The [[githzerai|gith]] aren't natives of Kythri, and their presence is
an act of defiance: through unparalleled mental discipline,
they create bastions of order in the heart of chaos. If they
seek order, why don't they dwell in [[Daanvi]]? It's not that they
simply desire order, but to strengthen their will by imposing
it on a reality that absolutely defies it. The struggle is the
purpose. Beyond this, they're served by the fact that even
great powers can't scry into Kythri. 

The [[githzerai|gith]] don't dwell on the [[Shifting Islands]] of Kythri.
Instead, they've created their own islands in the [[Sea of Chaos]]:
vast monastery vessels the size of small towns, moving through
the eddies of chaos and defying transformation. The githzerai
devote themselves to meditation and self-improvement, with little
interest in what transpires beyond their monasteries. They have
no particular love of outsiders—they consider all creatures of
[[Eberron]] to be warped shadows of their stolen reality—but
neither are they inherently hostile. A persuasive group of
adventurers could find brief shelter in a githzerai monastery,
especially if they bring something interesting to trade or have
compelling stories to share. However, should the outsiders
offend the githzerai, they'll feel no remorse in eliminating
them; there's nothing evil in shining light to dispel a shadow.

!!! Greater Powers?

No one knows if there's a greater power shaping Kythri.
The death [[slaad]]i are powerful beings, but there's no known
equivalent to [[Dolurrh]]'s [[Queen of the Dead]] or [[Dal Quor]]'s
[[il-Lashtavar]]. Some sages assert that there must be a
consciousness at the heart of the [[Sea of Chaos]], a sentience
behind the chaos, but if so, its presence has never been proven.

!! Layers

Unlike many [[plane]]s, Kythri isn't divided into [[layer]]s. Its structure
is closer to that of [[Dal Quor]]; it has a planar core, with islands
of reality suspended within the [[Sea of Chaos]]. The difference is
that the core of [[Dal Quor]] is stable—while in Kythri, the closer
you get to the heart of the sea, the more tumultuous it becomes.
There are many [[slaad]] communities spread across the
[[Shifting Islands]], and at least half a dozen [[githzerai|gith]] monastery
vessels in the Sea of Chaos. [[Cornerstone|Cornerstone (Kythri city)]] and [[Zertherun IV]] are examples that can be used as inspiration.

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Here are ways that Kythri can affect the Material Plane.

!!! Manifest Zones

Kythrian [[manifest zone]]s are often unpredictable in minor
ways. Weather patterns may deviate from the surrounding
region and change on a moment's notice. The plane's universal properties also carry over to many manifest zones. Any Kythrian zone with the //Constant Change// property might
produce monstrosities. A zone with the //Fluid in Form// property
amplifies the effects of [[transmutation]] magic and can have
dramatic effects on the success of magebreeding; these zones
are extraordinarily valuable to House [[Vadalis]].

Manifest zones can occasionally serve as gateways, allowing
creatures from Kythri to slip through into Eberron, intentionally
or accidentally. Many monstrosities make their home in the
wilds, whereas other creatures—like [[slaad]]i—can present very
unusual encounters, depending what culture they're from.

!!! Coterminous and Remote

Kythri's cycle of coterminous and remote periods is completely
unpredictable, lasting anywhere from days to centuries.
Curiously, its proximity to Eberron has no discernable effects.

!!! Kythrian Artifacts

Materials from Kythrian [[manifest zone]]s are often important
components of [[magic item]]s tied to [[transmutation]] or [[illusion]];
[[shiftweave]] uses fibers of plants harvested in Kythrian zones. The manifest zone of [[Hal'kyth]] is a vital part of the transmutation industry of the [[Eternal Dominion]].
Items that come from Kythri may have unpredictable effects. For
example, a [[hat of disguise]] from Kythri may function normally
when its wearer keeps in mind exactly what they want to look
like; but if they don't consciously enforce an appearance, it slowly
but continuously changes minor elements of their disguise.

!! Kythrian Stories

Visitors from Kythri can cause excitement, and an accidental
journey to a [[Shifting Island|Shifting Islands]] can be an easy source of adventure;
can the adventurers find a way back before they are consumed
by the Churning Chaos? Here are a few other ideas.

//''Vadalis Park.''// The [[dragonmarked house]]s are looking for new
sources of revenue in the wake of the [[Last War]]. Jalan d'Vadalis,
a brilliant magebreeder, has created a resort where people can
interact with a vast array of intriguing monstrosities, including a
few of his own design. This park is built on a Kythrian [[manifest zone]], and Jalan hasn't yet recognized that the //Constant Change// property is sabotaging his security systems and dangerously mutating his monstrosities. He was so preoccupied with whether
he could do it, he didn't stop to think whether he should...

//''Terror at Sea.''// While at sea, the adventurers pass through a
Kythrian manifest zone at exactly the wrong time, and a blue
or red [[slaad]]i from the Union of Flesh slips aboard the ship. It
infects or implants a few passengers, doing its best to hide. Can
the adventurers defeat this lurking threat before it's too late?
Or will a wave of newborn slaadi take over the ship?

//''Superstars.''// A gray [[slaad]] reveals its presence to the
adventurers. It's from the Confluence of Reality and wants
to bring the adventurers to [[Cornerstone|Cornerstone (Kythri city)]] to represent their
cultures. What could go wrong? Well, while the Confluence is
usually peaceful, this time it wants the adventurers to represent
their culture in a massive extraplanar gladiatorial match. Can
they defeat champions from across [[Eberron]] and the other
planes? Or is the only hope of survival to flee into the [[Sea of Chaos]] and try to find another way home?

//''The Hunt.''// The adventurers stumble into a pitched battle: a
trio of [[githzerai|gith]] ambushed by [[Transcendent Flesh]] cultists. Only
one survives the battle. This zerth has a psychic connection to
the [[illithid|mind flayer]] master of the cult cell, and is determined to bring
down this mind flayer. Will the adventurers work with the zerth
and end this threat? And is this solely about the hunt, or does
the githzerai have a hidden agenda?
A massive scar mars the otherwise flat plains that stretch beyond the [[Shadowcrags]] and [[Icehorn Mountains]]. Like wounds gouged out of the earth by gigantic talons, the twists and turns of the canyons and depressions form a torn and ruined expanse of terrain giving way to the plains and windswept deserts of
the [[Wastes|Demon Wastes]]. This is the Labyrinth, where the [[Dragon Below|Khyber]] meets the [[Dragon Between|Eberron]] in a land
of ruin and desolation.

This vast network of canyons and mesas forms a natural maze of stone. The wind in the canyons sounds like the keening of hundreds of ancient banshees, and sometimes
the air inexplicably fills with the smell of fresh blood or
the bitter tang of sulfur. The terrain here is most sinister, and it is
easy to become lost along its unmarked paths, or to
fall victim to the natural hazards spread throughout.
Boiling pools of mud, geysers, flash floods, lava flows, and
crumbling walls, and crevices sometimes open that drop
into the very heart of [[Khyber]] itself frequently claim the lives of reckless travelers. Roving bands of [[demon]]s and savage [[humanoid]]s hunt here in search of flesh and plunder.

The [[Ghaash'kala]] clans patrol the Labyrinth, keeping the horrors of the Wastes from pushing into the mountains. They discourage travelers from venturing
into the [[Demon Wastes]], often to the point of threatening violence. Though they stop short of attacking
explorers set on entering, the Ghaash’kala ensure that
nothing they encounter leaves the Wastes—including
adventurers who ignore their initial warnings. They maintain a number of small settlements that resemble fortresses
built into and around secure caves in the canyon walls.
The largest, most permanent of these are Ghaash Dar in
the northern canyons and [[Maruk]] Dar in the south.
A wandering historian, Laddin Tho is the best
source of general and historical knowledge on the plains of [[Syrkarn]].
The problem for most of those who seek his knowledge is
pulling the useful details from his endlessly meandering
tales. Tho is nearly as tall as the [[eneko]] laborers he drinks
with constantly, but his gaunt frame gives him the look
of an oddly mustached insect. His apartments in [[Nderitese]] are rumored to hold one of the largest collections of arcane scrolls outside the enclaves of the [[Keepers of the Word]], but Tho's days as a hired spellslinger (which he happily recounts in excruciating detail) are long behind him. 
Lady Ash is a [[githyanki|gith]] merchant who sells the plunder
claimed by her city-ship, //Zaeran's Sword//, in the [[Immeasurable Market]] of [[Syrania]]. Her goods depend on the Sword's most recent target.
Lady Illmarrow is a legend—an ancient [[lich]] said to dwell in a castle of bone and ice in the coldest regions of the [[Lhazaar Principalities]]. Some stories say that she is served by a legion of [[undead]] and that she maintains a court of [[vampire]]s and [[ghost]]s in her palace of ice. Other tales claim that when anyone dies in Lhazaar, Illmarrow chooses whether to take their soul before it passes on to the [[Keeper]] and [[Dolurrh]].

But Lady Illmarrow is no folk tale. She is the greatest [[necromancer|necromancy]] in [[Eberron]], and after centuries of silence, she is setting ancient plots into motion at last. She is the power behind the Order of the [[Emerald Claw]], but her motives for founding the order are buried in her past. Lady Illmarrow has no interest in ruling the living. Rather, she seeks to become Queen of the Dead.

!! The Mark of Death

Illmarrow is a fiefdom on the isle of [[Farlnen]]—home to a community of elves exiled from [[Aerenal]], who have practiced [[necromancy]] for centuries. But Lady Illmarrow's roots extend far beyond her island domain.

Long ago, it was revealed that the [[elven|elf]] [[line|Aereni noble line]] of [[Vol]]—a house that practiced the art of necromancy and bore the [[Dragonmark|dragonmark]] of [[Death|Mark of Death]]—was engaged in secret blood rites with a clan of [[dragon]]s. The discovery of this pact triggered an unprecedented alliance between the [[Sibling Kings]] of [[Aerenal]] and the dragons of [[Argonnessen]]. The Sibling Kings proclaimed that House Vol would be exterminated to the last member, and the [[Mark of Death]] would be eliminated from the world.

The line of Vol had long been rivals of the [[Undying Court]], and many whisper even today that the attack on House Vol was nothing more than an excuse to eliminate a political rival. But others believe that what the Undying Court truly feared was a path shown in the [[Draconic Prophecy]]—that a child born of [[dragon]] and [[elf]] could become a godlike avatar of death.

!! Illmarrow Rises

Even as dragons and elves fought to destroy the line of Vol, a child was born to the house: Erandis. A scion of elf and dragon, Erandis bore a Mark of Death unlike any other. In time, it might have been her gateway to immortality and unrivaled power, but she was hunted down and killed long before she could master the mark's magic. Her mother, [[Minara Vol|Queen of All Tears]], escaped with her daughter's body to the icy reaches of Farlnen, far from the conflict. There, Minara unleashed all her necromantic power to raise Erandis as a [[lich]].

As an [[undead]] being, Erandis lost the use of her dragonmark. Thus, when the [[diviners|divination]] of [[Aerenal]] asked if the line of Vol had been exterminated and the Mark of Death destroyed, they received a vision affirming that the bloodline of Vol was no more. To the world, the last survivor of that bloodline is known as Lady Illmarrow. But in truth, she is Erandis Vol, heir to the Mark of Death.

When Minara restored Erandis as a lich, she hid her daughter's phylactery, weaving enchantments into it that cause Erandis to be reborn in a random safe haven after she is destroyed. Thus, even Erandis herself doesn't know the location or form of her phylactery.

!! Restoring the Mark

Though she takes great pleasure in fighting the dragons and elves who destroyed her ancestors, Lady Illmarrow has a more important goal: restoring her [[dragonmark]] and unlocking godlike powers. The agents of the [[Emerald Claw]] who serve her fight either for the good of [[Karrnath]] or for personal gain, but Illmarrow cares for nothing except increasing her necromantic knowledge and finding a way to restore her lost mark.

!! Lady Illmarrow and the Blood of Vol

The [[Blood of Vol]] and Lady Illmarrow are both legacies of the line of [[Vol]], but they aren't one and the same. As far as the world knows, the line of Vol was exterminated. Followers of the Blood of Vol who have heard of Lady Illmarrow believe that she's a champion of their faith, but they don't worship or serve her. And the powers of priests of the Blood of Vol don't come from Lady Illmarrow.
The Lady in Shadow is the [[archfey]] representing the witch who stands outside
society, possessing dangerous knowledge and power.
She curses those who offend her or steal her things,
but her knowledge can be quite valuable—if she is
approached with care. Her [[barony]] is the [[Shadow|Shadow (barony)]].
//She grew up in village in Daskara, not far from the modern [[Thrane]] city of [[Sigilstar]]. She loved the country and taking care of the livestock. When she was 13, her family fell ill with a disease no one had ever seen before. They died, and the plague spread to the rest of the village and their stock. Only two things were unaffected: the rats and the girl. When everyone was dead, she fled to the town of Sarus. You've never heard of Sarus, because it doesn't exist anymore. It was burnt by those who sought to keep the plague from spreading. The rats kept the girl alive, and were the only thing that kept her close to sane. In time she learned to control her power. Even so, she couldn't bear the burden of the deaths on her conscience. She declared that the girl had died with her family. She was someone new, someone without a name. She was the Lady of the Plague.//

The Lady of the Plague was a mysterious figure who played a prominent role during the [[War of the Mark]]. Though she is commonly seen
as a monster, the records of the war suggest that she was
loath to use her power unless forced to, and might even
have despised the aberrant mark she carried. Together with Lord [[Halas Tarkanan]], she released the full power of her [[aberrant dragonmark]] at the end of the war and caused the destruction of early [[Sharn]], and some claim that the Lady's death-curse still lingers in the depths of [[Old Sharn]] to this day, over a millenium later.
The [[Demon Wastes]] offer numerous
access points to [[Khyber]], but none as intimidating as
the Lair of the Keeper. Yawning wide in the northern
reaches of the Wastes, the site is a deep chasm whose
crumbling walls drop away into darkness.

The place takes its name from a legendary chamber in its depths. Beyond the River of Blood and Bone, the Chamber of Secret Thoughts, and the Legion of the Forgotten Dead, there dwells a great [[dragon]]—some say a [[dracolich]]—said to be an aspect of the [[Lord of Death and Decay|Keeper]]. This creature houses souls trapped
in Khyber [[dragonshard]]s sprouting from the walls.
Foul cultists of the [[Dark Six]] make forays to the site, offering up their wicked prayers. 

The Lair of the Keeper and the chasm that surrounds it are powerful [[manifest zone]]s to [[Dolurrh]], the Realm of the Dead.
Lake Aat is a freshwater lake in the [[Eska Mountains]] of the [[Tashana Tundra]] in [[Sarlona]]. It flows into the [[White Sea]] via the [[Tanni River]].
Lake Brey in [[Khorvaire]] forms part of the border between [[Breland]] and [[Thrane]], and feeds the [[Brey River]].
Lake Cyre in [[Khorvaire]] forms part of the border between the [[Mournland]], the [[Talenta Plains]], and [[Valenar]], and it feeds the [[Cyre River]].

The [[warforged colossus]] WX-73, "Artorok", sits at the bottom of Lake Cyre amid the scaffolding of a sunken House [[Cannith]] workshop, flooded but otherwise intact.
The pitch-black waters of Lake Dark shimmer in the farmland in eastern [[Karrnath]]. Fed by the cold runoff of the [[Iron River]], Lake Dark is a large body of mist-shrouded water that collects in a depression in the fields
between the [[Icetop Mountains]] and the [[Talenta Plains]]. The
small towns of [[Lakeside]] and [[Irontown]] flank Lake Dark, and
smaller farming communities encircle it. 

Many believe that spirits haunt Lake Dark, and that the pitch-black waters provide a pathway to [[Dolurrh]], a location from which the living can sometimes speak with the dead. Lake Dark is in fact a [[manifest zone]] connected to the realm of the dead, and spells related to [[necromancy]] have greater power when cast in proximity to
its dark, restless waters.
Lake Galifar is a lake in [[Khorvaire]] bordering [[Breland]], [[Aundair]], and the [[Eldeen Reaches]]. It is also the largest lake on the continent. The [[Wynarn River]] connects Lake Galifar to [[Eldeen Bay]] and the [[Bitter Sea]] to the North. [[Silver Lake]] lies directly south.
The [[Demon Wastes]] linger under a pall cast by
the numerous volcanoes rising from the heart of
this blighted realm. Spewing clouds of ash and toxic
smoke, the volcanoes of the Wastes cover the land in
rivers of lava that consume everything in their path.
The Lake of Fire is an ancient peak southwest of the
[[Labyrinth]], and the site of one of the largest of the
Wastes’ volcanoes. Some say that the vast expanse
of lava within the bowl of the mountain imprisons
a terrible [[fiend]], perhaps one of the [[overlord]]s.
Others hold that ancient heroes once ventured here
to cast dangerous artifacts into the furnace of molten
rock. 

The Lake of Fire attracts [[demon]]s, fiendish cults,
and the deadlier [[Carrion Tribes]] to its shores—all
paying homage here to their dreadful masters. Whether or not the stories of bound [[overlord]]s and sunken relics are true, a fiery magic permeates the crater, and [[sorcerer]]s and [[wizard]]s who travel to the lake
can draw on its power to perform astonishing feats of
[[evocation]].
Lakeside is a small town in [[Karrnath]], located between the [[Icetop Mountains]] and [[Lake Dark]].
Identical twins Lalia d'Deneith and [[Tasra d'Deneith]] are the leading [[Sentinel Marshals]] in [[Sharn]], headquartered in the [[Three Towers]] [[enclave]]. They can be inconsistent about which fugitives they chase down, leaving some high-profile but potentially longterm pursuits to other marshals. Nonetheless, they
are a fugitive’s worst nightmare: implacable, but likely to toy with their quarry before ending the chase. Lalia specializes in tracking fugitives through the wilderness.

Unknown to all but agents of the [[Dreaming Dark]], both sisters are hosts to [[tsucora]] [[quori]] spirits.
Lamannia embodies primordial nature, untapped and untamable. It's often called the Twilight Forest, and is depicted as a realm of colossal trees and massive beasts. However, the forest is just one of the facets of Lamannia. Every natural
environment is represented in various [[layer]]s that exemplify
and exaggerate their features. Windswept desert, raging ocean, endless plains—all can be found here. In other [[plane]]s, these environments are backdrops to the story the realm is telling. In Lamannia, the environment is the story. It doesn't need the help of
[[fey]] or [[fiend]]s to make its point, because the land itself is the point.

Some scholars assert that Lamannia served as a
blueprint for the Material Plane—that here, the [[Progenitors|Progenitor Dragons]]
perfected the ideas of storm and stone. They believe that
the natural world is infused with the essence of Lamannia,
and that [[druid]]s and others who wield [[primal magic]] actually
manipulate that Lamannian essence. And indeed, druids
who travel to the Twilight Forest can be overwhelmed by
the sheer force of nature that infuses this place.

Lamannia lies close to the world, and it's one of the easiest
planes to reach. Its treasures are natural objects imbued with
elemental power—wood, stone, herbs, and plants, all of which
are stronger and more potent than their mortal counterparts.
But when you come to Lamannia, there are many predators,
and you are prey; anyone who seeks to despoil the
embodiment of nature will be hunted.

!! Universal Properties

Lamannia is a reflection of the natural world, intensified and
exaggerated. The air is pure and clean, the water fresh and
clear. Colors are impossibly vivid. It's suffused with life—a
realm in which any stone could be an earth [[elemental]], where
any tree could be [[awaken]]ed. Vegetation is nearly always in
bloom, and beasts are almost always in the peak of health.
Except for a few layers such as the [[Rot]], Lamannia reflects the
ideal state of the natural world. Here are some of the plane's
consistent properties.

* //''Extended Druidic Magic.''// Durations of spells that draw on primal sources of magic are doubled.
* //''Indomitable Beasts.''// Beasts and [[elemental]]s are filled with vigor and fortitude. Upon its arrival in Lamannia, any elemental or beast that's charmed or bound in any way is immediately freed from that effect; this can be disastrous for an elemental [[airship]] that's thrown into the plane.
* //''Elemental Power.''// Spells that [[conjure elemental]]s are augmented.
* ''//The Land Provides.//'' In most layers of Lamannia (the [[Broken Land]] notwithstanding), the vegetation is bountiful and the land sustaining. In these places, a creature has advantage when attempting to forage for food or shelter.
* ''//Primordial Matter.//''  It's difficult to destroy or contaminate the matter of Lamannia. All nonmagical food and drink is purified and rendered free of poison and disease. In addition, natural materials such as wood and stone are tougher than their mundane counterparts. 
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.

!! Denizens

A common story about Lamannia tells of an explorer who
passed through a [[manifest zone]] and found herself on a vast
mountain peak. Pressing up the mountain, she was exploring
a mysterious thicket when she was set upon by rats the size
of wolves. She fought the rats, but was on the verge of being
overwhelmed... until a giant beak flashed down and snapped
up a rat in a single bite. The wide “thicket” wasn't natural briar;
it was the nest of a gargantuan [[roc]], one of Lamannia's many
impressive denizens.

!!! Beasts

Lamannia's primary inhabitants are beasts—both ones that
you might encounter in the wilds of [[Eberron]], and massive
creatures that can be seen as iconic representations of their
type: the idealized incarnation of Bear or Wolf. Any natural
creature can be found in Lamannia; indeed, some sages
assert that the presence of a creature in Lamannia is what
defines it as “natural.”

For the most part, Lamannian beasts are no smarter than
their counterparts on Eberron. However, some animals
possess intelligence similar to that granted by the [[awaken]]
spell, though even these beasts generally follow their natural
instincts and live wild lives. While the [[giant owl]]s of [[Sharn]]
may own shops and run for city council, the giant owls of
Lamannia are content to hunt the beasts of the Twilight
Forest. So it's possible to find creatures in Lamannia that
speak Common or a Primordial dialect, but most have little
interest in long conversations.

The beasts of Lamannia generally fall into the following
four categories.

''Mundane animals'' are identical to their counterparts in
Eberron. Any natural creature can be found in a layer with an
appropriate environment. If such beasts are the first things
adventurers encounter in a visit to Lamannia, they might not
even realize they've traveled to another plane.

''[[Dire animals|dire beast]]'' are creatures of remarkable size. Such
creatures are more common than mundane animals; in the
[[Twilight Forest]], most owls are [[giant owl]]s, and they prey
on giant weasels and rats. Any natural beast
could have a dire counterpart in Lamannia.

''Megafauna'' are gargantuan beasts. The [[roc]] is an example
of Lamannian megafauna; those found in Eberron have been
drawn through [[manifest zone]]s or slipped between planes
during coterminous periods. The DM can create a wide range
of megafauna; a pack of gargantuan wolves could hound the
adventurers, or they might meet a megafauna serpent—perhaps even a megafauna
[[dinosaur]]! While these creatures are similar in form to beasts,
they are typically classified as [[monstrosities|monstrosity]]. Between their
vast size and their connection to the plane, they're immune to
most effects that target beasts, and you can't charm a roc with
a simple [[animal friendship]] spell.

''Totems'' are beasts that are beyond the tactical scale—creatures that can be measured in miles. The [[gnome]] explorer Tasker tells a tale of an island in the [[Endless Ocean]] that turned out to be an enormous turtle; another of his stories
features a pack of [[lycanthrope]]s living in the fur of a massive
roaming wolf. Such totems aren't natural creatures and don't
need to eat. Their origins and purpose are unsolved mysteries,
but most sages believe that they are [[immortal]] spirits projected
by the plane itself. Some claim that the totems are connected
to all creatures cast in their image. Others believe that the
totems are sources of primal power, and barbarians, shifters,
and druids can receive power and guidance from them. All
that's known for sure is that they're immune to common
spells, and there are no accounts of anyone successfully
harming or communicating with a totem.

!!! Elementals

After beasts, the most common inhabitants of the plane are
[[elemental]]s. Unlike the [[genie]]s, [[mephit]]s, and anthropomorphic
elementals of [[Fernia]] and [[Syrania]], Lamannia's elementals are
the pure, living essence of the elements, unburdened by any
humanoid desire. These include the standard earth, fire, air,
and water elementals, but they can come in a wide array of
sizes and forms. Adventurers exploring the [[Broken Land]] could
encounter tiny globs of lava crawling across the land, while the
[[leviathan]]s of the [[Endless Ocean]] and the [[elder tempest]]s of the
[[First Storm]] are forces of apocalyptic power.

The [[Zil|Zilargo]] [[gnome]]s commonly summon and bind the
elementals of Lamannia, using them to propel [[lightning rail]]s
and [[airship]]s. While intelligent, these elementals are utterly alien. They have little concept of time and perceive the world
purely through the balance of elements. The sole desire of
most elementals is to express their element: to //burn//, to //flow//,
to //fly//. Many have an antagonistic attitude toward spirits of
other elements, which drives the deadly conflict between
them in the [[Broken Land]]—this poses an obstacle in dealing
with elementals, as they tend to perceive [[humanoid]]s as
globs of water. While it's possible for a character that speaks
Primordial to talk with a Lamannian elemental, it's usually
difficult to establish any sort of common basis for negotiation.
Still, there are legends of wandering [[druid]]s who “befriended
earth and air,” so anything is possible!

!!! Humanoids

There are [[merfolk]] in [[Eberron]]—such as the [[Kalamer]] of the
[[Thunder Sea]]—but their people began in the [[Endless Ocean]] of
Lamannia, and are still found there. These primordial merfolk
remain close to their elemental roots and instincts. They
wield [[druid]]ic magic, but don't craft tools or structures. Other
humanoid natives of Lamannia are much the same; any race
with a strong primal connection could be tied to Lamannia, but
they're driven by instinct and avoid the trappings of civilization.
There could be [[tabaxi]] dwelling in the branches of the Twilight
Forest, but if so, they'll seem wild.

Over a century ago, during the [[Silver Crusade]], there were
many [[lycanthrope]]s who fled to Lamannia. As long as they
remain on this plane, a lycanthrope can't spread the curse to
anyone other than their offspring, and the unnatural impulses
of the curse—the drive to prey on innocents, the bloodlust
that can cause a victim of lycanthropy to lose control of their
actions—are suspended. Meanwhile, primal instincts are
amplified; Lamannian werewolves remain predators and
take joy in the hunt, but they aren't driven to evil, and remain
in full control. Packs and communities of lycanthropes
are scattered across the layers. Most are descended from
lycanthropes who fled Eberron to escape both the templars and the dark power whose corrupting influence led to the
crusade; these shapeshifters embrace their primal nature
and rarely assume humanoid forms. But there are also
packs descended from afflicted templars who chose exile
over death, and who strive to preserve the beliefs and
traditions of their ancestors.

A handful of druids and rangers have crossed into Lamannia
and chosen to remain in this primal paradise. Many run with
lycanthrope packs, embracing their feral instincts and spending
their days in wild shape. Others act as planar shepherds,
seeking to minimize the impact of dangerous [[manifest zone]]s
and help unwary travelers.

!!! Greater Powers?

There are no [[celestial]]s or [[fiend]]s in Lamannia. Yet explorers
often report a feeling that they are being watched, and there
are times when random events seem to be guided by an unseen
hand. When outsiders have sought to establish industries
in Lamannia, they've been attacked by megafauna or elder
elementals, or struck by especially vicious turns of weather. It's
possible that this is the work of the totems, and that they have
great influence over their [[layer]]s. Or there could be a greater
power that watches over the entire plane. Some scholars assert
that the moon [[Olarune]] is the consciousness that governs the
plane, and [[Eldeen|Eldeen Reaches]] [[shifter]] traditions that predate the practices
of the [[Wardens of the Wood]] also reflect this belief. Shifter
druids suggest that Olarune created the shifters, and the first
lycanthropes were her champions.

!! Layers

Each of Lamannia's layers highlights a particular aspect of
primal nature. One layer in Lamannia might contain a single
colossal mountain peak; on the other hand, the [[Twilight Forest]]
could be as large as [[Khorvaire]] (or even [[Eberron]] itself). The
edge of a layer could be an impassable physical barrier, or it
could wrap around onto itself—if you sail far enough in the
[[Endless Ocean]], you'll find yourself back where you began. Most
layers of Lamannia follow a traditional day-night cycle, though
they aren't synchronized across layers, and when the moon
[[Olarune]] is visible, it's always full.

The portals that connect the layers of Lamannia often only
allow travel in one direction. Any deep pool of water may
connect a layer to the Endless Ocean; but while you can get to
the Ocean by diving into a pond in the Twilight Forest, there's
no gate back to the forest on the other side. The Endless
Ocean contains small islands, and if you explore one, you'll
find you've moved to a new layer.

The following are just a handful of Lamannia's many layers.
In creating a layer, think of a distinctive natural feature—a
canyon, a desert, a lone mountain—and build the layer around
it. What creatures would be found there? Have any outsiders
taken up residence? Is there an unusual role for [[elemental]]s?
How does it connect to other layers or Eberron?

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

A town is established in the desolate [[Blade Desert]], but it
thrives beside a small lake that provides fresh water and a
seemingly inexhaustible supply of fish. In a small [[Eldeen|Eldeen Reaches]]
village, the locals live in harmony with a breed of giant rabbits
unknown elsewhere in [[Khorvaire]]. A tribe of [[shifter]]s lives in
the branches of three massive trees that grow in a Lamannian
[[manifest zone]]. These are all examples of how Lamannia can
affect the Material Plane; below are a few more.

!!! Manifest Zones

Lamannian [[manifest zone]]s are relatively common, and
usually share one or more of the plane's universal properties.
They're often found at the heart of a region that resembles the
connected layer; zones tied to the [[Endless Ocean]] are found
underwater, while manifest zones tied to the [[Twilight Forest]]
can be found in the [[Towering Wood]], the [[King's Forest]], and
other vast woodlands. It's relatively common for these zones to
serve as gateways to Lamannia, though they might require a
lunar alignment or a coterminous period. This goes in reverse
too, as creatures can be pulled through to the Material Plane,
from hostile elementals to deadly megafauna.

[[Zilargo]] has a number of valuable zones with the //Elemental Power// property, and House [[Cannith]] and the [[Twelve]] are eager
to find more of these zones—though they're also dangerous, as
[[elemental]]s sometimes spontaneously manifest in such places,
linger for a few hours, then dissipate. Bound elementals can
also break free from their bonds in some Lamannian manifest
zones—especially unfortunate if that elemental is responsible
for keeping an [[airship]] aloft!

Plants and beasts near Lamannian zones often are
significantly larger and healthier than their counterparts in
other areas, and many House [[Vadalis]] [[enclave]]s are built in
these zones. Zones with the //Primordial Matter// property can
also be a valuable resource for communities, with purified
food and water and the presence of extremely durable wood
and other materials for industry. The prison of [[Dreadhold]] is
built in such a manifest zone.

However, though Lamannian manifest zones can be useful
tools for communities and [[dragonmarked house]]s, some zones
actively resist and repel civilization. Weather, vegetation, and a
rapid rate of decay can combine to quickly destroy structures
built in the zone and overgrow the ruins.

!!! Coterminous and Remote

While Lamannia is coterminous, the effects of Lamannian
[[manifest zone]]s are enhanced. In regions of unspoiled nature—such as the [[Eldeen Reaches]] and the wilds of [[Q'barra]]—fertility of both plants and animals is enhanced, and beasts conceived in these periods are often exceptionally strong and healthy.
Durations of spells that target beasts or elementals are doubled.

While Lamannia is remote, fertility rates drop, and beasts
born in these periods are often weak or sickly. Animals are
often uneasy, and the duration of spells that affect beasts or
elementals are cut in half.

Lamannia traditionally becomes coterminous for a week
around the summer solstice, and is remote for a week during
the winter solstice.

!!! Lamannian Artifacts

Lamannian vegetation is prized by [[alchemist]]s. Herbs and
roots from Lamannia can produce exceptionally strong
potions, and many types of Lamannian vegetation have innate
magical effects; there are bushes in the [[Twilight Forest]] that
naturally produce [[goodberries|goodberry]]. Lamannian lumber likewise
can have unusual properties, mirroring the [[densewood]] and
[[bronzewood]] found in [[Aerenal]]. Lamannian wood and stone
can serve as powerful focuses for primal magic, for creating
[[figurines of wondrous power|figurine of wondrous power]], or for tools designed to summon or bind [[elemental]]s.

!! Lamannian Stories

Lamannia is a source of elementals and dire beasts. It's wild
and untamed, strengthening primal magic and providing a
haven to lycanthropes. It resists any intrusion by civilization.
Here are a few ideas for working it into your story.

//''A Savage Land.''// When a party of adventurers unknowingly
passes through a Lamannian gateway, they must find a way to
survive in this wild realm. This could be as simple as finding
another [[manifest zone]] to take them home, or it could require
them to survive in Lamannia for months while waiting for the
planes to become coterminous. Or perhaps their [[airship]] passes
through a manifest zone and the [[elemental]] breaks free; the
adventurers are stranded, along with other survivors.

//''Megafauna Island.''// An island near a Lamannian manifest
zone is discovered to be the home to an unusual array of
megafauna beasts. Adventurers could stumble onto this on
their own, or they could be hired by an heir of House [[Vadalis]]
who wants to investigate the rumors without drawing the
attention of rivals in the house. Perhaps the adventurers find a
legendary megafauna ape—which, if captured, might break free
while on exhibition and climb the towers of [[Sharn]]!

//''At War with Nature.''// An [[Ashbound]] [[druid]] manages to
establish a new Lamannian manifest zone in a major city,
such as [[Fairhaven]] or [[Sharn]]. It's causing the city to crumble,
releasing [[elemental]]s and dense vegetation as the wilderness
takes over. Can the adventurers find a way to remove the
manifest zone?
The ancient [[Sarlona]]n kingdom of Lamecha is best known for fighting off an incursion from the aggressive neighboring kingdom of [[Khunan]], sparking a devastating period of arcane conflict known as the "magewars", one of the opening strokes of the [[Sundering]]. Today, the steppes of the Lamecha lowlands are part of the territory known as [[Syrkarn]], and through its port city of [[Ardhmen]], the province acts as a gateway to [[Sarlona]] for those hoping to avoid the attention of [[Riedra]]'s [[Thousand Eyes]].

Since before the unification of [[Riedra]], Lamecha has been defined by its agriculture and [[eneko]]-led farmsteads, and is the origin of the root vegetable [[sepse]], as well as the narcotic [[dreamlily]].
While you are holding this wand, after a few seconds of concentration, you can instantaneously light or snuff out a candle, torch, small campfire, or similar source of flame within 10 feet of you.
//This tall [[Karrn|Karrnath]] is lean and weathered, but he has a strong presence. His voice is deep and resonant, and it is hard not to listen to his words. Despite his short, iron-gray hair, he is still in the prime of his life; his gray eyes are sharp and clear, and his pride and confidence are visible in his bearing. He wears a beautiful black clock trimmed with purple silk over a well-tailored outfit of black and gray. //

Lan, a priest of the [[Blood of Vol]], is a charismatic and wealthy man, and he is very careful to
conceal his impressive mystical powers from the world at large. Unless there is no other alternative, he only
performs magic in the depths of the [[temple|House of Hazal]]. He takes the use of magic very seriously, and rarely uses spells even to help his parishioners. He believes that people should be able to solve their own problems, and while he offers spiritual advice and even financial assistance to other members of the community, he only uses magic for the most serious situations.

Lan is not an evil man, and he does not always
approve of the actions of the Order of the [[Emerald Claw]]. However, he feels that it is not his place to question the [[undead]] champions of Vol. He has an
astonishing gift for [[enchantment]], and he spends
much of his time producing magic items and weapons for Lady [[Tarra'az|Jesel Tarra'az]]. His other primary interest is extending his family library. Lan
has invested a fortune to recover scrolls and texts
from [[Xen'drik]], seeking more information about the
origin of the first [[vampire]]s. He might hire a party
to locate a tome on his behalf, or cross paths with a
character who has accidentally acquired a book he
needs; alternately, the party might need a rare book
that can only be found in the Hazal library.
''Capital:'' Greenspire (Lanarak), Bounty (Londurak)<br/>
''Primary Resources:'' Agriculture, fish, alcohol<br/>
''Enemies:'' Each other<br/>
''Celebrated Virtues:'' Common sense, stoicism, enjoying life. Work hard and don't complain.

In the tales of the Exile, Lanarak and Londurak are siblings.
Farmers and brewers, they're all but indistinguishable to
outsiders, but the two are constantly striving to outdo each
other. This mythic pattern remains true today. These holds lie
on opposite sides of [[Mirror Lake]], and they're both devoted to
farming and fishing; many of the mountain clans rely on these
valley clans for sustenance. But despite their deep similarities
in outlook and lifestyle, these two clans are constantly
feuding. This rarely escalates to violence, instead typically
driving them to find ways to perform better than their rivals,
though there have been times where one clan has actively
sabotaged the other. Despite this, both Lanarak and Londurak
proclaim to possess vast common sense—to prefer fishing
to fighting, and to always be able to find a simple solution to
complex problems. Dwarves from these clans established
inns across the holds; these days, most of these inns have
been bought up or licensed by House [[Ghallanda]], but there's a
decent chance that if a bartender's a [[dwarf]], they're from one
of these two clans.

While Lanarak and Londurak don't mine metals, both
traditionally farm mushrooms and red pudding in deep
caverns, and both were drawn into the War Below. Londurak
quickly pulled out of the war; they have sealed all passages
and forbidden anyone from venturing into [[Sol Udar|Realm Below]]. Lanarak
still tends its gardens on the upper levels. This has given
Lanarak an edge over its rivals, especially as traditional Mror
spirits are made with mushrooms. However, Lanarak has also
suffered several significant supernatural attacks over the last
few decades—outbreaks of the Frenzy and similar threats.
It's rare for dwarves from these valley clans to take risks or
to leave the holds, but a remarkable folk hero or sailor could
hear the call of adventure.
While lit, this hooded lantern burns for 6 hours on 1 pint of oil, shedding bright light in a 30-foot radius and dim light for an additional 30 feet. Invisible creatures and objects are visible as long as they are in the lantern's bright light. You can lower the hood, reducing the light to dim light in a 5-foot radius.
Named after the founder of [[Morgrave University]], Lareth Hall holds the University's
administrative and faculty offices. This large domed
structure at the center of the campus, situated at the
top of Dalannan Tower, contains the office of president [[Larrian ir'Morgrave]] ([[human]]), along with the bursar's and registrar's offices, and—in a large chamber at the top of the
dome—the abode of [[Flamewind]], a [[gynosphinx]]. As a
scholar of the [[Draconic Prophecy]], Flamewind often
poses strange questions and sends adventurers on
obscure missions. 
The links of this chain mail have been stained to create the optical illusion that you are wearing a brown-and-russet feathered tunic. While you wear this armor, your attempts involving making performances with an instrument have advantage. Additionally, when you play an instrument, all creatures of your choosing who can hear you may become [[charm]]ed by you for up to 1 minute. 
The laskin, a small antelope native to the [[Eldeen Reaches]], has swept-back horns that can be used as a material component for any [[spell]] that requires direct physical contact with the target.
A desert of black sand under a starless sky—this is one of
[[Mabar]]'s iconic images. In the Last Desert, there are remnants
of glorious monuments: the half-buried head of a grand statue,
its eye cracked; a fragment of a memorial wall, engraved
with names that can no longer be read; ruins so worn that it's
impossible to guess what purpose the building once served.
Characters knowledgeable in history and arcana can recognize
that these monuments are drawn from dramatically different
cultures; some are the work of [[celestial]]s, while others might
have been created by the [[giant]]s of [[Xen'drik]].

At the center lies a massive tomb-palace. Its style suggests
the architecture of [[Aerenal]], but it's grander than even the [[City of the Dead|Shae Mordai]]. This is the fortress of the [[Queen of All Tears]], the [[Dark Power]] of this domain. 

The Queen's layers are largely desolate and miserable,
filled with wailing [[wraith]]s and [[banshee]]s and wandering [[nightwalker]]s. One is a battlefield plucked from [[Aerenal]], where the bones of elves and dragons
lie intertwined; this may hold the key to discovering her past.
The Last Resort is a tavern in the [[Immeasurable Market]] of [[Syrania]] where [[angel]]s and [[devil]]s drink together, where [[fey]] share stories while [[slaad]]i do shots.
The barkeep [[Solace]] is the [[Dominion|dominion]] of Hospitality; he's
got a sympathetic ear for patrons and knows the perfect
drink for any occasion.
For hundreds of years, the continent of [[Khorvaire]] was
united under the kingdom of [[Galifar]]. This peace came to
an end with the death of King [[Jarot|Jarot ir'Wynarn]] in 894 YK, just over
a century ago. Conflict over the succession spiraled into
outright war between the [[Five Nations]].

The Last War was a bitter struggle that forever
changed the shape of Khorvaire. It was a century
marked by shifting alliances, with years of stalemate interspersed with periods of intense battles. This grueling
conflict left deep scars on the land and the people, but
there was worse to come. On [[20 Olarune 994 YK|Khorvaire calendar]], the
nation of [[Cyre]] was consumed in a magical cataclysm
now known as the [[Mourning]]. The cause of the Mourning remains unknown; many fear it was caused by unbridled use of war magic. Shock and fear brought the
nations to the negotiating table, and the Last War came
to an end in 996 YK with the [[Treaty of Thronehold]].

Although many celebrated the end of the war, others
remain unsatisfied with its outcome. No one won the
war. Even though people optimistically refer to it as the
Last War, most believe that it's only a matter of time
until conflict begins anew. The mystery of the Mourning is the only thing holding the warmongers at bay. If
someone uncovers the secret of the Mourning—if it can
be proven that the Mourning can't happen again, or if
its power could be harnessed as a weapon—war could
erupt again. Until then, the nations remain in a cold war
as each makes preparations and seeks advantages in a
conflict that could lie ahead. 

!! Scars of the War

As of 1 Zarantyr 998 YK, it's been less than four years
since the Mourning and less than two years since the
Last War came to an end. The Last War spanned the
continent and lasted for over a century. Most people
want to move on. But the scars of decades of war can't
be erased so quickly. These are just a few of the ongoing
effects of the Last War. 

!!! Dragonmarked Power

The [[dragonmarked house]]s remained neutral in the war
and made considerable profit selling their services to all
sides. War drives innovation; House [[Cannith]] developed
many new weapons during the war, including the [[warforged]]. House [[Lyrandar]] perfected its [[airship]]s in the last
decade of the conflict. Rumors persist of monsters or
super soldiers developed by House [[Vadalis]] or biological
weapons in the hands of House [[Jorasco]].

The dragonmarked houses emerged from the war
stronger than ever, with the divided nations dependent
on their services. Before the Last War, united [[Galifar]]
imposed many restrictions on the houses. Today, no
monarch can afford to break ties with any of the dragonmarked houses. What will happen if one of the houses
goes too far in its pursuit of profit? 

!!! New Nations

Before the Last War, Galifar laid claim to all [[Khorvaire]].
Several new states emerged over the course of the war.
In some cases, this was largely a formality; Galifar never had a strong grip on the [[Lhazaar Principalities]] or
the [[gnome]] nation of [[Zilargo]], and they held the [[Demon Wastes]] in name only. Other states were born in violence:
the [[elves|elf]] of [[Valenar]] and the [[goblinoid]]s of [[Darguun]] seized
their realms by force. But [[Aundair]] yearns to reclaim the
[[Eldeen Reaches]], [[Breland]] keeps a wary eye on the monstrous kingdom of [[Droaam]], and many mistrust the Valenar elves. Within the [[Five Nations]], anger remains over
how the final lines were drawn; for example, [[Thrane]] retains control of the ancient Aundairian city of [[Thaliost]], seized during the war. 

!!! Physical Damage

The borders between nations demonstrate the impact of
generations of conflict. Forests and farmlands scorched
by fire and magic are still recovering. Ruined cities have
yet to be reclaimed, along with shattered villages and
abandoned fortresses. These deserted sites now provide
shelter for brigands or are haunted by the restless spirits of those who died in anguish.

This damage reached far beyond the front lines.
[[Magic-fueled weapons|arcane artillery]], aerial cavalry, and guerrilla
forces all struck deep within enemy territory, and the
cities of Khorvaire suffered. Wherever you go, you might
see the scorch marks of fireballs or wreckage from
siege weapons. Every nation is working to repair these
wounds, but the damage could linger for generations.
As you create an Eberron character, consider your
roots and the impact of the war. Was your hometown
destroyed in the war? Is your family thriving, or were its
members scattered or slain during the conflict? 

!!! Refugees and Shortages

Refugees live in every major city, including tens of thousands of exiles produced by [[Cyre]]'s destruction. Cyrans are a people without a homeland, seeking shelter and
sustenance in the lands of their former enemies. Many
Cyran refugees are former soldiers who were fighting in
enemy territory when the [[Mourning]] struck, or they were
farmers and merchants who escaped before their nation
was consumed. Former nobles now have nothing but
rags, and scholars or artists live in alleyways.

Cities and towns still suffer from shortages in the
aftermath of the war. Farmlands, workers, and the
resources devoted to the war were lost. Nations are
recovering, and most essential services and goods are
available in major cities. But there is always the possibility that something you want—a luxury item or a spell
component—simply isn't available or can be acquired
only through the black market. 
Lastpoint is an island in the [[Lhazaar Principalities]]. The seat of the [[Gray Tide]] principality is hidden somewhere within the mysterious mists that cover the eastern half of the island. Some say the secret headquarters of the [[Cabinet of Faces]] can also be found here.

!! The "Gray Tide"

The waters around the island of Lastpoint crawl with a clinging, bone chilling
gray mist. The crews of ships forced to sail through
the gray tide become disoriented and confused.
When—or if—they sail out again, they report hearing
shrieking winds emanating from the center of the
mysterious fog. No one has ever determined what
lies at the heart of the gray tide, and few are brave
enough to enter the mist in search of an answer.

The [[Gray Tide]] principality is named after this bizarre magical phenomenon.
[[Halfling|halfling]] culture treats every
member of a tribe as an equal. A halfling tribe is
ruled by an elected leader known as a //lath//, whose
authority depends on retaining the confidence and
respect of the tribe as a whole. Every few generations,
a truly great leader arises, inspiring not just their own
tribe but other tribes and their //lath//s. Such a halfling
is given the title of //lathon// and is granted the power to
render decisions for the halfling nation as a whole.

Lathon Halpum organized the tribes during the
[[Last War]] and represented them as the nation of the [[Talenta Plains]] in the [[negotiations|Treaty of Thronehold]] at [[Thronehold]]. He is considered the father of this land, and without his example, the [[halfling]] nation would likely never have come to pass. He has since stepped down from his position; Halpum still carries the grand title, but more as an honorary post than as a ruler. He continues to oversee his own tribe, one of the largest in the Plains, but he doesn’t command the other laths. But he has the respect of nearly every living halfling.
The Lava Pit is an up-and-coming restaurant in—of
all places—the [[Cogs]] of [[Sharn]], in the heart of the [[Blackbones]] district. True to its name, the Lava Pit overlooks a gigantic forge powered by molten rock,
the glow from which suffuses the place with lurid
red light. The restaurant began as little more than a
hole in the wall with an interesting location, serving a
variety of grilled meats prepared in the spicy [[Shadow Marches]] style. Its popularity has grown tremendously, allowing the restaurant to improve its facility
and expand its menu (although the Shadow Marches
cuisine remains its specialty), making it by far the
most upscale establishment of any kind in the [[Cogs]].
It is a crime for a [[Riedran|Riedrans]] to possess anything that has
not come to him through official channels. The method
of acquisition is irrelevant. Whether someone deals with
the black market or steals goods, possession of unauthorized goods is a crime. Contraband goods are always
confiscated. This rule does not apply to foreigners, but
no Riedran is allowed to accept goods from strangers.

Any form of violence against a citizen of [[Riedra]] is
illegal. [[Thousand Eyes]] or [[Harmonious Shield]] agents can
be violent in pursuit of their duties.

It's a crime to challenge anyone who holds a higher
rank or disobey a command from a social superior. However, if the challenge proves true, such as when a [[Taskaan|Taskaan Legion]]
[[shifter]] identifies corruption in an officer, the "crime"
becomes a rewarded act.

Aside from the [[Chosen]] and the [[Inspired]], only
authorized individuals are permitted to study any form
of magic or [[psionics]]. Such abilities are to be used only
in the service of the nation. Foreigners aren't persecuted
for having supernatural abilities—it's well known that all
foreigners traffic with [[fiend]]s—but they are arrested and
punished if they turn these powers against Riedrans.

The widest category of crime is that of corruption.
This includes any action that could draw an honest Riedran
off the [[Path of Inspiration]] and imperil their soul. Challenging the benevolence of the [[Inspired]], teaching new skills
or ideas, and offering people goods they don't normally
receive are all acts that can draw punishment. Open
practice of any religion besides the Path of Inspiration is
also strictly forbidden. A foreign [[cleric]] of the [[Sovereign Host]] can wear his holy symbol and heal a companion, but he mustn't discuss his beliefs with [[Riedrans]], perform any sort of sacred ritual, or use any form of [[divine magic]]—even a benevolent spell—on a Riedran citizen.

!! Punishment

Most minor crimes are punished by a varying term
of solitary confinement, along with counseling by the
local priest. Given their indoctrination and communal
nature, [[Riedrans]] find isolation frightening and punishment enough. The shame of being marked as even a minor criminal or deviant is weighty to a Riedran as well.

In the case of more serious crimes, the criminal simply
vanishes. Sometimes the individual is taken to the local bastion reclamation center, where they are subjected to intense psychological conditioning. Even if someone emerges from a reclamation center, they are assigned to a new community.
Otherwise, the criminal is summarily killed. Executions
are not public, but it is well known that anyone taken by
the [[Thousand Eyes]] never returns to their prior life.

As for foreigners, minor crimes performed in
ignorance might be dismissed with a warning. In the
case of a violent crime or use of magic against a Riedran,
the offender's goods are confiscated, and they are usually
deported or executed. If the [[Inspired]] believe that a criminal has valuable information, they might be held in a reclamation center while agents extract it. Still, the Inspired
do not believe in long incarcerations. Captured PCs must
escape quickly if they hope to avoid execution.

The [[Inspired]] stand above all laws.
[[Eberron]] is the Material Plane, bound by the logical limitations
that govern material things. However, its thirteen [[plane]]s
are ideas, and these are potentially limitless. With this in
mind, the planes of Eberron are divided into layers—distinct
environments or realms that aren't bound by the laws of
physical space nor physically connected. These layers can
be tiny, seemingly infinite, or anything in between. A desert
may wrap back upon itself, the alleys in a city could twist in
impossible ways to always return you to the main square, or
you could come to an absolute edge, where everything falls
away into an endless void.

Many scholars—including [[Dorius Alyre ir'Korran]] in his
celebrated Planar Codex—describe the layers of a plane as
a stack; however, the planes of Eberron aren't physically
arranged in a particular order, and there's no concept of a
top or bottom layer. Instead, each layer explores a different
facet of the core concept that defines the plane. [[Lamannia]] is
the Plane of Nature, and each layer showcases a particular environment—there's an endless ocean, a vast forest, a volcano
forever on the edge of erupting. [[Shavarath]] is the Plane of War,
and each layer contains a different aspect of war—a bitter
siege, a bloody melee, a lingering guerilla conflict. Some planes
have a core layer that serves as the heart of the plane, such as
the [[Amaranthine Cities|Amaranthine City]] of [[Mabar]] and [[Irian]]. But the layers of
[[Lamannia]] are all equal in importance.

While they aren't stacked, most planes have layers bound by
a reliable set of connections. The shape of these connections
varies based on the plane. Some are obvious: a massive door
sitting in the desert, a pool that reflects a scene from another
layer. Others are more subtle; if you come upon an island while
sailing on the [[Endless Ocean]] of [[Lamannia]] and you walk inland,
you'll find that the island is a completely different layer—and
when you turn around, the ocean is no longer behind you. A
portal doesn't have to be physical at all; in [[Thelanis]], you can
travel to a new layer by acting out the elements of a new story.

This chapter provides examples of notable layers for each
plane, but these are only a sampling. Just as ideas have no
limits, there are no limits on the number of layers a plane can
contain. In developing or describing a layer to fit your story,
keep the core concept of the plane in mind. What differentiates
the vast fortress citadel of Irian's Amaranthine City from a
fortress in Shavarath? A fortress in Shavarath is about war; the
stones are worn, and there's a scent of blood and smoke in the
air. In Irian, the fortress is a symbol of hope, of an empire on
the rise; it's bright, clean, and may have never seen an actual
battle. So while the layers of two planes might initially sound
similar, look back to the core concept and consider how that's
reflected in each layer.
This item is composed of a set of two metal hooks. While
the hooks are within 30 feet of one another, you can speak a command word and cause a rope made of light to appear, linking the hooks in the most direct
route. The rope as strong as silk rope and cannot change length once summoned.

The rope lasts for 1 hour or until you use a sharp blade to cut it. 
When wearing these stiff leggings of dark leather, your balance is greatly improved.
While you wear these black leggings, your movements make no sound, and you seem to blend into the shadows.
While you wear these soft grey leggings, you become extremely flexible.
The [[immortal]]s and [[manifestation]]s who fight in the eternal battlefield of [[Shavarath]] are tied to legions. The [[immortal]]s that fight in the war believe that each legion is
governed by a higher power—simply called ''Command''—and
that these powers collectively shape the [[layer]]s and determine
the terms of battle. Immortals don't question Command or
wonder why things are the way they are. Immortals never deal
directly with the Command of their legion, and they don't even
know if these powers have physical forms.

Vast legions are broken into smaller cohorts, which are in
turn divided into centuries of one hundred [[immortal]]s, each
representing an aspect of war like pain, mercy, or despair. A few
special centuries and individual immortals can move between
layers, but the majority are bound to their cohort and their layer.
Immortals can be reassigned to new cohorts, and promoted
or demoted—usually tied to a physical transformation. This
minimal movement between layers maintains balance, as cohort
leaders must make use of the forces in their layer, while legion
commanders can strategically direct the centuries that can move
between layers—what layer is [[Justice]] pressing at the moment?

!! Legions of Shavarath

<<list-links-article "[tag{!!title}sort[title]]">>
The spellcaster creates a sound or an image of an object within 30 feet that lasts for up to one minute. The illusion also ends if the caster dismisses it or casts this spell again.

If the caster creates a sound, its volume can range from a whisper to a scream. It can be the caster's voice, someone else's voice, a lion's roar, a beating of drums, or any other sound they choose. The sound continues unabated throughout the duration, or they can make discrete sounds at different times before the spell ends.

If the caster creates an image of an object—such as a chair, muddy footprints, or a small chest—it must be no larger than a 5-foot cube. The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it.

If a creature discerns the illusion for what it is, the illusion becomes faint to the creature.

If the caster is able to cast common-tier spells, they can cast this as such to do up to ''two'' of the following:

* Create a simultaneous sound AND an image.
* Increase the range to 60 feet and the illusion's maximum size to a 10-foot cube.
* Extend the duration of the illusion to five minutes.
* Delay the start of the illusion for up to five minutes.
* Freely move an image or the source of sound to any spot within the range of the spell.
Seemingly patchwork in bodily structure, a leucrotta's form appears composed of the parts of a wide variety of animals. Their heads are low-slung, wedge shaped and similar in appearance to that of a giant badger. Their body is up to nine feet long, and resembles a cross between a stag and a hyena. Deer-like legs ending in cloven hooves make it very challenging to distinguish between the tracks of a leucrotta and a stag. Ending the mismatched creature's form is a tufted lion-like tail.

Its horrific, hodgepodge body oozes a foul stench that pollutes anywhere the creature lairs. This reek is outdone only by the creature's breath, which issues from a maw that drips fluid corrupted with rot and digestive juices. In place of fangs, a leucrotta has bony ridges as hard as steel that can crush bones and lacerate flesh. These plates are so tough that a leucrotta can use them to peel plate armor away from the body of a slain knight.

The leucrotta can duplicate the call or the vocal expressions of just about any creature it has heard. The monster uses its mimicry to lure in potential victims, then attacks when they are confused or unaware of the actual threat.
One creature or object of your choice that you can see within 60 feet rises vertically, up to 20 feet, and remains suspended there for up to 10 minutes, or until your concentration is broken. The spell can levitate a target that weighs up to 500 pounds. Unwilling creatures may be able to resist the effects of this spell.
! The Eye

''Color:'' Dull white with large black chasm crossing it<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Detection|Mark of Detection]]<br/>
''Associated Plane:'' [[Xoriat]]

This moon features a 750-mile-long black chasm, and, when viewed from [[Eberron]], the full disk of Lharvion resembles a slitted eye. Many superstitions exist about the baleful influence of this moon, and strange occurrences and calamities seem to happen when the Eye of Lharvion is full in the sky. The druids believe that children of Lharvion possess unnatural insights, and gifted diviners and researchers are often born in this month.
Lhazaar was a legendary explorer and pirate who led the first [[human]] expedition from [[Sarlona]] to [[Khorvaire]], around two millennia before the founding of the Kingdom of [[Galifar]]. Her namesake lives on in the [[Lhazaar Principalities]] as well as the [[Lhazaar Sea]].

Some three thousand years before the present age, a
flotilla of ships left the land even then called [[Rhiavhaar]],
bound west across the [[Sea of Rage]]. The leader of this exodus was an explorer named Lhazaar. Though many Khorvairian humans are unaware that Lhazaar's expedition was the beginning of human society on [[Khorvaire]], all know her name.

!! Onsten's Theory of Lhazaar

Recently, a controversial theory has been gaining
favor in academic circles, seeking to explain why the tale
of Lhazaar's expedition has always been an obscure part
of Khorvairian history. Ellias Onsten, a little-known
[[Korranberg Library|Library of Korranberg]] researcher whose reputation faded
even further after his death in 980 YK, was responsible
for a revisionist look at Lhazaar's expedition.

Even prior to the end of the [[Last War]], Onsten had
studied the fragmentary histories of the sorcerer-kings of
ancient [[Sarlona]]. To him, it had always seemed odd that the
first waves of [[human]]s to reach [[Khorvaire]] had brought precious little in the way of magical knowledge with them.

Onsten observed that migrant populations typically
hold to their former cultures at any cost—building new
culture on a rigid foundation of the customs and traditions of their ancestors. However, almost from the first, the early humans of Khorvaire seemed intent on turning
their back on the traditions and history of their former
homeland. This led Onsten to conjecture that the first
humans to settle Khorvaire might well have been a population that Sarlona did not want.

Today, those Khorvairians who know Lhazaar's story
think of themselves as the descendants of brave explorers
and seekers after glory. Onsten's less attractive notion is
that the descendants of untouchables, criminals, deserters, and slaves instead populate Khorvaire. The notion of slave culture was of particular interest to the scholar (and
of particular abhorrence to his critics), suggesting as it
did a reason why the early Khorvairians were so quick to
enslave the [[goblin]]s of fallen [[Dhakaan]]. In Onsten's view,
the strong controlling the weak was the only world these
human immigrants knew.

Onsten's hypothesis has recently gained ground among
scholars. To them, a culture built entirely by people who
have a vested interest in forgetting who they had once been
might look very much like Khorvaire's—people turning their backs on the traditions that glorified those who had oppressed them. Many of the learned in Khorvaire
sympathize with the idea of a people who turned away
from the sorcerous traditions of their lords because those
traditions ultimately turned their lands to ash.

Whatever the origins of Lhazaar's expedition, the
second wave of human migrants to hit Khorvaire sailed
west under better-known circumstances. Refugees fleeing the rising power of [[Riedra]] pushed east into the forests of [[Nulakesh]], then beyond. These humans landed on
Khorvaire's western shores, spreading into the [[Shadow Marches]] where they remain today.
Each of the [[Lhazaar|Lhazaar Principalities]] princes has their own agenda,
and each prince has a personal representative at the
embassy in [[Sharn]]. These ambassadors spend most
of their time in trade negotiations and denying
rumors of Lhazaar piracy. The Lhazaar embassy is unstable at best, and the ambassadors come and go as they please; it’s impossible to predict who will be in
residence in the embassy at any given time. To make
matters worse, the ambassadors frequently engage
in feuds and vendettas on behalf of their lords. The
embassy itself is neutral territory, but beyond its
walls anything can happen. 
''Capital:'' [[Regalport]]<br/>
''Hallmarks:'' Fish, mercenaries, merchants, pirates, ships 

This loose confederacy of pirate lords, merchant
princes, and sea barons holds the northeastern coastline of [[Khorvaire]] and the many mist-shrouded islands
scattered across it. Recognized as a single allied nation
under the [[Treaty of Thronehold]], the principalities are
more of a loose alliance. Each island domain has its
own values, goals, and feuds with other domains.
The Lhazaar are the finest sailors in Khorvaire. During
the [[Last War]], they served all nations as privateers and
engaged in piracy on the side. When the war ended, they
returned to the merchant trade, but pirates still hunt on
the open seas.

The Lhazaar value their independence. Here, anyone
can rise to captain a ship or even seize a principality.
Leadership is earned, not given. Nevertheless, High
Prince [[Ryger ir'Wynarn]] of [[Regalport]] seeks to forge the
principalities into a unified force. He has the finest fleet,
and his efforts ensured that the principalities gained recognition at [[Thronehold]], after which he awarded himself
the title of High Prince. So far, the other princes have
rejected his proposals for a stronger union.

Some principalities are devoted to the [[Blood of Vol]]
and a few favor the [[Sovereign Host]]. Beyond these, the
Lhazaar show little enthusiasm for religion, though
many curse the [[Devourer]] when a storm comes. 

!! Interesting Things About {{!!article}}{{!!title}}

* Rulership of the principalities is so fluid that it's possible for someone to start the day as a sailor and end it as a prince. A campaign could easily be based around a party of adventurers gaining a principality.
* The [[Wind Whisperer|Wind Whisperers]] principality includes a number of [[half-elves|half-elf]] with the [[Mark of Storm]] foundlings with no tie to House [[Lyrandar]]. The Wind Whisperers want to obtain [[airship]]s by any means necessary.
* The Lhazaar Principalities have the largest [[changeling]] population in [[Khorvaire]]. Many of them congregate in the [[Gray Tide]], a domain founded by changelings. 

!! Lhazaar Characters

As you develop a Lhazaar character or NPC, consider the following:

* ''Seafarers and Swashbucklers.'' Most Lhazaar spend more time at sea than they do on land. Sailor is an appropriate background for any Lhazaar, but you can ask your DM if you can switch a tool proficiency for vehicles (water) proficiency. Lhazaar are flamboyant people with little concern for the law, so charlatan, entertainer, and folk hero are all appropriate backgrounds.
* ''Local Customs.'' Each principality has its own martial traditions, fashions, and slang. Think about how your choices reflect your principality and work with your DM to develop one that fits your character. 
* ''Big Dreams.'' Whatever their circumstances, the people of the principalities always look to the future. What do you want? To find a forgotten treasure hoard? To command your own ship? To take your place as a prince? Think big and chase your dreams. 

!! Cities and Sites

Among the myriad ports and pirate redoubts of the
Lhazaar Principalities are ancient ruins from forgotten
civilizations that predate even the [[Dhakaan]]i Empire, as
well as tombs built by wealthy pirates and sea lords to
house their treasures and earthly remains.

!!! Cities and Towns

<<list-links-article "[tag{!!title}tag[city]category[location]sort[title]]">>

<<list-links-article "[tag{!!title}tag[town]category[location]sort[title]]">>

!!! Notable Islands

<<list-links-article "[tag{!!title}tag[island]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Principalities

<<list-links-article "[tag{!!title}category[organization]sort[title]]">>

!! Aftermath of the Last War

During the Last War, the Lhazaar served as privateers
and pirates. Outsiders wonder if the principalities can
adapt to peace, or if their thirst for gold and adventure
will lead their subjects to ruin.

Most of the princes are content with their domains,
but ambitious rulers such as Prince [[Ryger|Ryger ir'Wynarn]] of [[Regalport]]
and Prince [[Kolberkon]] of [[Port Verge]] could shatter the
status quo. Kolberkon seeks to expand his personal
power, while Ryger wants to forge a stronger unified
nation. Both pursue dangerous alliances in their campaigns. In addition to agreements with the [[dragonmarked house]]s, rumors abound of bargains with [[dragon]]s, [[fiend]]s, and the distant Empire of [[Riedra]]. Will the
dreams of these princes lead to a new war? 
The Lhazaar Sea lies east of [[Khorvaire]] and west of
[[Sarlona]], with no clear boundary between it and the [[Sea of Rage]]. Sailors agree that the Lhazaar Sea touches the
[[Tashyvar Islands]] at the northwestern end of Sarlona,
while the Sea of Rage begins farther south along the Sarlonan coast. [[Adder Bay]] in [[Q'barra]] is part of the Lhazaar
Sea, as are the countless channels that divide the islands
of the [[Lhazaar Principalities]] from each other and from
the mainland.

Whales make their homes in the Lhazaar
Sea, which means whaling is a profitable industry in the
area. However, large orcas sometimes attack ships, and the
huge [[fey]] known as ocean striders seem to view themselves as protectors of the whales in
the area.
Commander Lian Halamar is a male [[halfling]] who
leads the [[garrison|Daggerwatch Garrison]] in the [[Daggerwatch]] district in
[[Upper Dura]]. 

Lian's connections to the [[Boromar Clan]] helped him rise to his current
rank, but he is not a puppet to his halfling brethren. Lian presses the Boromars just hard enough to make sure they keep up their regular payments. As
a result, parties might get lucky and receive some
help from the Watch when fighting Boromars. But more often than not, the Watch is nowhere to be found during major Clan operations. Recently, the Boromars have been pressing Lian to take stronger action against [[Daask]], but the halfling has no interest in getting caught in the middle of the crime war erupting in the lower towers. 
Located in [[Zilargo]]’s southernmost port city, the Library of [[Korranberg]] is the greatest repository of general knowledge in [[Khorvaire]]. In addition to serving as a resource for scholars and explorers, the library often funds expeditions to study ancient cultures or unexplored lands.

The [[gnome]]s of Zilargo have an unparalleled thirst
for knowledge; this inquisitive spirit gave birth to the
Library of Korranberg. The gnome loremaster [[Dorius Alyre ir'Korran]] founded the library almost 3000 years ago in an attempt to accumulate enough knowledge to ascend after death and supplant the [[Sovereign|Sovereign Host]] Lord [[Aureon]]. As the centuries passed, the library continued to grow and expand. With the rise of
the kingdom of [[Galifar]], gentry and aristocrats from across
[[Khorvaire]] came to study at its colleges. Today, the Library of Korranberg plays a significant role in the economy of Khorvaire. It funds many expeditions to further the search for knowledge, and can be a valuable patron for adventurers.

The citizens of [[Korranberg]] take great pride in
their library. Permanent residents may attend the colleges without charge, and every citizen must devote four years
of service to the Library. This service is considered an
act of patriotism and an educational experience. Many
choose to extend this period of service, accepting posts
as lecturers, researchers, administrators, and other
important roles.

The library appears larger on the inside than from
the outside—and from the outside, it looks massive. When
a researcher reserves time at the library, a clerk provides
a catalog stone—an orange-colored crystal keyed to the
topics the researcher wishes to study. A private study
cell is provided, which initially looks like a small pool
of light in a vast, open darkness located somewhere in
the library’s extradimensional space. Within the pool of
light, a desk, chair, work table, and narrow pedestal are
placed for the researcher’s use, along with quills, ink,
parchment, and sealing wax. When the catalog stone is
placed atop the pedestal, alcoves formed of shelves full of
books and scrolls rush out of the darkness to create the
walls of the study cell. When the researcher completes
their work, removing the stone from the pedestal causes
the shelves to fall away so that the researcher can exit the
study cell.

The library and its associated buildings dominate a full quarter of [[Korranberg]]. But it also keeps safe houses in the capital cities of every nation in [[Khorvaire]]. These offices provide shelter for library research teams.
While the library does not focus on magic as much as the
[[Twelve]] or the [[Arcane Congress]], it has had many centuries to
fill its vaults. The restricted archives and secret vaults are
heavily defended and shielded against scrying and other
forms of spying.

!! Colleges of the Library

Each of the library’s eight colleges seeks to advance
a particular field of study:

* ''Aureon’s Holt:'' law and oratory
* ''Balinor’s Horn'': natural sciences
* ''Blackdragon'': [[alchemy|alchemist]]
* ''Drystone'': engineering
* ''Lyrris'': art and literature
* ''Morridan'': mathematics
* ''Soladas'': history
* the ''Tabernacle'': religion and philosophy

Together, the colleges
maintain the archives—vast vaults containing knowledge accumulated over three millennia. The doyens of each college serve on a central council that manages the affairs of the library. This council is run by an appointed member of the Korran family, descended from the founders of the library. Like most politics in [[Zilargo]], positions in the library involve intrigue, blackmail, and scheming. The current high councilor, Alina Alrene ir'Korran, is a cunning woman who has had to fight off many
competitors within her own house to maintain her
status and position.
Liches are the remains of great [[wizard]]s who embrace [[undeath|undead]] as a means of preserving themselves. They further their own power at any cost, having no interest in the affairs of the living except where those affairs interfere with their own. Scheming and insane, they hunger for long-forgotten knowledge and the most terrible secrets. Because the shadow of death doesn't hang over them, they can conceive plans that take years, decades, or centuries to come to fruition.

A lich is a gaunt and skeletal humanoid with withered flesh stretched tight across its bones. Its eyes succumbed to decay long ago, but points of light burn in its empty sockets.

A lich is created by an arcane ritual that traps the [[wizard]]'s soul within a phylactery. Doing so binds the soul to the mortal world, preventing it from traveling to [[Dolurrh]] after death. A phylactery is traditionally an amulet in the shape of a small box, but it can take the form of any item possessing an interior space into which arcane sigils of naming, binding, immortality, and dark magic are scribed in silver.

With its phylactery prepared, the future lich drinks a potion of transformation—a vile concoction of poison mixed with the blood of a sentient creature whose soul is sacrificed to the phylactery. The wizard falls dead, then rises as a lich as its soul is drawn into the phylactery, where it forever remains.

When a lich's body is broken by accident or assault, the will and mind of the lich drains from it, leaving only a lifeless corpse behind. Within days, a new body reforms next to the lich's phylactery, coalescing out of glowing smoke that issues from the device. Because the destruction of its phylactery means the possibility of eternal death, a lich usually keeps its phylactery in a hidden, well-guarded location.

Destroying a lich's phylactery is no easy task and often requires a special ritual, item, or weapon. Every phylactery is unique, and discovering the key to its destruction can be a quest in and of itself.
The spellcaster touches one object that is no larger than 10 feet in any dimension. For up to an hour, the object sheds bright light in a 20-foot radius and dim light for an additional 20 feet. The light can be any color the spellcaster chooses. Completely covering the object with something opaque blocks the light. The spell ends if cast again or dismissed.
The head of the mace is shaped like a sunburst and made of solid brass. Named //Lightbringer//, this weapon glows as bright as a torch when its wielder commands. While glowing, the mace deals radiant damage to [[undead]] creatures.
Lightfoot halflings can easily hide from notice,
even using other people as cover. They are inclined to be
affable and get along well with others. 

Lightfoots are more prone to wanderlust than other
halflings, and often dwell alongside other races or take
up a nomadic life. 
When affixed to the mast of a ship, this lantern flashes red
when the ship comes within 120 feet of land or rocks that
break the water's surface. The lantern can be seen from 60
feet away but produces no light to see by. 
A stroke of lightning forming a line 100 feet long and 5 feet wide blasts out from you in a direction you choose. Each creature in the line must dodge or be electrocuted. The lightning ignites flammable objects in the area.

This spell can be upgraded to legendary-tier for an even more destructive effect.
The wondrous lightning rail system once linked the
far reaches of the Kingdom of [[Galifar]], prior to the [[Last War]]. Now the system is divided, split into eastern and
western circuits. Reestablishing the [[conductor stone]]
paths across [[Scions Sound]] and the [[Mournland]] is often
discussed in the halls of power in the [[Five Nations]], but
formidable challenges are involved. 

!! How It Works

A lightning rail train is made up of an [[elemental vessel]]
linked to a series of connected carts, all of which float
about 5 feet off the ground. Each cart, similar in form
to a large wagon with no wheels, has a [[conductor stone]]
embedded in its underside. A corresponding set of conductor stones laid out in a line on the ground interacts
with the stones in the carts to form a rail for the train to
follow. Lightning arcs between the two sets of stones,
accounting for the system's name.

The elemental vessel at the front of the train, called
a crew cart, holds a bound air [[elemental]] that propels
the train along its route at a speed of about 30 miles per hour. The elemental appears as a ring of lightning
encircling the crew cart while the train is in motion. A
bound air elemental can move a train of up to ten carts
without obvious strain, and most trains are configured
accordingly.

The other carts that make up the train have various
purposes. A typical train has a crew cart at each end,
with two cargo carts, four passenger carts, and two
lounge carts in between. Doors at both ends of each cart
enable crew and passengers to walk from one to the
next, even while the train is in motion. Both crew carts
are identical, except that the bound [[elemental]] in one is
suppressed. On the return trip, the roles of the carts and
the states of their elementals are reversed.

Specialized carts of other sorts vary in configuration
depending on their purpose and the degree of luxury
afforded to them. Some have solid sides and roofs, while
others are covered only with canvas. 

''//Operation.//'' The vessel's pilot, a House [[Orien]] [[dragonmark]]ed heir, stands at the helm, high atop the crew cart,
beneath the elemental binding struts. The pilot controls
the [[elemental]] and communicates with it during the trip,
watching the path ahead through broad windows that
encircle the helm platform. 

The placement of [[conductor stone]] lines dictates where
a lightning rail train can travel, but the pilot still must
make operational decisions as the coach moves from
one city to the next. The pilot controls the vessel's speed
based on conditions around the train. When conductor
stone lines split, as they do at various hubs along the
way, the pilot selects the intended route and directs the
[[elemental]] down the correct line.

The crew of a train includes handful of chief stewards overseeing a number of lesser stewards who are
charged with seeing to the needs of passengers and
keeping cargo secured. 

!! Lightning Rail Stations

Lightning rail stations, where passengers and cargo can
be disembarked or loaded, are located in or just outside
villages, towns, and cities along the conductor stone
paths. There are no stations in the expanses between
these settlements, and House [[Orien]] rules prohibit lightning rail pilots from stopping anywhere but at a station.

Stations throughout [[Khorvaire]] have a similar look
and feel, to ensure that each one lives up to the high
expectations of House Orien's patrons. White and gold
[[everbright lantern]]s continually illuminate each station.
When a train pulls into the station, loading ramps are
moved into position beside each cargo cart, and stairs
by each passenger cart. The cargo is unloaded from one
side of the train and the passengers from the other. 

Individual stations do have distinct touches that reflect
local features. For example, the station in [[Gatherhold]], in
the [[Talenta Plains]], is decorated with traditional [[halfling]]
motifs and offers specialized stables for travelers leaving their [[dinosaur]]s behind. On a larger scale, the station
at [[Passage]], which is the seat of power for House [[Orien]],
is a multistoried structure designed as a monument to
the majesty and storied history of the house. 
<<list-links-article "[tag{!!title}sort[title]]">>
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Little Barrington is a pleasant
residential district. The homes are small but comfortable and well designed, and the inhabitants are
generally friendly and cheerful.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Kenton]] (west); [[Deathsgate]] (northeast); [[Little Plains]] (bridge, north); [[Black Arch]] (below); [[Ocean View]] (above)

The successful middle class of [[Tavick's Landing]] live
in Little Barrington. Overseers from the [[Blackbone Cogs|Blackbones]], junior barristers and aspiring government
functionaries—anyone who can't afford a home in
the [[upper ward]]s but is too successful to live in
[[Kenton]] or one of the lower districts. It is quiet and
peaceful, and frequent patrols by the [[Sharn Watch]]
ensure that it stays that way. 
The {{!!title}} is a street gang of 
[[halfling]] child pickpockets active in [[Middle Dura]], [[Sharn]]. They aren't directly tied to the [[Boromar|Boromar Clan]] family, but the master of the gang pays a tithe to the
Boromars, and if the Boromars send word to them that
certain targets are to be avoided, the Little Fingers
do so. In return, the Boromars ensure that the [[Sharn Watch]] in Middle Dura largely leaves the Fingers alone. 
''District Type:'' [[Halfling|halfling]] encampment<br/>
''Buildings:'' Council hall, temple ([[Boldrei]]), shrine
([[Balinor]]), average lodging (20), average food (37),
average trades (60), average services (40), average
residences (200)<br/>
''First Impression:'' The towers here appear inside-out; instead of open central spaces surrounded by
buildings attached to the outside of a tower, streets
run around the outsides of the towers, giving access
to very low doorways leading to cavelike interiors.
Halflings seem to negotiate these outside ledges with
ease, and so do the [[dinosaur]]s many of them ride.
Great winged reptiles soar between towers, many
with halfling riders on their backs.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Everbright]] (northwest); [[Smoky Towers]] (north); [[Deathsgate]] (bridge, southeast); [[Little Barrington]] (bridge, south); [[Firelight]] (below); [[Platinate]] (above)

Little Plains is not the only [[halfling]] neighborhood in
[[Sharn]], but it is the only district almost entirely inhabited by halflings and the only significant concentration
west of the [[Mournland]] of halfling immigrants from
the [[Talenta Plains]]. Even the architecture suggests
the maintenance of these halflings' traditional ways,
since the towers resemble the city of [[Gatherhold]]
in Talenta. More urbanized halflings live in Little
Plains as well, as do some few members of other races
(primarily [[gnome]]s and some [[kobold]]s). 
The top level of Thurias Tower gained the appellation of Little Xen'drik
because of the six antiquities dealers there. The
dealers maintain a tremendous rivalry, each sponsoring expeditions to [[Xen'drik]] and offering the
finest gold of the realm for items brought back from
that far-away land.

Jaster Mekdall ([[elf]]) owns the ''Mekdall Gallery'', which deals in ancient [[elven|elf]] and [[drow]] goods. He is gloomy and frequently moans about being cheated by his customers, but he
charges decent prices. 

Haga Wissel ([[human]]) owns ''Echoes of the Past'', which deals in [[magic item]]s with practical uses. She is cheerful and friendly but extremely hard-nosed about prices. She
has been accused of having connections to House
[[Tarkanan]] and even paying burglars to steal items
from other collectors.

Kidro Osanak ([[gnome]]) owns ''Window on Yesterday''. A wizened old gnome, Kidro
harbors a deep resentment toward Haga Wissel, and
though he can't prove it, believes that she has stolen
items from his shop. One of the only dealers in
Little Xen'drik with more interest in the historical
significance contained in his treasures than in their
monetary worth, Kidro often sponsors the most
challenging expeditions.

Biballin Postar ([[halfling]]) owns ''Postar's Jewelry Art Gallery'', which specializes in the adornments of ancient [[Xen'drik]]. He
is absent-minded and keeps completely irregular
hours, but can be counted on to pay the best price
for jewelry related to either the [[drow]] or the [[giant]]s
of the ancient and mostly forgotten kingdoms.

Reina Doiran ([[human]]) owns ''Cloud Antiquities''. Flamboyant and eccentric, she judges items quickly based on her own aesthetic sense rather than their historic value, and
pays more for items that intrigue and appeal to her (particularly [[giant]] artifacts)
than for dusty trinkets of more scholarly worth.

Reina's twin sister, Fista Doiran ([[human]]) owns the ''Doiran Gallery'' (which
once belonged to their parents) and has the opposite personality and artistic disposition. This allows
them to get along amazingly well, and the twins
cooperate in business dealings despite a strong sense
of rivalry. 
This hideous armor is formed from black chitin, beneath which veins pulse and red sinews glisten. To attune to this item, you must wear it for up to an hour, during which tendrils on the inside burrow into you.

In addition to physical protection, this armor also provides the wearer with enhanced reflexes, as well as resistance to necrotic, poison, and psychic attacks.

The armor requires fresh blood be fed to it. This means the wearer must stay well fed and hydrated, or else suffer rapid exhaustion and dizziness.
These symbiotic gloves—made of thin chitin and sinew—pulse with a life of their own. To attune to them, you must wear them for at least an hour, during which the gloves bond with your skin.

While attuned to these gloves, your manual dexterity increases immensely, granting you advantage when performing sleight of hand, playing musical instruments, using artisan tools, or other instances of manual manipulation.
Of all the anomalies that emerged from the magical
cataclysm that created the [[Mournland]], the appearance
of living spells might be the most mysterious. In some
unknown fashion, the magical energy unleashed during
the [[Last War]] caused [[spell]] effects to take on sentience. A
living spell appears much like a normal spell effect, except that its magical energy endures indefinitely.

Living spells haunt the [[Mournland]] and other areas
blasted by the [[Last War]], somehow subsisting on ambient magical energy as they writhe and across the landscape. Though they have no need for sustenance, they attack any creatures they come into contact with, lashing out indiscriminately with their corrupted magic. 
Lizardfolk are tribal reptilian humanoids that inhabit the jungles of [[Q'barra]] and [[Xen'drik]]. Their race is as ancient as the [[giant]]s and the [[dragon]]s, having originated during the [[Age of Demons]]. Depending on their subspecies, lizardfolk range between 4 feet to 9 feet tall, weighing anywhere from 50 to 500 pounds, and display a wide variety of colors. However, the most common subspecies of lizardfolk, //tilsin//,  are between 6 and 7 feet, weigh around 250 pounds, and have green, gray, or brown scales. They also have a 3-4 foot long tail, which they use for balance.

!! Lizardfolk of Q'barra

The vast majority of lizardfolk of the jungles of Q'barra are part of the Masvirik'Uala, or [[Cold Sun Federation]], though some have fallen to the corruption of [[Haka'torvhak]] and have joined the ranks of the [[Poison Dusk]]. In their unique dialect of draconic, lizardfolk of [[Q'barra]] call their species "tsa", which is also their word for "we" or "us". 

The tsa are a primitive folk. They do not forge metal tools. They fashion their armor from
hides, and their weapons are made from wood, bone, and [[dragonshard]]s. Despite their primitive appearance, lizardfolk mystics are skilled at the art of enchanting weapons, so Masvirik’Uala champions may have powerful magical weapons and dragonshard augments.

To learn more about Q'barran lizardfolk culture, see [[Cold Sun Federation]].
!! Plateaus of Sharn

<ul>
<$list filter="[tag[Sharn]tag[quarter]sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[ward]tag{!!title}sort[title]reverse[]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[district]tag{!!title}sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[category[location]tag{!!title}sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>

!! Above and Below

<ul>
<$list filter="[tag[Sharn]tag[district]sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[category[location]tag{!!title}sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
<$list filter="[tag[Sharn]tag[ward]sort[title]] -[title[Skyway]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[district]tag{!!title}sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[category[location]tag{!!title}sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
This lock appears to be an ordinary lock and comes with a single key. The tumblers in this lock magically adjust to thwart burglars. Attempts made to pick the lock have disadvantage.
A long rod is a more portable version of a [[siege staff]], measuring
around 8 feet long. Including the stand required to brace it, it
weighs close to 350 pounds.

It takes five actions to set up a long rod, and the same to tear
down for transport. Once set up, it takes one action to prime
the rod, one to aim it, and one to fire it.

Any offensive spell can be cast through the long rod. The range is magnified by a factor
of 3, with a long range of up to 6 times the spell's standard
range. The spell's area of effect is increased to 150%. If the spell
normally affects a single target, it instead affects a 10-foot-radius
sphere.
''Date: '' [[26-28 Vult|Khorvaire calendar]]

It's said that the power of the [[Shadow]], the sinister deity of the [[Dark Six]], is at its height during these three
nights. Careful people spend this time indoors with
friends, but those who relish the darkness might decide
to take to the streets to prey on the weak and foolish.
''District Type: ''Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor
residences (220)<br/>
''First Impression: ''Most of the towers in this residential district have stairs that wrap around the
outside of the buildings. The people go about their
business with quiet determination, and keep a suspicious eye on any strangers.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Stoneyard]] (southeast); [[High Hope]] (above)

Longstairs is a quiet residential district, and its inhabitants like it that way. The people of Longstairs are
primarily [[human]] and [[dwarf]] commoners, with a few
experts and [[magewright]]s mixed in. These citizens go
out of their way to maintain the stability of the neighborhood, and anything disruptive is quickly met with
unified opposition. The apartments in Longstairs
are reasonably priced and well maintained. However,
adventurers who settle in Longstairs may have to make
an extra effort to fit in; characters that engage in wild
antics may be run out of the neighborbood. 
Longtooth [[shifter]]s are fierce and aggressive, but they
form deep bonds with their friends. Many longtooth shifters have canine traits that become more pronounced as
they shift, but they might instead draw on tigers, hyenas,
or other predators.
While the [[City Council|Sharn Council]] holds the true power in
[[Sharn]], the Lord Mayor is still a force to be reckoned
with. The Lord Mayor represents the interests of
Sharn in any direct contact with the [[Brelish|Breland]] Crown,
including interaction with the [[King's Citadel]]. He
also appoints the lesser officers of the city and oversees all issues of daily administration. He has the power to establish trade agreements with foreign governments, to pardon criminals, and to order arrests and even executions. His worship ''Cathan ir'Demell'' has been Lord Mayor of Sharn for twenty years, and he enjoys the luxuries and privileges of his position. He is unlikely to take any actions that would anger [[Javan Tomollan]] or [[Bestan ir'Tonn]], his strongest supporters in the council, and he
usually consults with these two before making any
major decisions.
The Lord of Blades is a [[warforged]] warlord who has broken all ties with his former masters. He has established
a nation for his people deep in the [[Mournland]], centered
in a great fortress where warforged from all over [[Khorvaire]] can come and feel a sense of belonging. No one
knows what the Lord of Blades plans for his followers,
but many fear that he intends to build a legion of warforged zealots, primed to march from the Mournland to
unleash destruction on their former masters.

Some tales assert that the Lord of Blades led the
warforged armies of [[Cyre]] in the [[Last War]]. Others cast
him as a newer warforged, perhaps the last to come out
of the [[Cannith]] [[creation forge]]s before the [[Thronehold Accords|Treaty of Thronehold]] led to their dismantling. One story claims the Lord of Blades caused the destruction of Cyre and warns that he plans to repeat the Day of [[Mourning]] in each of the remaining [[Five Nations]]. Whatever the truth, he has become a beacon for warforged everywhere. 

!! The Creed of the Blades

The Lord of Blades runs his
society like a military dictatorship with religious
undertones. Calling themselves the Blades, most of
his followers name themselves after bladed weapons,
weapon parts, or the results of using such weapons.

The Blades value no spiritual
truths, and they revere no distant god. To them, the
Lord of Blades is divine. They empower him with
their devotion, and he gives them purpose and direction. His sermons and statements are divine truths, which they memorize and repeat as prayer-like sayings or battle oaths. A few travel in service of their lord, tasked with
retrieving items and relics related to the [[warforged]].
Others go abroad to proselytize to warforged, particularly those indentured in [[Karrnath]] and [[Thrane]].

The Blades believe themselves superior to any fleshbound creatures. Embracing their soldierly and [[construct]] aspects, they live as they were created—as
instruments of conquest and violence. They kill non-[[warforged]] without remorse. Willingly they die to attain their ends, and they suffer none to leave their
ranks except through death.

These warforged believe they are destined to lord
over [[Eberron]], for they alone are fit to do so. To accomplish this, they intend to carve a nation from [[Cyre]]’s corpse. Then they’ll conquer the rest of [[Khorvaire]], destroying any who oppose them and ruling over those who surrender.

!! Headquarters

The Lord of Blades' bases of operations are unknown; theories include [[Eston]], [[Making]], and [[Whitehearth]]. Within his hidden enclave, the Lord of Blades controls a damaged [[Cannith]] [[creation forge]]. Although he is an [[artificer]] of some
skill, the Lord of Blades hasn’t mastered the forge or
accomplished a complete set of repairs. Still, he uses it
slowly and carefully to create new [[warforged]]. Despite
his care, some warforged emerge from this forge misshapen in body, mind, or both.
Evil entities spawned at the dawn of time still haunt
[[Eberron]]. The cities raised by those ancient [[overlord]]s
are now only ashes, but the Lords of Dust still dream of
restoring their primordial dominion. These [[fiend]]s bide
their time in an inconceivably long game, sparring with
the [[dragon]]s of [[Argonnessen]] as they manipulate events
in order to fulfill the words of the [[Draconic Prophecy]] in
a way that will bring them victory.

Though the Lords of Dust are mighty enough on their
own, they serve greater masters known as the [[overlord]]s. Unfathomably powerful [[fiend]]s, the overlords were bound at the end of the [[Age of Demons]] by the
power of the [[Silver Flame]], and an overlord can be released from this binding only if doing so can be made to
fulfill the Draconic Prophecy. Every [[fiend]] spawned from
[[Khyber]] owes fealty to one of these overlords.

In many ways the Lords of Dust are a reflection of the
[[Chamber]]. Each group is trying to steer the fulfillment
of the Prophecy to serve its own ends. The goal of the
Lords of Dust is to release the overlords from their
bindings and loose them upon Eberron in a new age of
darkness. Despite this unified goal, the Lords of Dust
operate as an alliance of like-minded cabals rather than
a single monolithic organization. Each cabal serves its
particular overlord above all others, and the conditions
that release one overlord could actually contradict those
that would free another.

Accomplished shapeshifters, the Lords of Dust have
agents spread across [[Khorvaire]]. Some might wonder
why, with all their talents, they haven't tried to conquer
the world already. The reason is that they have no interest in ruling this world; they want to return it to the state of unnatural glory that existed before. Their only
interest in [[humanoid]] races is in directing them and
their affairs down the paths necessary to release their
overlords; aside from that, dealing with mortals is a tedious chore. 

!! The Lords of Dust and the War

The Lords of Dust took part in the events of the [[Last War]] whenever they saw opportunities to further their dark version of the [[Prophecy|Draconic Prophecy]]. It remains difficult to identify what events might have been manipulated by
one of these fiends, because their schemes take so long
to play out. Far in the future, it might become apparent
that a seeming victory for the forces of good, or a battle
averted that spared hundreds from death was ultimately
the first step in an [[overlord]]'s release. (For instance, a
soldier who was otherwise fated to die in the battle that
was avoided goes on to tempt a good-hearted priest into
becoming corrupted.)

In the years since the [[Thronehold Accords|Treaty of Thronehold]], the Lords
of Dust continue on as they ever have, advancing one
small step at a time.

!! Demon Ruins

The Lords of Dust maintain a variety of safe houses and
sanctums across [[Eberron]], but their most tightly bound
locations are the ruins left behind from the Age of Demons, scattered across the [[Demon Wastes]].  A demon ruin is an echo of grandeur swathed in flame and ravaged by time. Despite the rich appointments and impeccable construction evident even in the broken remains of the building, the place carries the unmistakable air of anguish and torment.

The table below offers some reasons why characters might risk death in the [[Demon Wastes]]. 

| !<<dr d4>> |!Adventure Goal |
| 1 |Make a desperate request for aid from a Lord of Dust who is, by all accounts, an enemy of the characters' adversary. |
| 2 |Escort an innocent who is prophesied to destroy the Lord of Dust to the ruin, and there confront the [[fiend]]. |
| 3 |Carry an artifact to the river of black lava that runs through the demon ruin, which is the only place where the item can be truly destroyed. |
| 4 |Gather obsidian shards from the ruin as components for a rare spell. |

!! Lords of Dust NPCs

Most of the Lords of Dust are [[rakshasa]]s, but any sort of
fiend—[[devil]], [[demon]], or otherwise—could be part of this
organization. Such [[fiend]]s are spawned in [[Khyber]] and
aren't actually from the Outer Planes. These fiends generally work through a wide network of duped pawns and
indebted servitors.

Each [[overlord]] has a chief servant, and these leaders
meet in the ruins of [[Ashtakala]] in the [[Demon Wastes]].
The overlord [[Rak Tulkhesh]]'s speaker is [[Mordakhesh]] the Shadowsword.
The overlord [[Sul Khatesh]] is served by the [[rakshasa]]
[[Hektula]], also known as the First Scribe. [[Durastoran]] the
Wyrmbreaker is the speaker of [[Bel Shalor]], the overlord
said to be bound in [[Flamekeep]].

The table below describes some possible antagonists who might cross paths with adventurers.

| !<<dr d6>> |!Lords of Dust NPC |
| 1 |A virtuous [[paladin]] is hunting and destroying those who might one day thwart the Lords of Dust. |
| 2 |A possessed lord or lady spreads corruption throughout the noble house. |
| 3 |A [[wizard]] who sought to accelerate their own power by making a dark bargain must now pay the price demanded by their sinister patron. |
| 4 |A powerful [[demon]] has corrupted the local ruler in the name of its [[overlord]]. |
| 5 |A succubus or incubus tempts a mercenary warlord to engage in greater and greater battles. |
| 6 |One of the characters' most trusted allies or servants turns out to be a [[rakshasa]] in disguise. |

!! Lords of Dust Campaign Themes

The Lords of Dust have two basic goals. The first is to encourage activities that strengthen the influence of their overlords. [[Rak Tulkhesh]] embodies war and conflict, and his minions are always eager to cause strife. The servants of [[Sul Khatesh]] entice cruel and selfish people to become [[warlock]]s, drawing mystical powers
from their mistress. These activities won't release an [[overlord]], but they help to sustain it.

To release an overlord, the Lords of Dust must ensure that the [[Prophecy|Draconic Prophecy]] unfolds along a specific path. Often, following this path requires specific mortals to do specific deeds. For example, one shred of the Prophecy could stipulate that King [[Boranel|Boranel ir'Wynarn]] has to be killed by one of the characters. The Lords of Dust could easily kill Boranel themselves, but that wouldn't be sufficient to bring about the desired end; somehow, they'll have to trick the adventurer into doing it.

Because the Lords of Dust so often work through pawns and minions, it might take a while for adventurers to realize that an apparently unconnected series of encounters early in a campaign are actually all part of the complex schemes of the Lords of Dust. These fiends are so devious that it is often impossible to discern a pattern to their actions until their plans have come to fruition and the connections have finally been made clear. (You could retroactively decide that what you intended as unconnected encounters were all part of the
plan from the beginning!) 

!! Lords of Dust Adventure Hooks

The Lords of Dust Adventure Hooks table presents some ways to get the characters into a fiendish
adventure.

| !<<dr d6>> |!Lords of Dust Adventure Hook |
| 1 |A retainer who died recently shows up again, as if nothing happened and with no memory of having "died," or of the events immediately preceding their supposed demise. |
| 2 |Agents of the [[Chamber]] show up intent on murdering the characters, because their recent actions have unwittingly been at the behest of a Lord of Dust and have twisted a portion of the [[Prophecy|Draconic Prophecy]]. |
| 3 |A trusted mentor changes their tune abruptly and begins sending the characters on unusual tasks. |
| 4 |Everyone the characters used to deal with in town suddenly acts as if they've never seen the characters before. |
| 5 |Increasingly vicious [[fiend]]s attack the camp every few nights. |
| 6 |Agents of a Lord of Dust apologetically kidnap a character's loved one, politely requesting that the character perform a series of favors to secure the hostage's release. |
Lorghalan is a large island in the [[Lhazaar Principalities]]. The island is dominated by a powerful [[manifest zone]] to [[Lamannia]].  

Lorghalan was originally settled by [[gnomish|gnome]] explorers fleeing [[Zilargo]] after the founding of the [[Trust]]. The island's proximity to the primal forces of [[Lamannia]] cause the land itself to seem alive. Lorghalen has the highest concentration of [[elemental]]s anywhere on Eberron with the exception of the [[wild zone]]s of [[Sarlona]]; in fact, the nearby [[Hammer]] island is actually a gigantic earth elemental. The leaders of the expedition to the island had long studied elementals, and had developed [[primal magic]] techniques to live in harmony and even convince the spirits and beasts of the wild island to work with them. Rather than binding elementals, the Lorghalen stonesingers communed directly with the spirits and convinced them to help. 

Today, the descendants of these explorers are recognized as an independent principality. The [[gnome]]s of Lorghalan share much in common with their [[Zil|Zilargo]] cousins, with one key exception: Lorghali value freedom and honesty above all, and despise secrets. All gnomes of the island consider themselves to be of one house, so one may introduce themselves as "Tara Tan Lorghalen".
The Lorghalan Forest spans most of the area of the island of [[Lorghalan]] in the [[Lhazaar Principalities]].
Prince Lorrister of the [[Heavenly Fleet]] is a planetouched [[aasimar]] of [[Irian]] and [[paladin]] of [[Dol Arrah]]. He appears as a human but for his massive white wings with black tips on the primary feathers, resembling the wings of a pelican. He is dedicated to bringing justice and order to the "uncivilized" [[Lhazaar Principalities]]. 

Prince Lorrister might come to the aid of player
characters facing the perils of the [[Lhazaar Sea]], sailing to
the rescue like some celestial cavalry riding over the hill.
However, he is likely to ask characters who are indebted to
him to return the favor by striking against one of his many
enemies. He is on a perpetual crusade against evil in the
Principalities, and he recognizes the [[Cloudreavers]] as his
greatest enemies. He also bears a particular grudge against
the [[Emerald Claw]] and actively campaigns in opposition to
that order’s activities.

The other princes scoff at Prince Lorrister’s morals,
but they are leery of his strength. In the future they might
form an alliance to destroy the paladin and his crusaders,
but for now they use their wiles to play him against their
foes. For his part, Lorrister may be idealistic, but he is not
naive, and he remains fully aware of his rivals’ plans.
In a land where a gaze or a song can kill, the
shapeshifting ability of the [[changeling]]s receives little
notice. As a result, these creatures have an easier time
in [[Droaam]] than elsewhere in [[Khorvaire]]. Changelings
are common in [[Graywall]] and the [[Great Crag]], moving
about in their natural forms.

Rumors tell of an entire settlement of [[changeling]]s and [[doppelganger]]s hidden somewhere in [[Droaam]], its location known only to the [[Daughters of Sora Kell]]. The buildings of this place, known simply as Lost, are said
to be giant [[mimic]]s, transforming into cliffs or
trees to deceive the eyes of strangers. The folk of Lost
have mastered a number of powerful rituals, and
some of the greatest unsolved thefts in history are
thought to be their doing.
Lost Isle is an island in the [[Lhazaar Principalities]], located between [[Farlnen]] and the [[Frostfell]].
These districts are peaceful and largely residential; it's the
safest and most pleasant of the lower wards. Goods and
services are largely priced for those with a comfortable
lifestyle, and the [[Sharn Watch]] is plentiful and well paid.
The district of [[Boldrei's Hearth]] has many reasonably
priced inns (most run by House [[Ghallanda]]), and [[Olladra's Kitchen]] has a wide assortment of taverns and
restaurants. [[Myshan Gardens]] is a residential district
that caters to affluent artists, while [[Vallia Towers]] has a
large community of [[half-elves|half-elf]]. 

!! Districts and Noteworthy Locations

* [[Boldrei's Hearth]]. A haven for travelers, this district contains reliable inns ranging from modest to comfortable quality. 
* [[Granite Halls]]. A mercantile district with a large number of art galleries.
* [[Myshan Gardens]]. Myshan Gardens is a downtown residential district.
* [[North Towers]]. A mercantile district with a large number of bookstores.
* [[Olladra's Kitchen]]. Neither the best nor worst Sharn has to offer, Olladra's Kitchen is home to a wide number of taverns and restaurants of modest to comfortable quality. 
* [[Vallia Towers]]. Many half-elves call this residential district home.
The aptly named [[Precarious]] district in Lower Dura
leans out over the edge of the cliffs, and the Skydocks—a system using gigantic arcane cranes and levitation—carry material up from [[Cliffside]] and the docks.
Precarious is also filled with warehouses that hold
these goods. Because Precarious plays an important
role in the economy of the city, it's the only district in
Lower Dura where the [[Sharn Watch]] maintains a significant presence.

The rest of Lower Dura, in stark contrast, has been
left to rot. Ignored by the Watch, it is the domain of
gangs and crime lords. The inhabitants of the ward are
often protected from violence by their criminal connections or by virtue of having nothing worth stealing, but
adventurers ought to tread lightly here, especially those who display the trappings of a wealthy lifestyle. 

There was a time when Lower Dura was the heart
of [[Sharn]], and remnants of this glory remain. The [[Silvermist Theater]] in [[Callestan]] was built to entertain nobles. The ward boasted manors, temples, and a garrison
for the watch. But all of these edifices were abandoned
long ago, and now most are home to nothing but squatters and vermin.

The district of [[Callestan]] is a nexus of sorts, where all
the major criminal powers of Sharn have a stake. 

The district of [[Fallen]] is a haunted ruin; this temple
district was abandoned after it was struck by a falling
tower. 

[[Malleon's Gate]] is home to the [[goblinoid]]s of Sharn, along
with other monstrous immigrants from [[Droaam]] and
[[Darguun]]. The district can be an especially dangerous
place for [[halfling]]s or anyone tied to the [[Boromar Clan]].

[[Oldkeep]] and [[Gate of Gold]] are wretched tenement
districts. A significant halfling community lives in the
district known as The [[Stores]], which is also a stronghold
for the Boromar Clan. 

!! Districts and Noteworthy Locations

* [[Callestan]]. Home to an assortment of squalid and poor businesses, Callestan is a nexus for criminal activity and known as a stronghold of the [[Boromar Clan]]. 
** The [[Anvil]]. This fading [[Ghallanda]] inn struggles to maintain its poor to modest quality. It's known to be under the protection of the Boromar Clan, which makes it one of the safest establishments in Lower Dura. 
** The [[Crooked Mirror]]. A curious tavern owned by a family of [[changeling]]s, the Crooked Mirror changes its appearance and theme every week. It's rumored to be connected to the [[Tyrants]]. 
** The [[Silvermist Theater]]. A remnant of Callestan's glory days, this place is a shadow of the grand establishment it once was. The current owners are known for staging bizarre events at the Silvermist. Since the [[Sharn Watch]] stays out of Callestan, anything can happen here. 
* [[Fallen]]. Sharn's oldest temple district, Fallen was abandoned after a floating tower crashed into the Lower Dura district during the [[Last War]]. Now it's a collection of wretched ruins. 
* [[Gate of Gold]]. A squalid slum, providing miserable housing for desperate people. 
* [[Malleon's Gate]]. A poor district originally inhabited by [[goblin]]s, Malleon's Gate has become a haven for monstrous immigrants from [[Droaam]] and [[Darguun]], along with members of [[Daask]].
* [[Oldkeep]]. Another poor slum, largely home to dockworkers from Precarious.
* [[Precarious]]. The skydocks of Precarious pass goods between the towers and the [[port|Cliffside]] on the [[Dagger River]] below. The district is filled with warehouses, along with a handful of poor taverns. A small community of [[Sarlonans|Sarlona]] lives here. 
* The [[Stores]]. A warehouse district with a large [[halfling]] population, with ties to the [[Boromar Clan]]. 
Providing cheap entertainment for the masses, Lower
Menthis is crowded. The [[Firelight]] district is filled with
sketchy taverns and theaters ranging from the innocent
to the risque, as well as gambling halls, brothels, and
spontaneous performances in the streets.

Lower Menthis is also home to the [[Burning Ring]], a
fight club where spectators bet on amateur gladiators.
Technically illegal, the Burning Ring moves around
the ward to avoid the [[Sharn Watch]]. Competitors are armed but unarmored;
matches continue until a contestant yields, but fatalities
do happen. 

!! Districts and Noteworthy Locations

* [[Center Bridge]]. An inexpensive residential district that houses many students of [[Morgrave University]], which is located directly above.
* [[Downstairs]]. The Downstairs district is primarily known for food and drink. Though most of its taverns and inns are only modest in quality, the [[Four Sails]] serves some of the finest seafood in [[Sharn]]. The recent success of the [[Diamond Theater]] has also drawn travelers to the district. 
** [[Diamond Theater]]. A cheap theater once known for bawdy humor, the Diamond has gained fame due to its playwright in residence and has produced several plays about the impact of the [[Last War]]. 
* [[Firelight]]. This district is a destination for those who seek illicit forms of entertainment. Many forms of illegal gambling and paid companionship can be found in Firelight. It's also the most common location of the [[Burning Ring]]. 
* [[Forgelight Towers]]. A surprisingly quiet residential neighborhood amid the rowdy chaos of Lower Menthis.
* [[Torchfire]]. A district with a notorious reputation, celebrated for cheap entertainment and infamous for its dangerous alleys. Its theaters specialize in musical comedy and lowbrow entertainment, and there are lots of opportunities for hopeful amateurs to get on a stage in Torchfire. 
** [[Ten Torches]]. The cheapest ticket in Sharn's theater scene, Ten Torches alternates between lowbrow comedy and bizarre shows that no respectable theater would stage. 
Although it's poverty-stricken, Lower Northedge is a
significant step up from the slums of [[Lower Dura]]. The
people of Lower Northedge don't look for trouble, and
they don't like it coming to their doorstep. [[North Market]] is one of the largest markets in [[Sharn]], though in
contrast to the [[Bazaar]] of [[Dura]] it mostly offers simple,
everyday goods.

Lower Northedge has a significant [[shifter]] population.
The [[Rat's Nest]] is a tavern that caters to shifters, and the
[[Bear's Rest]] is an inn run by a family of shifters. Apothecaries can be found which specialize in the care of fangs
and claws. Particularly in the districts of [[North Market]]
and [[Stoneyard]], shifter children play [[hrazhak]] in the
streets; this flamboyant sport involves making dramatic
leaps and scaling walls. 

The [[Shrine of Fathen the Martyr]] is an infamous spot
in [[North Market]]. It is dedicated to a crusading priest of
the [[Silver Flame]] who uncovered a group of [[wererat|lycanthrope]]s in
the early days of Sharn. [[Fathen]] was torn apart by the
wererats he had exposed, and in his honor the Church
of the Silver Flame raised the shrine on this site. It's
said that any [[lycanthrope]] that enters the shrine will be
forced into its true form. Pilgrims devoted to the Silver Flame come from across [[Khorvaire]] to pray at the
shrine, but the local shifter population has no love for
the pilgrims or the church. 

!! Districts and Noteworthy Locations

* [[Longstairs]]. The population of this peaceful residential district is mostly made up of [[dwarves|dwarf]], [[human]]s, and [[half-elves|half-elf]]. Neighbors here generally stand together to deal with any trouble.
* [[North Market]]. The open market in this region largely deals in simple, locally produced goods. Due to the significant [[shifter]] population in Lower Northedge, North Market offers goods and services aimed at shifters (grooming services, claw care, and so forth) as well as those reflecting an [[Eldeen|Eldeen Reaches]] influence. 
** The [[Bear's Rest]]. A modest inn maintained by a [[beasthide]] [[shifter]] named Leara, who usually gives a discount to traveling shifters. The decor features various exotic hides. 
** [[Fathen's Shrine|Shrine of Fathen the Martyr]]. This marker in North Market commemorates a miracle that exposed a network of [[wererat|lycanthrope]]s in Sharn, along with the [[priest|Fathen]] of the [[Silver Flame]] who died while fighting them. Pilgrims devoted to the Silver Flame often visit the shrine. 
** The [[Horse and Hearth]]. Though not as colorful as the [[Bear's Rest]], this large inn is maintained by House [[Ghallanda]] and offers rooms of modest and comfortable quality.
** The [[Rat's Nest]]. A modest tavern catering to the [[shifter]]s of Lower Northedge, the Rat's Nest is a haven for gossip and serves food and drink in the [[Eldeen|Eldeen Reaches]] style. 
* [[Stoneyard]]. This residential district is home to the majority of Sharn's [[shifter]]s, including both recent immigrants from the [[Eldeen Reaches]] and long-established local families. The district includes a makeshift [[hrazhak]] court and a shrine devoted to the [[Wardens of the Wood]]. Conditions are poor to modest. 
Two land routes to [[Sharn]] both end at Lower Tavick's
Landing. The [[Orien]] [[lightning rail]] deposits passengers
in the district of [[Terminus]], while those who travel to
Sharn on the Old Road arrive at [[Wroann's Gate]]. Getting
to the better parts of Sharn from here means passing
through [[Black Arch]], a heavily fortified garrison district designed to repel enemies and withstand a full siege.
The ward offers a variety of services catering to travelers; the [[Dragoneyes]] district is a maze of taverns, inns,
brothels, and gambling halls. Dragoneyes is also noteworthy for being the site of one of the few [[changeling]]
communities in [[Breland]].

House [[Orien]] has a strong presence in Lower Tavick's
Landing, and Orien heirs, laborers, and teamsters can
be found in many of the districts. House [[Lyrandar]] and
House [[Deneith]] are also well represented, with their
representatives arranging matters of trade, transport,
and security.

These days, Lower Tavick's Landing is best known
for [[High Walls]], a former residential district converted
into a home for refugees from the [[Last War]]. High Walls
is filled past capacity, mostly by [[Cyrans|Cyre]] who were displaced by the [[Mourning]]. The gates are open at present,
but High Walls is designed to serve as a fortress
prison if the need arises, and the [[Sharn Watch]]
keeps an eye out for any signs of unrest. 

!! Districts and Noteworthy Locations

* [[Black Arch]]. This district is filled with checkpoints and enchanted gates. These portals are generally open, but in times of trouble, Black Arch can become an impassable fortress. The [[Sharn Watch]] maintains the local garrison. House [[Orien]] and House [[Sivis]] both maintain outposts here, ensuring that messages can be swiftly delivered through the city and beyond. 
* [[Cogsgate]]. This warehouse district is the gateway to the [[Cogs]], and shipments of ore and other goods regularly pass through here. House [[Kundarak]] has high-security storage facilities for rent, and a House [[Deneith]] outpost hires out [[Blademark|Blademarks Guild]] mercenaries for venturing below.
* [[Dragoneyes]]. Dragoneyes tends to the needs of weary travelers, providing a wide range of lodging, food, and entertainment for tourists. It's also the home of most of Sharn's [[changeling]] population, and many changelings use their gifts to entertain and amuse travelers. Some say that it's the home of the [[Tyrants]] criminal guild, but if so, that place is well hidden. 
** [[Chance]]. A legendary gambling hall. In addition to standard games, it's said that the host can cover a wide range of unusual wagers. 
** [[Velvet's]]. Staffed by [[changeling]]s, this comfortable inn specializes in fulfilling fantasies; both the staff and the rooms can be adapted to fit any scenario. Though some clients have romance in mind, others come to Velvet's to relive triumphs, to prepare for debates or trials, or for help in developing a new identity. 
* [[Foundation]]. A poor residential district.
* [[High Walls]]. This district was converted into an internment center during the [[Last War]]. Since the end of the war, it has been transformed into a refugee camp. Most of the residents are [[Cyrans|Cyre]] who fled the [[Mourning]], but High Walls also includes Brelish citizens who lost their homes in the war. It's a crowded and dangerous place, but it allows residents to maintain a squalid lifestyle at no cost. Currently the gates are open, but the [[Sharn Watch]] could seal them at any time. 
* [[Terminus]]. This district is based around Terminus Station, where the [[lightning rail]] enters and leaves Sharn. Most local businesses serve the station or travelers. 
** [[Terminus Station]]. An [[enclave]] of House [[Orien]], this site contains the lightning rail station.
* [[Wroann's Gate]]. Travelers who arrive on the main road enter Sharn through Wroann's Gate, passing below a huge statue of the legendary Queen [[Wroann ir'Wynarn]]. Many of the [[dragonmarked house]]s maintain shops here so travelers can send messages, hire bodyguards, or make use of other services. 
In the lower [[city|Sharn]], the poor must toil and struggle to survive. Few windows and only the occasional balcony or skybridge can be found among these levels,
where the tower foundations grow close together
and seem to merge with each other in ways almost
unimagined in the higher sections of the city. 

<<list-links "[tag{!!title}sort[title]]">>
1: A [[minotaur]] holding a large piece of wood that could serve as a maul approaches you and politely asks if you have any copper to spare.
2: Down a nearby alleyway, a [[dwarf]] punches a [[goblin]] in the stomach, then walks away laughing.
3: A thin [[human]] child has been following you, but never gets too close. She keeps coughing, and you can see red marks on her neck that might be an [[aberrant dragonmark]].
4: A [[human]] priest of [[Boldrei]] wheels a cart of bread loaves through the city, giving food to the homeless.
5: A [[goblin]] pushing a cart of rusty weapons and broken clay pots calls out, "Real artifacts of ancient [[Dhakaan]] for sale! Recovered from the ruins below!"
6: A man dressed in the livery of House [[Vadalis]] descends a tower wall mounted on the back of a giant spider. He shouts, "Need a ride? No faster way to get to the middle and upper wards! Reasonable rates!"
7: An [[ogre]] eating several rats on a skewer spits out a rodent skull at your feet.
8: A playful stray mastiff wags its tail as it approaches, drops a very large egg at your feet, and looks up expectantly.
9: A small, jovial crowd gathers around a [[goblin]] and a [[kobold]] that are getting ready to have an arm wrestling match. A [[dwarf]] calls for the crowd to place their bets.
10: Three [[harpies|harpy]] fly through the streets singing a jolly drinking song. Each carries a bucket around her neck, and passersby occasionally drop coins in one.
11: A [[human]] woman and a [[warforged]] with a silvered body are walking down the street together. They're too well dressed for this district, and are looking around as if lost.
12: A Khoravar [[half-elf]] in the robes of an oracle approaches and promises to give you the answer to all of life's problems for 42 copper crowns.
13: A [[human]] and an [[elf]] kiss passionately in an alley near your path. They notice you and quickly move apart.
14: Three [[shifter]] children run by you, yelling and chasing each other with wooden swords. They duck into a boarded-up building.
15: "Stop her! She stole my necklace!" a priest of the [[Sovereign Host]] cries, pointing to a grimy [[halfling]] clutching a silver chain and climbing up the side of a tower.
16: A young woman using a crutch and missing a leg approaches, asking if you can spare any coin to help a [[Brelish|Breland]] veteran of the [[Last War]].
17: Cries of alarm fill the street as a wooden crate from somewhere above crashes down into the lower city.
18: A splash of unidentified, putrid liquid falls from above, soaking you.
19: The generally unpleasant smell of the lower wards is pierced by the scent of something delicious being baked nearby.
20: A [[gnome]] sits at a table with a sign attached to it that reads, "I say [[Breland]] would have won the [[Last War]]. Change my mind."
21: Two [[changeling]]s sit on a bench in front of a tavern, sharing a flask. They take turns changing their forms into the people who enter and exit the building.
22: A [[human]] woman shouts at a group of [[Cyran|Cyre]] refugees, "Go home! Stop taking our jobs. Let the [[Mournland]] have you!"
23: A group of students from [[Morgrave University]] moves through the street, asking for directions to [[Dragoneyes]].
24: You turn down an empty street. A door suddenly materializes on a nearby building that previously showed no entrances.
25: Faded graffiti on a wall reads, "Need someone knifed? [[Tarkanan]]'s got you covered!"
26: A crowd gathers around a [[kobold]] playing a pan flute and leading a group of rats in a merry dance.
27: Four [[orc]]s jab at an [[ochre jelly]] with long staffs, trying to herd the ooze into the [[sewers]].
28: Several [[Cyran|Cyre]] refugees are gathered in a circle, singing a haunting song.
29: An old [[goblin]] offers to pierce your ears or nose for 5 copper crowns. She claims, "It will be painless. I know magic!"
30: A figure in red robes preaches, "The [[Last War]] was not the last! As long as the monarchy rules in [[Breland]], another war is inevitable. Rise up!"
31: A member of the [[Sharn Watch]] looks uncomfortable as she wanders the street. It's clear she doesn't come down here often.
32: Two [[human]]s run into an alley, drawing daggers as they go.
33: Two drunken [[human]]s exit a tavern singing a [[Karrnath]]i battle hymn. Another human shouts at them to "shut up or get shut up." The drunken pair sings louder in response.
34: Two children reeking of sewage argue over who gets to wear a shiny helmet that sits on the ground between them.
35: You find a pamphlet on the ground advertising the [[Silvermist Theater]]. Someone has scrawled on it, "The real party is in the basement."
//The most remarkable feature about this woman is her skin—truly as pale as snow, it almost seems to possess an opalescent sheen. She wears simple black clothes with no adornments and gloves. She seems to be lost in thought, and her eyes are filled with a deep sorrow. //

Luca Syara, the resident playwright of the [[Diamond Theater]] in [[Lower Menthis]], is an [[archfey]] who has taken on human form. At the start of the [[Last War]] she abandoned her post on the plane of [[Thelanis]]
to participate in what she thought was the righteous
cause of [[Cyre]]. After fighting on Cyre's side for more than half a century, she became disillusioned. On Thelanis, she had watched the world from on high; on
[[Eberron]], she saw thousands of mortals die over words
and lines on a map. She could not return to Thelanis. Her sense of idealism had been torn from her. In addition, she had been forbidden to fight in the war in the first place, and the overlords of Thelanis seek to punish her for her transgression. So she hides, trying to find meaning in this world of mud and death.

When the war ended, Luca came to [[Sharn]] and
chose to live among mortals once more. She began
to produce plays. She found a place in the [[Diamond Theater]], and over the last two years her star has rapidly risen in [[Sharn]] society. Scholars and philosophers spend hours debating her works in the taverns of the [[University District]]. Luca is much sought after
as a guest at social events and [[Morgrave|Morgrave University]] functions.
But Luca rarely makes public appearances. She does
not write in order to gain fame or fortune. Instead,
she writes to ease the torment in her soul.

Luca is one of the most powerful beings in
Sharn, but she labors under multiple handicaps. First
and foremost, she is restrained by her own despair.
She feels that in the long run no physical action will
make a difference—that saving a single mortal life is
merely postponing the inevitable. She defends herself
if she is threatened, but she does not act to protect
others. Even if she should be roused from her despair,
casting a powerful spell—such as raise dead—would reveal her presence to the powers of
[[Thelanis]], who still seek to call her to judgment.

In the long run, Luca could become a valuable ally
for the party. But winning the spirit of the archfey back
from the shroud of gloom should be a long battle—and
one that should not be won until the party is powerful
enough to consider her to be an equal.

Luca's disguise hides her true nature from
mortal eyes, but she cannot fool the [[fiend]]s. While
she is no longer interested in battling evil, the [[Lords of Dust]] do not know that—and they may attempt to
destroy the archfey. 
The Lucky Nines casino uses a
remarkable amount of magic in the decoration and
operation of the business. The owner, Fasha Yask
([[human]] [[wizard]]), employs a full staff
of spellcasters—wizards, [[bard]]s, [[artificer]]s, and [[magewright]]s—to keep the place running smoothly. [[Unseen servant|unseen servant]]s attend to customers' needs,
[[continual flame]] spells give illumination, [[illusion]]s provide glamour and glitter, and bouncers with [[detect thoughts]] and [[detect magic]] patrol the floor to catch those who would cheat the establishment. In addition, as
many would-be thieves have discovered, a variety of
magic [[wards|abjuration]] protect the place after hours.
When a mortal dies and their soul goes to [[Dolurrh]], the thread
connecting them to [[Irian]] is severed. Any [[ember]] fueled by
their spark dissolves, and the spark—the essence of the hopes
and brightest moments of the mortal's life—begins to fade.
But the sparks of the dead can merge together before they're
lost completely, creating a new, unique entity—a lumi, formed
from the same positive energy as the embers, but possessing
true consciousness and life. Unlike the embers, who aren't
fully conscious or aware of the memories they hold, lumi
are sentient creatures, each with a unique identity, though
their sparks give them fragments of many mortal lives. So
adventurers may meet a lumi who recognizes them, and who
has a few memories and traits of a fallen friend.

Lumi appear to be formed from solidified light, and generally
take a body shape similar to the strongest of the sparks that
formed them—usually those of sentient creatures. Their most
distinctive feature is their head—a sphere of light suspended
a few inches above their torso. Normally this is pure light,
but with conscious effort, a lumi can sculpt and maintain a
face. Like [[ember]]s, they don't need to eat, drink, breathe, or sleep, they don't
age, and they're immune to poison and disease. When a lumi is incapacitated, its body dissolves and its sparks fade. If an [[angel]] of [[Irian]] is nearby, it can consume these sparks; this won't save the lumi, but at least those memories are preserved.
While most lumi are [[humanoid]]s, there may be lumi formed
from the sparks of other creatures, like [[giant]]s or [[dragon]]s,
that dwell in [[layer]]s of their own kind.

Lumi serve as the caretakers of the [[ember]]s, and believe that
by helping the embers play their roles, they're strengthening
the light in the mortals the embers are connected to. Lumi
help develop and maintain the planar seeds, and some even
surrender their identity in order to become new creatures
within that seed; they believe that in doing this, they're sowing
the new layer with light. On rare occasions, lumi travel to
other [[plane]]s in service of the [[Architect]]s. They are brave and
compassionate, seeking always to spread hope, and ever
prepared to lay down their lives for the greater good. Lumi
can defend themselves, but they prefer to inspire others
when possible, rather than resort to violence.
The song of this lute can prompt spontaneous celebration even in the most dour creatures.

When you play an enchanting tune from this lute, each creature of your choice within 15 feet must resist the enchantment or else begins to dance in place for up to one minute. Creatures that can't be charmed are immune to this effect.

The magic woven into the music of the lute can be used for a total of 3 minutes, regaining 1 expended minute each day at dawn.
Luunkashtai is sister and Hand to [[Chanaakar]], the Speaker of the [[Keepers of the Word]] and spiritual leader of [[Adar]]. 

Chanaakar's sister was every bit as precocious as her
brother, though her talents run more to the mastery of
the body than of the mind. Still, she is [[kalashtar]], as was
their mother, and she knows the importance of balance. Luunkashtai has always loved her brother deeply,
and she places her duty to him at the highest priority.
However, since [[Raadu Xeel]] and the [[Endseekers]] attacked
Chanaakar, she has been more watchful and involved
with the community of [[Kasshta Keep]]. Her position as
the Speaker's Hand is a respected one, but she has also
earned the right to lead the Kashtai line of [[kalashtar]] in
the citadel. Some might say that being a member of the
elder council and a servant of the Speaker's is a conflict
of interest, but nobody questions Luunkashtai's sense of
duty and honor.

Luunkashtai has given birth to many children. [[Chanaakar]] appreciates being an uncle more than Luunkashtai likes being a mother, but the communal raising of children in [[Kasshta Keep]] allowed her to fulfill what she felt were her obligations to the future of the kalashtar while remaining a warrior. All six of Luunkashtai's living
children are adults, serving either in Kasshta Keep or
elsewhere in the land of refuge. Three others have died
on the borders in skirmishes with [[Riedra]]ns. 
One of the most ancient and feared of all curses, lycanthropy can transform the most civilized [[humanoid]] into a ravening beast. In its natural humanoid form, a creature cursed by lycanthropy appears as its normal self. Over time, however, many lycanthropes acquire features suggestive of their animal form. In that animal form, a lycanthrope resembles a powerful version of a normal animal. On close inspection, its eyes show a faint spark of unnatural intelligence and might glow red in the dark.

Lycanthropes can also shapeshift into a hybrid form of humanoid and beast, granting them fearsome bestial abilities while still allowing them to use tools or weapons.

Werewolves are the most commonly known form of lycanthrope, but were-versions of bats, bears, boars, rats, ravens, and other animals also exist.

Lycanthropes (and later, [[shifter]]s) were the target of the [[Silver Crusade]] over a century ago. The survivors fled to the corners of [[Khorvaire]], including [[Droaam]], where they eventually formed the alliance known as the [[Dark Pack]].

!! Shifters and Lycanthropes

[[Shifter|shifter]]s and lycanthropes are clearly related. Both transform
into a more bestial state. Shifters have affinities for bear, boar,
rat, and wolf; could it be mere coincidence that these are the
most common forms of lycanthrope? And yet, the differences
between shifter and lycanthrope are vast. Being a shifter
isn't a condition that can be passed by a bite. Shifters have
full control over their gifts, while lycanthropes struggle with
them. The beast within may shape a shifter's personality, but
it doesn't overwhelm it. By contrast, lycanthropy attempts
to destroy the victim's original personality and can turn the
most virtuous hero into a bloodthirsty murderer. Wererats
and werewolves are cruel killers... but the totem spirit Grandmother Wolf
doesn't encourage savagery, and Grandfather Rat doesn't
urge murder. And perhaps most important of all: shifters
themselves can become lycanthropes. This isn't in their blood;
lycanthropy is a curse, and it can afflict them just like it can
any other [[humanoid]].

The [[Moonspeaker|Moonspeakers]] [[druid]]s tell a tale of five [[shifter]] champions
who ventured too deep into the [[Towering Wood]]. They hunted
a great evil, but when they caught it, they were overwhelmed;
its evil filled their hearts, and it sent them back to prey on their
friends and families. If anyone survived their attacks, the evil
would seep through the wound and poison their hearts as well.
These, they say, were the first lycanthropes.

The [[Silver Crusade]] began when a dark power surged in
the Towering Wood, amplifying the power of lycanthropy.
The curse became more virulent. Victims fell prey to its
power more quickly, guided by some dark power beyond the
common evil of the curse. Within the Towering Woods, tribes of [[shifter]]s fought their corrupted kin. Beyond it, the farmers of
[[Aundair]] were tormented by raiding wolves and boars. When
the templars responded, the beasts that were slain reverted to
their natural forms, revealing that they were shifters. The word
quickly spread: all shifters were weretouched, capable of turning
into savage beasts. None could be trusted! Meanwhile, among
the [[shifter]] tribes, scouts warned of atrocities committed by
the foreign soldiers. In fact, the demagogues on both sides were wererats working to ensure that these possible allies would instead become bitter enemies... and the trick worked. Frightened templars and paranoid mobs slew many innocent shifters, and to this day the extremist sect known as the [[Pure Flame]] claims all shifters are servants of darkness.

The fact of the matter is that //lycanthropy is a weapon//; it
spreads through violence and turns its victims into killers. Its
origins may never be discovered, but the [[Moonspeaker|Moonspeakers]] tale is
as logical as any. Lycanthropes and shifters are related in that
the first lycanthropes were cursed shifters. The unknown force
responsible was likely also behind the surge that caused the
Silver Crusade—and it could rise again. One logical contender
is the [[daelkyr]] known as [[Dyrrn]] the Corruptor. It's said that
Dyrrn created [[doppelganger]]s by twisting [[changeling]]s; it
could have used this same technique to create lycanthropes
from shifters. Or it could have been the work of an [[overlord]],
an archfiend of the [[Age of Demons]]; some texts speak of the
[[Wild Heart]], an overlord who destroys civilizations and feeds
on primal cruelty. Ultimately, it's up to the DM to decide if the
answer will be revealed, and if so, what it is. In battling the
[[Cults of the Dragon Below]], could you face the original [[shifter]]
champions corrupted by Dyrrn? Or might the schemes of
the [[Lords of Dust]] unleash the Wild Heart?

While [[shifter]]s and lycanthropes aren't the same, the story
and the stereotype is well established. Everyone calls the
shifters “weretouched.” Beyond the [[Towering Woods|Eldeen Reaches]], there
are many shifters who indeed believe they are thin-blooded
lycanthropes. And the wounds caused by the [[Silver Crusade]]
and the [[Pure Flame]] will never completely heal. But despite
the stereotype, the shifters of the Towering Woods fear and
fight evil lycanthropes, and their tribes include rangers who specialize in hunting werewolves. Shifters and lycanthropes resemble one another, but they are not the
same—and shifters are just as vulnerable to the curse of
lycanthropy as humans are.
''Leader:'' [[Esravash d'Lyrandar]] <br/>
''Headquarters:'' [[Stormhome]] ([[Aundair]]) <br/>
''Dragonmark:'' [[Mark of Storm]]

//Sovereigns and Firstborn, grant me the four blessings promised to our people: dominion over the air, dominion over the water, fortune for my family, and fortune for my future.//

<div align="right">—From the //Oath of Lyrandar//</div>

House Lyrandar has long ruled the seas. Their [[kraken]]-marked [[galleon|elemental galleon]]s harness air and water [[elemental]]s and are faster than any mundane vessel. Control of
sea and river trade gave Lyrandar considerable power.
Now they reach out to the skies. Merely a decade old,
Lyrandar [[airship]]s have undermined the [[lightning rail]]'s
domination of overland travel.

House Lyrandar also controls the air in a literal way.
The Raincallers' Guild can use the Mark of Storms to
control the weather for its clients.

For many of the house's members, the house is more
than a family or business—its private island [[enclave]],
[[Stormhome]], is the closest thing they have to a homeland. Baron [[Esravash|Esravash d'Lyrandar]] is ambitious and often steers the
house to act in what he sees as the interests of all [[half-elves|half-elf]]. Lyrandar heirs help the [[Valenar]] [[elves|elf]] run their
young kingdom, and some believe that Valenar could
become a true homeland for the [[Khoravar|half-elf]]. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
The [[Lyrandar]] Enclave in
[[Dragon Towers]] is relatively small, but only because so
much of the house's operations are housed elsewhere
in [[Sharn]]. They have several offices in the waterfront
districts of [[Cliffside]] and [[Lower Dura]] to manage the
house's shipping interests, and a large office near the
[[airship]] docking tower at the top of [[Lyrandar Tower]],
in the [[Highest Towers]] district, manages the house's
air transport business. Though House [[Orien]] controls
the land shipping in and out of the city, House Lyrandar has offices in [[Lower Tavick's Landing]] to facilitate
trade between the two houses. [[Solia d'Lyrandar]] oversees
the [[enclave]] and supervises the operations of all the
smaller offices, as well.
[[Airship|airship]]s arriving from
elsewhere in [[Khorvaire]] dock at the top of [[Lyrandar]]
Tower. [[Skycoaches|skycoach]] linger here to carry arriving passengers to other destinations in the city, along with
guides hoping to win contracts for work in the city.
Of [[Sharn]]'s three arrival points (including the waterfront and the [[Orien]] [[lightning rail]] station in [[Lower Tavick's Landing]]), this is by far the least busy, as
well as the safest. 
Once a thriving [[Cyran|Cyre]] town, Lyrenton is a ruin on
the very edge of the [[Mournland]]. It's shunned by the
[[Ghaal'dar]], who believe it to be cursed. Any who visit the place are said to
quickly fall prey to a wasting disease. At night, a terrible wailing that echoes among the ruins can be heard for miles across the plains. 
A sea of liquid shadows laps against black
sands and basalt cliffs. A skull lies half-buried
in the sand, empty sockets gazing
into the roiling mist. The bone
isn't sun-bleached, for there
is no sun here—only a faint
glimmer from the smoky gray
moon that hangs in the sky.

Early scholars studying
reports of Mabar concluded that
it was the Plane of Darkness—that this physical property is its defining concept. However, the plane's eternal gloom is just a symptom of its true nature. Even the brightest day eventually ends in darkness,
and Mabar embodies this idea.
It's the shadow that surrounds
every island of light, patiently
waiting to consume it. It's entropy,
despair, and loss. This isn't the place
where the souls of the living go after death,
but rather, it's the plane of death itself—the hunger that
consumes both light and life.

Mabar is the source of negative energy, and the origin of
most [[undead]]. [[Manifest zone|manifest zone]]s—and most undead—tied to Mabar
consume the life force from the world around them. However,
some people maintain that negative energy itself is just a tool,
and that the power of Mabar can be harnessed for good.

!! Universal Properties

The Endless Night consumes life and light. It's a wellspring
of necrotic energy, where light is swallowed by gloom, and
unprotected creatures quickly die. Mabar has the following
universal properties.

* //''Necrotic Power.''// Living creatures' resistance to necrotic magic and [[necromancy]] is diminished. [[Undead|undead]] creatures are more difficult to destroy or frighten.
* //''Radiant Void.''// In order to cast a spell that deals radiant damage or restores health, any consequences to that roll include one additional stress from casting the spell.
* //''Eternal Shadows.''// There is no bright light in Mabar. Any object or effect that would usually create bright light only creates dim light.
* //''The Hunger of Mabar.''// Mabar consumes the life force of living things. Living creatures rapidly and continuously suffers necrotic damage. A creature that is incapacitated by this damage immediately dies and its body crumbles into ash. Natives of Mabar, creatures that have resistance or immunity to necrotic damage, and creatures under the effects of a [[death ward]] spell are immune to the effects of this property.
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.

!! The Consuming Darkness

The planes don't usually interact with one another. The
armies of [[Shavarath]] endlessly battle each other; they
don't lay siege to [[Xoriat]]. Each plane is an isolated, perfect
vision of a particular concept. But the concept that defines Mabar is the hunger to consume all light and life, along with the inevitable downfall of all things. When the proper forces align, Mabar pulls fragments of other planes into
the Endless Night; over time, these are drained of light and
hope and transformed into new layers of Mabar.

Initially, these captured planar fragments become part of the
[[Hinterlands]] and night falls in the region, but they don't yet have
any of Mabar's universal properties. Over time, the fragment's
properties from its previous plane are replaced by the properties
of Mabar. Once the fragment acquires the last property in
this process, the //Hunger of Mabar//, it's fully assimilated into
the Endless Night as a new symbol of entropy and despair.
Mortal inhabitants of the fragment are typically transformed
into [[shadow]]s or other forms of [[undead]], while [[immortal]]s might
become [[yugoloth]]s, or twisted into dark mockeries of their former
selves. The conversion is slow and inevitable, and the Dark
Powers of Mabar don't have to take any action—but regardless,
most enjoy tormenting the fragments. [[Undead|undead]] prey on the edges
of fragments besieged by the [[Bone King]], and [[yugoloth]] soldiers
raid fragments claimed by the [[Empress of Shadows]].

As an example of a converted fragment, consider the Drifting Citadel. This floating tower was once a library in [[Syrania]]. Now it drifts through an icy void, grand windows shattered and books fallen from their shelves. [[Shadow|shadow]]s of sages clutch at
books with insubstantial fingers, never able to turn a page. The
angelic librarians have become tormented spirits who hunger
for knowledge, draining the memories from any creature
unfortunate enough to fall into their grasp.

At times, the great powers of other planes have tried to
stop Mabar from capturing fragments of other planes—but
to no avail. The darkness can't be stopped, as it's part of
the machinery of reality—the Endless Night consumes and
fragments are lost. Those pulled into the darkness can fight
against it, but the ultimate outcome is inevitable. Were it not
for [[Irian]], Mabar would eventually consume everything. But
as the Night consumes, the Dawn restores, and so balance
is ultimately maintained.

The process of consumption is slow and ongoing, and there
are always multiple fragments in the [[Hinterlands]]. It may take
Mabar months, years, or even centuries to consume a fragment.
As the properties are replaced, the landscape of the fragment
changes to reflect it. In a former fragment of [[Lamannia]], the
vegetation around the borders begins to wilt. Creatures become
sickly, and totems may not be seen at all, or they might be
terrifying shadows, killing the grass they walk on.

Mabar typically targets other planes, but it can claim pieces
of the Material Plane as well. This initial effect is reminiscent
of the [[Mourning]]; gray fog rolls over the region that's affected,
and all that's caught within the fog is lost. However, Mabar
typically claims a region the size of a town, or perhaps a county;
it's never been known to claim an entire country. Typically
the fog fades within a day, leaving a barren region stripped of
vegetation and structures. Mabar's power is such that it also
consumes the memories of the place; most mortals simply
forget that the affected region ever was anything but barren,
and forget the people consumed in the process. This process
isn't perfect or absolute, but when contradictory information
is presented, people instinctively try to rationalize it. Maybe
they heard a story about the lost town? The uncle who lived in
that town? Didn't he die in the war? In short, player characters
might realize something is wrong, but be unable to convince
others of it. Because of this magical effect and the fact that
it happens so rarely, the common people of [[Khorvaire]] don't
know about this aspect of Mabar. But if a group of strong-willed
player characters investigates it, they might be able to discover
the cause of lost colonies and other mysteries.

!! Denizens

From shadows of mortal souls to Mabar's [[Dark Power]]s, the
Endless Night's inhabitants all embody aspects of darkness,
despair, and death. The plane's denizens fall into these five
general categories.

!!! Shadows

[[Shadow|shadow]]s are the most numerous inhabitants of Mabar.
These semi-sentient spirits linger in places where you
might expect to find people, forlornly pantomiming the
roles of the absent inhabitants. You'll find the shadows of
children playing on the corner of a Mabaran street, and
the shadow of a priest silently praying to an absent and
unknown god in a shattered temple. In his //Planar Codex//,
[[Dorius Alyre ir'Korran]] asserts that every mortal has a
shadow in Mabar, much like the conscripts of [[Shavarath]];
this theory is supported by the shadow-gardeners of the
[[Amaranthine City]]. However, the shadows of Mabar don't
speak, and they're driven by impulse and instinct; if they're
tied to living creatures, they're just a dark sliver of each soul.
The shadows hunger for the lifeforce of mortals, but they
ignore creatures that have resistance or immunity to necrotic
damage or that are shielded by the [[death ward]] spell.

!!! Yugoloths and Other Immortals

The [[immortal]]s of Mabar are spirits of darkness. The
[[yugoloth]]s—embodiments of hunger, despair, and death—are
the citizens of a vast empire centered on the [[Amaranthine City]],
most serving as soldiers. In the [[Hinterlands]], yugoloths battle
[[celestial]]s and [[fiend]]s trapped in these doomed fragments, until
the fragments are ultimately fully drained, assimilated, and
their immortal inhabitants converted to a form more suited
to the Endless Night. It's questionable if these battles actually
speed up the assimilation, or if they're simply a way for the
yugoloths to pass the time. If there are no immortals to battle,
the yugoloths simply spread despair; an [[oinoloth]] may spread
plague through a fragment of the Material Plane, then spend
a year watching the result.

Some [[yugoloth]]s are gardeners, but what they cultivate are
[[shadow]]s. By shaping a mortal's shadow, a [[fiend]] can fill that
mortal with despair or drive them down dark paths. When
the associated mortal eventually dies, the yugoloth can refine
that shadow into [[quintessence]]; this substance is crafted by
yugoloth artists and artisans into tools and weapons that
can cause death and despair, should they make their way to
the mortal world. While most gardeners work with shadows,
some go into the fragments of the [[Hinterlands]] to directly
torment the hostages in slow and subtle ways. Other yugoloths
are philosophers and oracles who contemplate the nature of
entropy and the way in which all things will end. And some
serve menial roles in the [[Amaranthine City]].

The yugoloths make up the majority of the immortals of
Mabar, but there are others. Mabaran [[incubi and succubi|incubus/succubus]]
embody emotional pain and loss. Some prey on hostages in
fragments, while others live alongside the yugoloths and ply
their wiles on them; the suffering of a [[fiend]] is just as satisfying
to them as that of a mortal. Other incubi and succubi are
gardeners, and some believe that these can drain the love from
a mortal heart by bleeding it from their shadow. There are also
immortals from other fragments that have been transformed—[[angel]]s and [[devil]]s reshaped by the Endless Night.

!!! Undead

Mabar is the origin of most [[undead]]. Sentient undead are
created when a dying creature's soul is bound to Mabar
instead of passing to [[Dolurrh]]. The energy of Mabar sustains
the creature—be it [[wraith]], [[mummy]], or [[vampire]]—while the
creature serves as a conduit to the Endless Night. This is
why many undead directly consume the life force of other
creatures. Even those who don't do so directly may drain life
from the world simply by existing; this is why plants are often
withered in areas frequented by the undead. Likewise, this
connection to Mabar has a corrupting effect that pulls most
intelligent undead toward evil alignments. Even people who
were good in life find that Mabar erodes their empathy and
compassion; it's a struggle to maintain your humanity when
your existence is bound to the Endless Night.

There are also many undead in Mabar itself. Many of these
are merely symbolic [[manifestation]]s of Mabar, not actually
the remains of mortal beings; the endless skeletal armies
of the [[Bone King]] are manifestations and the Bone King
himself was likely never mortal. [[Specter]]s and [[wraith]]s are
especially powerful [[shadow]]s; some are the work of gardeners,
while others emerge from the pure darkness of Mabar. The
more desolate planes, like the [[Last Desert]], are inhabited by
[[nightwalker]]s, powerful conduits of negative energy; they often
attack fragments, feeding on the energy of the fragment and
accelerating its assimilation.

Beyond this, the souls of sentient [[undead]] are bound to
Mabar. When a [[vampire]], [[mummy]], [[lich]], or similar creature
is physically destroyed, it doesn't get the release of [[Dolurrh]];
instead, the soul becomes a [[wraith]] in Mabar, forever driven
by the hunger of the Endless Night. Most are driven mad by
this process, but perhaps the adventurers might once again
encounter a vampire they previously killed, now a spectral
lord in the Endless Night.

!!! The Dark Powers

The mightiest and most malevolent beings in Mabar are
known as the [[Dark Power]]s. Each embodies a particular
aspect of Mabar and rules a domain of linked [[layer]]s.

!!! Hostages

The fragments in the [[Hinterlands]] hold all the creatures that
dwelled in each before they were captured. When a mortal dies
there, they return as a [[shadow]] or [[undead]]. [[Immortal|immortal]]s are bound
to their fragment; they can't leave it, and if they die, they're
reborn there. So creatures from any plane could be found here,
including the Material Plane. A chunk of [[Risia]] might hold [[frost giant]]s. A fragment of the [[Endless Ocean]] might have a pod of
[[merfolk]]. But the longer they remain in Mabar, the more the plane
corrupts the fragment and the creatures in it, until they become
shadows, undead, or something worse. A mortal creature that
lives through this process may have all the light drained from its
soul or be consumed by despair. While it might retain its original
appearance, it should be considered an aberration; in the end,
it will seek to spread misery and extinguish both light and life.

!! Layers

It's always night in Mabar, and its shadowy moon, [[Sypheros]],
remains fixed in the sky. While the setting varies across
its countless [[layer]]s—a desert, a ruined city, the withered
remains of fertile farmland—the story is always about loss,
entropy, despair, and death. A layer might contain a massive
battlefield filled with the intertwined bones of [[dragon]]s and
[[giant]]s. Ossuaries and catacombs. Crumbling memorials,
with names too faded to read. Barren orchards and dried
riverbeds. And tombs, from tiny unmarked crypts to the
death-palaces of fallen rulers, necropolises filled with traps
and treasures. And this being the Endless Night, some of
those dead rulers still dominate their domains, whether they
take the form of [[undead]] or simply malevolent will.

Layers are linked in domains, and each one is bound to one
of the [[Dark Power]]s. The denizens of the layers and the overall
themes reflect the influence of that Dark Power, so layers in
the [[Kingdom of Bones]] are largely inhabited by [[undead]], while
[[yugoloth]]s dwell in layers bound to the [[Amaranthine City]].
Some layers are bounded by physical barriers, but most either
loop back on themselves or end in walls of fog—not unlike the
[[dead-gray mists]] of the [[Mournland]]—and any who wander into
the mists reemerge elsewhere in the layer. Within domains,
layers are often connected by physical portals—perhaps a
massive gate or a pool of shadows. Moving between domains
requires //plane shift// or performing a ritual tied to that domain.
These rituals need not be magical; they're simply secrets that
have to be learned. If you're in the [[Kingdom of Bones]] and
you want to get to the [[domain|Last Desert]] of the [[Queen of All Tears]], the
answer is simple: All you have to do is sincerely cry, and your
tears will take you there.

Here are a few examples of Mabar's domains, each of
which could hold many layers.

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Here are a few ways Mabar can influence the Material Plane.

!!! Manifest Zones

Mabaran [[manifest zone]]s are infamous and almost universally
shunned, for nearly all are harmful to the flora and fauna of
the region. In some zones, life withers and dies. In others, it's
twisted in strange ways; plants may seek the blood of living
creatures, or grow unnaturally pale and cold. Rot and decay
are often accelerated, and disease can thrive. However, such
regions are also often powerful sources of negative energy.
Mabaran zones often possess the //Necrotic Power// universal
property, and there are epic rituals and [[eldritch machines]] that
require a Mabaran manifest zone. The [[Odakyr Rites]] that create
[[Karrnathi undead]] are an example of this, and the [[Karrnath]]i
city of [[Atur]] is built on a Mabaran zone. This often has a curious
synergy: if the negative energy of a Mabaran manifest zone is
regularly channeled into rituals or spells, it prevents that energy
from spreading disease or killing vegetation. In his //War and Death: A History of Karrnathi Necromancy//, Jolan Hass Holan
asserts that the plagues and famines [[Karrnath]] suffered early
in the war were due to the [[Seekers|Blood of Vol]] who normally tended those
zones being pushed out of them due to strategic concerns—which, in turn, forced Karrnath to embrace [[necromancy]] to
counter the effects of those famines.

While Mabaran manifest zones rarely serve as gateways to the
plane, they are powerful sources of negative energy and produce
undead. Skeletons, [[zombie]]s, and [[ghoul]]s can all spontaneously
rise in Mabaran manifest zones, and more powerful undead can
be created under the proper circumstances.

!!! Coterminous and Remote

On nights when Mabar is coterminous, the //Necrotic Power//
property encompasses the entire world, and the radius of all light
sources are halved. During these periods, regions of deepest
darkness can serve as gateways to Mabar, releasing shadows or
other foul things into the world. This primarily occurs in regions
that are suffused with despair or misery, and only at night,
ending as soon as dawn breaks. As a result, during coterminous
periods, friends and family usually huddle together indoors,
keeping the lights burning and telling cheerful tales.

When Mabar is remote, all creatures have resistance to
necrotic damage, and [[undead]] are more susceptible to being turned or frightened.

Traditionally, Mabar is coterminous for three nights in the
month of [[Vult|Khorvaire calendar]]—the nights of the new moon closest to the winter
solstice. The people of the [[Five Nations]] call this time [[Long Shadows]]. Mabar is remote less frequently, for a period of five
days around the summer solstice, but only once every five years.

!!! Mabaran Artifacts

Mabaran artifacts are formed from [[quintessence]], the solidified
energy of Mabaran shadows. Those who wield such items often become
cold and cruel. [[Yugoloth|yugoloth]] artisans can create unique items with
even greater powers, but the purpose of these tools is to spread
despair and misery. Some drain health from their wielders to
pay for their deadly abilities; others cause the bearer to rise as
an [[undead]] creature after death.

The most powerful Mabaran artifacts are [[battleloth]]s—yugoloths that have allowed themselves to be forged into objects to spread death and despair. These are intelligent and powerful, but drive their wielders down dark paths.

When plants do grow in Mabaran [[manifest zone]]s, they're
often poisonous; [[bloodvine]] can produce a variety of deadly
venoms. However, the [[elves|elf]] of the [[Bloodsail Principality|Bloodsails]] have
mastered the art of gardening in Mabaran zones, and there,
you can find wondrous plants that feed on shadows instead of
sunlight—[[darkwood]] trees, [[ebon sedge]] grass, and more. Here,
they produce spices and wines unlike any others in the world.

!! Mabaran Stories

Mabar inspires cruelty and despair. Its necrotic energies can
be a general environmental threat or harnessed as a weapon
by [[warlock]]s or [[necromancer|necromancy]]s. Here are some stories you might
explore about this plane.

//''Fragmented Mourning.''// It's unlikely that the [[Mourning]] was
caused by Mabar. The effect is much larger than any fragment,
the lingering strangeness doesn't resemble Mabar, and people
know it's been destroyed, unlike with most fragments. However,
it's entirely possible that part of [[Cyre]] could have been claimed
by Mabar as the Mourning unfolded—perhaps [[Metrol]] still exists
in the [[Hinterlands]] of Mabar! If so, is there any chance it could
be saved? Is Queen Dannel alive? Or could she have somehow
been responsible, sacrificing her own people to become one
of the [[Dark Power]]s herself?

//''Shadow on the Moor.''// While passing across a moor, the
adventurers are set upon by the shadows of wolves and hawks.
The following dawn, they discover that one of the characters
is missing their shadow; it's been lost in the [[manifest zone]]. Do
they need to go back and find it? If so, how? If not, what does it
mean that this character no longer has a shadow?

//''The Master of Shadholt.''// A cruel [[warlock]] holds a small
village in his grip. When the adventurers defeat the villain, they
make an unpleasant discovery: the village of Shadholt is in a
Mabaran manifest zone, and while the warlock was a villain,
his rituals also prevented the zone from spreading plagues
throughout the entire region. Can the adventurers help one
of the villagers take the warlock's place, forging the pact and
gaining the powers needed to contain the threat? What [[Dark Power]] must they deal with?

//''The Drifting Citadel.''// The adventurers are contacted by
Itheriel, a scholar-[[angel]] of [[Syrania]]. The celestial seeks to
recover a tome of knowledge from a library tower that was
consumed by Mabar. If Itheriel goes to Mabar, they'll be trapped
there for eternity; they need the adventurers to recover the
book. What isn't Itheriel telling them about the book? Could this
celestial relic have become the //Book of Vile Darkness//? What
else can be found in the drifting tower?
This dread device draws on the power of [[Mabar]], infusing the dead with the malign energy of the Endless Night. While it is active, any [[humanoid]] that dies within
2 miles of the resonator reanimates 1 minute later as a [[zombie]] under the control of the creature controlling the device. 
While holding this magic weapon, you can release a wave of terror. Each creature of your choice in a 30-foot radius extending from you that can't resist the magic becomes frightened of you for 1 minute, taking every opportunity to get as far from you as possible.
Madra Sil Sarin is the deadliest assassin in the service of the
[[Trust]]. She is a disturbing enigma even to the other
[[gnome]]s; she answers only to the Trust, and she has
killed quite a few gnomes to preserve the secrets of the
embassy. [[Doran Del Doras]] can use his telepathic bond to request her
services, but only the Trust can approve an assassination. It is important to remember this: while she is one of the most dangerous women in [[Khorvaire]], she
only acts if she has direct orders from [[Zilargo]]. She
does not use her skills lightly or squander them on
personal vendettas.

Madra spends most of her time in [[Sharn]] under cover of
invisibility, silently watching the city and waiting for
instructions. With her [[ring of sustenance]] and telepathic
bonds, she rarely needs to verbally or physically interact with people (she uses [[prestidigitation]] to keep her clothing clean). When Madra must interact with others, she uses [[disguise self]] to conceal her true appearance; even [[Doran Del Doras]] does not know what she really looks like. She also carries at least three different sets of notarized identification papers.

She is often called out of Sharn
to serve the Trust in other parts of Khorvaire—but
it’s usually impossible to tell. And, of course, there
may be any number of additional Zil assassins hidden
in the [[embassy|Zilargo Embassy (Sharn)]] waiting to be activated—though it is
unlikely that any possess the skills or equipment to
match Madra. 

Generally, Madra is only seen when she attacks.
If she can help it, she isn’t seen at all; she strikes from
the shadows and then becomes invisible within seconds, before her opponents have a chance to locate her. She carefully plans out every attack, preparing
specific poisons and spells for the assignment. She
often uses [[feather fall]] to evade enemies if an attack fails,
leaping off of a bridge and disappearing into the
chasms of the city.
Madwood Gulf lies off the eastern coast of [[Aerenal]], leading inward towards the city of [[Kathuran]].
This province of [[Syrkarn]] dominated by savannah, where herds of bison and domesticated goats, deer, and horses roam the grasslands. Here, the clanholds of the Marrah Plains maintain order while fending off raiders and aggressive bands of [[Karrak]] cultists.

[[Banigar Bihurrani]] is the sahar of a small village in the Marrah Plains.
Mysterious and remote, the maenads of [[Sarlona]] are beings of tempestuous emotions held in check by rigid
self-control. Because of an ancient
tragedy that befell their race, they
harbor a deep spiritual turmoil. The
maenads know little about their origin. Their
legends, supported by brief and intermittent
contact with [[aventi]] explorers, claim that a great [[human]]
civilization once existed among the islands of the [[Lhazaar Principalities]], and that it sank beneath the waves some
two thousand years ago in a magical cataclysm. Those who
were at sea when the cataclysm occurred sailed east to find
a new home, coming ashore on the [[Tashyvar Islands]] of
northwest Sarlona. There the survivors underwent some
fundamental physical and spiritual transformation, and
a new race was born.

Physically, maenads closely resemble humans,
although they tend to be taller and heavier. Most distinctively, maenads' skin is dusted with bits of living crystal,
giving them an odd and ghostly luster in certain kinds
of light. Maenads also have a racial propensity toward
[[psionics]], with virtually every individual manifesting
[[wilder]] abilities in puberty.

!!! Maenad Lands

The maenads of [[Tashyvar|Tashyvar Islands]] have
built their society in the islands and shores of northwestern [[Sarlona]], colonizing as far south as [[Winterstead]]
at the mouth of the [[Qonama River]]. Maenads in Sarlona
are governed by a strange seasonal rhythm, almost maniacally active in the long days of summer, but withdrawn and torpid during winter's long darkness. New
maenad colonies are apt to appear by the dozens in spring
and summer, only to be apparently abandoned when the
season turns.

In an odd coupling, the maenads have formed close
relations with the [[Saartuk]] [[shifter]]s, and integrated groups
can be found throughout the rivers and frigid beaches of
the [[Tundra|Tashana Tundra]] shoreline. Maenads are expert mariners in
these shallow waters, and they facilitate trade throughout
the region with their ingenious skiffs and boats.
A few elite soldiers of [[Maenya|Sora Maenya]]'s Fist usually accompany an
emissary of [[Katra's Voice]]; if the Voice can't soothe troubles,
the Fist will end them. These armored [[troll]]s and [[ogre]]s are
deadly and utterly devoted to the [[Daughters|Daughters of Sora Kell]]; a single war
troll can crush a band of insubordinate [[minotaur]]s.
You touch a willing creature who isn't wearing armor, and a protective magical force surrounds it until the spell ends up to eight hours later. The protective force is about as protective as a suit of leather armor, but weighs nothing. The spell ends if the target dons armor or if you dismiss the spell.
A spectral, floating hand appears at a point you choose within 30 feet. The hand lasts for the duration or until you dismiss it. The hand vanishes if it is ever more than 30 feet away from you or if you cast this spell again.

You can control the hand at will. You can use the hand to manipulate an object, open an unlocked door or container, stow or retrieve an item from an open container, or pour the contents out of a vial. You can move the hand up to 30 feet each time you use it.

The hand can't attack, activate magic items, or carry more than 10 pounds.
If you are proficient in a specific set of artisan's tools, you can cast this spell to gain advantage on an action using those tools.
In [[Khorvaire]], magic is part of everyday life. A chef might
use [[prestidigitation]] to heat and season food, while a
blacksmith uses [[mending]] to perform minor repairs and
guidance to help inspire their work. Those who work minor magic into their labors are called magewrights. 

Most magewright education isn't done at universities. It's handled by trade schools maintained by the associated guild. So if you want to be a healer, you'll study with the Healer's Guild of House [[Jorasco]]; if you want to be a locksmith, you'll get your training from the Warding Guild of House [[Kundarak]]. When you're done, you'll be licensed by the guild, which will also help place you with a business.

Magewrights weave magic into their work. They are not only
limited spellcasters, but skilled professionals who use magic as a
tool. In addition to a limited range of magic ability, magewrights
are also skilled in the mundane aspects of their specialty. A
magewright chef doesn't make food by snapping their fingers;
they're skilled with cook's utensils, as well as using [[culinary transmutation and Zolan zest|magewright cantrip]] as tools in their repertoire.
[[Magewrights|magewright]] and other lesser spellcasters might not be able to perform every facet of the endlessly useful [[prestidigitation]] cantrip, instead using more limited cantrips when weaving their magic into their work. Examples include:

* //''Boldrei's Broom.''// You clean an object or surface made from wood, stone, or metal no larger than 1 cubic foot.
* //''Culinary Transmutation.''// You chill or warm up to 1 cubic foot of nonliving material.
* //''Grogan's Grime.''// You soil an object or space no larger than 1 cubic foot.
* //''Halan's Dramatic Entrance.''// You instantaneously cause an unlocked door or window within 30 feet to fly open or slam shut.
* //''Incendiary Purge.''// You extinguish a candle, a torch, or a small campfire.
* //''Kellan's Kindling.''// You light a candle, torch, or small campfire.
* //''Phiarlan Whispers.''// You create an instantaneous sound that originates from a point of your choice within 30 feet, such as a rumble of thunder, the hooting of an owl, or ominous whispers.
* //''Shol Flame.''// You cause flames to flicker, brighten, dim, or change color for 1 minute.
* //''Tialaen Tongue.''// Your voice is up to three times as loud as normal for up to one minute.
* //''Verran's Textile Restoration.''// You clean an object made of cloth or leather no larger than 1 cubic foot.
* //''Zolan Zest.''// You flavor up to 1 cubic foot of nonliving material; this lasts for one hour.
The world of [[Eberron]] thrums with the power of magic. [[Artificer|artificer]]s, [[magewright]]s, [[wizard]]s, and other spellcasters produce an abundance of magic items, particularly those with the "common" [[rarity]]. 

!! Crafting Complications

Sometimes, the process of creating magic items of "uncommon" [[rarity]] or higher can involve complications. The table below includes some options.

| !<<dr d6>> |!Complication |
| 1 |House [[Cannith]] or another [[dragonmarked house]] takes an interest in your work. Do they view you as a threat, or are they impressed by your techniques? |
| 2 |A mishap creates a temporary [[manifest zone]]. |
| 3 |You need to acquire an additional rare component to complete your work. Time for adventure! |
| 4 |The shifting balance of the [[plane]]s interferes with your work; you must wait for the current planar alignment to change. This delays your work by <<dr "2d6">> days. |
| 5 |Your efforts draw the attention of the [[Aurum]], the [[Chamber]], the [[Emerald Claw]], or the [[Lords of Dust]]. |
| 6 |Your item becomes sentient. |
The spellcaster creates three or four glowing darts of magical force. Each dart targets a creature of their choice that they can see within 120 feet. A dart deals a small amount of force damage to its target. The darts all strike simultaneously, and the caster can direct them to hit one creature or several. This spell is highly accurate and almost never misses its marks.

Casting this spell with 5-7 darts would qualify as a "rare" tier spell. Anything more than that would be "legendary".
You implant a message within an object in range, a message that is uttered when a trigger condition is met. Choose an object that you can see and that isn't being worn or carried by another creature. Then speak the message, which must be 25 words or less, though it can be delivered over as long as 10 minutes. Finally, determine the circumstance that will trigger the spell to deliver your message.

When that circumstance occurs, a magical mouth appears on the object and recites the message in your voice and at the same volume you spoke. If the object you chose has a mouth or something that looks like a mouth (for example, the mouth of a statue), the magical mouth appears there so that the words appear to come from the object's mouth. When you cast this spell, you can have the spell end after it delivers its message, or it can remain and repeat its message whenever the trigger occurs.

The triggering circumstance can be as general or as detailed as you like, though it must be based on visual or audible conditions that occur within 30 feet of the object. For example, you could instruct the mouth to speak when any creature moves within 30 feet of the object or when a silver bell rings within 30 feet of it.
A magical implement is a [[magic item]] that serves as a focus for spellcasting. An implement can enhance the effects of certain categories of spells, or even grant the spellcaster access to spells they don't ordinarily have the ability to cast. Some implements allow casting spells using magical energy imbued in the item itself, rather than the spellcaster's; these items usually can only be used a few times per day.

<<list-links-article "[tag{!!title}sort[title]]">>
Magical Pigments is a gallery in [[Upper Tavick's Landing]] displaying paintings by
local artists.
Thirty years ago, a pirate named Magwroth thought to
seize control of the [[Cloudreavers]] of the [[Lhazaar Principalities]], challenging the rule of Sea Prince [[Mika Rockface]]. The results
were one-sided. Magwroth was hideously injured, his
vessel //Devourer’s Hand// was severely damaged, and the
rest of his ragtag fleet was sunk. After limping away
under tattered sails, Magwroth was never seen again,
and it was assumed that //Devourer’s Hand// had vanished
beneath the waves.

Would that it had.

Carried on furious currents through the blinding
gray mists east of [[Lastpoint]], //Devourer’s Hand// passed through an unknown [[demiplane]] of anomalous elemental forces. There, Magwroth and the remains of his crew were consumed by a host of inhuman creatures that
now sail the ghostly [[Chaos Fleet]] across the [[Lhazaar Sea]].

Though it wears the face and form of Captain Magwroth, the commander of this fleet is an [[elemental]] being of pure destructive energy. It now occupies Magwroth’s flesh, having transformed him into an [[elemental drudge]].

For the moment, “Magwroth” seems content to
attack and raid lone vessels. However, the ships
and crews he destroys are taken under his control,
and so the [[Chaos Fleet]] has begun to grow. In time,
Magwroth could threaten not just the [[Lhazaar Principalities]] but all of coastal [[Khorvaire]]. Only then might his ultimate objective become clear: to destroy all life.

From a distance, the captain resembles the [[half-elf]] Magwroth from thirty years past, but on closer inspection, the facade falls. The elemental’s gaping wounds reveal burning
fire racing like blood beneath its skin. Ugly bulges
mar its flesh, tearing open as it moves to reveal icy
protrusions beneath. Lightning dances within its
pupils, and a dark smoke hisses from its blackened
teeth and lips.
Lady Warden Maira ir'Talan, a distant relative of the
[[Lord Commander|Iyan ir'Talan]] (from the [[Wroat]] ir'Talans), leads the [[Blackened Book]]. A gifted
[[diviner|divination]], Maira is a highly effective leader. What none
know is that she's also an agent of the [[Dreaming Dark]]. Five years ago, a [[kalaraq]] [[quori]] named [[Tirashana]] implanted a [[mind seed]] in her thoughts. Maira continues to do her job while concealing any evidence of the Dreaming Dark's schemes. 
Many people believe that the city of Making was at the epicenter of whatever caused the [[Mourning]]. The cataclysm reshaped the terrain around the city, creating the great highland formation known as the [[Glass Plateau]]. [[Living spell|living spell]]s and strange creatures gather in and around the city. A secret
[[Cannith]] facility is speculated to lie in the city's subterranean depths. 
Mala Boromar d'Jorasco is an unmarked heir of House [[Jorasco]], and
her marriage to [[Saidan Boromar]] has formed important ties between the crime lord and the healers of [[Sharn]]. Jorasco healers help [[Boromar|Boromar Clan]] [[halfling]]s free of charge, with the expectation that Saidan will reimburse them for their efforts; this emergency assistance has saved the lives of many Boromars ambushed and left for dead by [[Daask]] brigands. 
Maleshari is a member of the [[Thousand Eyes]] and the personal
bodyguard of ambassador [[Jorasesh]]. She accompanies Jorasesh wherever he goes, but rarely speaks. She dislikes her lord’s occasional dealings with the [[Dreaming Dark]], but does not allow her feelings to interfere
with her duty.
High Priest Hass Malevanor is the greatest spiritual leader of the highly individualistic [[Blood of Vol]] faith. He is a powerful [[oathbound|mummy]] abactor who oversees the rites and rituals of blood within the [[Crimson Monastery]] in [[Atur]], [[Karrnath]]. 

Malevanor has been [[undead]] for over fifty years. While living, he and [[necromancer|necromancy]] Gyrnar Shult developed the [[Odakyr Rites]] for creating [[Karrnathi undead]], and worked with the Order of the [[Emerald Claw]] when they still acted as an official chivalric order of the [[Karrnath]] military. Despite this, Malevanor condemns the actions and mission of the modern-day Emerald Claw.

Malevanor tends to and receives guidance from the [[Crimson Covenant]], a circle of the oldest [[undead]] champions of the faith, who reside in the catacombs beneath [[Atur]].
A creature that inhales this poison and can't resist its effects is blinded for up to 1 hour.


''District Type:'' [[Goblinoid|goblinoid]] slum<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrine (The
[[Mockery]]), poor lodging (7), poor food (45), average
trades (4), poor trades (1116), average services (4),
poor services (41), poor residences (344)<br/>
''First Impression:'' Chaos and noise. This district
is run-down and filthy. Smoke fills the air and rats
scurry in the shadows. [[Goblin|goblin]]s are everywhere,
squabbling, haggling, and shouting at one another.
A [[bugbear]] forces his way through the crowd, flinging
goblins aside. A trio of [[hobgoblin]] warriors emerges
from a tavern and the crowd instantly parts.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Oldkeep]] (southwest); [[Gate of Gold]] (south); [[Ashblack]] (below); [[Tumbledown]] (above)

[[Sharn]] was built from the ruins of Shaarat, which
was built atop old Duur'shaarat. All of these cities
had one thing in common: [[Goblins|goblinoid]]. Malleon
the Reaver enslaved the goblins of Duur'shaarat
and forced them to build his city. King [[Galifar I|Galifar ir'Wynarn]]
offered the goblins freedom in exchange for their
service as soldiers and laborers. For many of the
goblins, there was little difference between life as
a slave and life as a free laborer, but over the centuries some learned valuable trades and established
their own businesses. While the goblins were officially citizens of [[Galifar]], few [[human]]s enjoyed their
company, and they found themselves congregating
in Malleon's Gate.

For centuries, goblins were the sole inhabitants
of Malleon's Gate. But with the rise of [[Darguun]], all
manner of [[goblinoid]]s have emerged from the [[Seawall Mountains]], and many have come to [[Sharn]] in search
of opportunity. The relationship between the “city
goblins” and these new immigrants is not entirely
amicable; the [[Ghaal'dar]] [[bugbear]]s and [[hobgoblin]]s are
used to dominating the [[goblin]]s of [[Darguun]], while the
goblins of Sharn value their independence and rights
as citizens. [[Daask]] and the recent immigrants from
[[Droaam]] have brought new stability to the situation, as
bugbear and goblin alike have to respect the power of
a [[medusa]] or [[oni]]. Nonetheless, Malleon's Gate
remains a very dangerous place. While most of the
Sharn goblins happily do business with people of all
races, a number of goblin gangs, bugbear bullies, and
unpleasant [[ogre]]s enjoy taking out their frustrations
on strangers.

The [[Sharn Watch]] stays out of Malleon's Gate,
but recently the [[medusa]] [[Gasslak]] has assumed the responsibility of maintaining order in the district. Gasslak only uses his
power to deal with major disruptions; he doesn't
care if a few bugbears throw their weight around.
But if adventurers start killing goblins by the score,
Gasslak may take personal action or call on [[Daask]]
to deal with the troublemakers. A few statues scattered around the streets give mute testimony to
Gasslak's power. 

!! Noteworthy Locations

* [[Bloodstone Inn]]. A [[Darguun]] mercenary troop known as the [[Ja'khor]] (a [[goblin|goblinoid]] word translating to “Blackbloods”) uses this inn as a base of operations. 
Set among the tallest peaks of the [[Ahnadiv Mountains]], Malshashar guards a major point in [[Adar]]'s defenses. Malshashar isn't as close to the foothills as
[[Shalquar]], but the fortress is named after a monastery that
once was. Even so, it has more to worry about in the form
of [[Riedra]]n patrols and potential spies than many other
strongholds. It faces Riedra proper and not the small
settlements on the frontier of the [[Andnemun Desert]] and
[[Syrkarn]]. The fortress is mainly under one mountain,
but it sprawls under two other peaks and connects to the
[[dromite]] city-hive of [[Zi'til'natek]] through [[psionic|psionics]] portals
that function within [[Shroud]] bubbles.

Life is harsh in Malshashar, where even the food must be grown underground. Regular storms and landslides make the surrounding territory hostile and impenetrable. Artificial walls have sealed passes for centuries, but [[magic|arcane magic]] and [[psionics]] make these walls look natural. A particularly discerning [[dwarf]] might be able to see their
real nature, but the dwarves of [[Sarlona]] live far away.

[[Kalashtar|kalashtar]] outnumber [[human]]s in Malshashar. Feeling it is their duty to defend the land of refuge in a war for which they are responsible, they handle all military matters in the stronghold. Supported by kalashtar [[psion]]s and martial artists, a few of the human monks of Malshashar live as they have for ages, some not overtly participating in the ongoing struggle. The kalashtar value
the meditations of these pacifist monks nonetheless.
At certain places in the Material Plane, the barriers
between worlds are thin, and some characteristics of
another [[plane]] can bleed through into the material world.
These places are called manifest zones, and the nature
of each one is strongly shaped by the plane it connects
to. The city of [[Sharn]] is located in a manifest zone linked
to [[Syrania]] that keeps its towers reaching toward the sky
and aids flight. Ghosts might linger in a manifest zone
associated with [[Dolurrh]], while a manifest zone tied
to [[Lamannia]] might have wild vegetation and enhance
[[druid]]ic magic. See each plane's "Universal Properties" section for more ideas on how a plane can directly influence the Material Plane.

A manifest zone might include a portal
that allows free passage from either plane to the other, but might only be open when the planes are coterminous, when the moon associated with that plane is full, or both. Most manifest zones have reliable, persistent effects. Some have only weak connections to their planes, and their properties influence
the world only when the plane is coterminous. 

Many of the manifest zones of [[Sarlona]] are [[wild zone]]s, places where the outer [[plane]] and the Material Plane truly overlap.
A [[dragon]] rains fire down on a platoon of
soldiers in [[Shavarath]]. Cheering crowds throng the streets of
the [[Amaranthine City]] of [[Irian]]. Dragon, soldiers, crowds—none
of these things are truly real. When you dream that you're
taking a test at [[Arcanix]], the sarcastic professor and mocking
students aren't fully sentient spirits; they're manifestations
of [[Dal Quor]], created for that scene, and as soon as you wake,
they'll vanish. These creatures can appear to be sentient,
and you might be able to have a conversation with soldiers
in Shavarath—but they won't have anything to say that you
couldn't imagine coming out of the mouth of an extra in a war
movie. As a general rule, manifestations can't leave the layers
of the [[plane]]s that they're in, and like dreams, they usually
don't persist indefinitely; when their purpose is served, they
simply evaporate until they're needed again. Very rarely, a
manifestation might develop a more independent, sentient
existence—like the drifters of Dal Quor—though they're
generally still bound to their plane of origin and unable to
deviate from their central purpose.

Manifestations vary by plane; in Dal Quor they're called
figments, while in Shavarath, they're conscripts. In some
planes, the manifestations are formed from the soul-stuff of
mortals, while in others they're entirely imaginary. A plane
never runs out of the potential for manifestations, but these
creatures typically follow the internal logic of a scene. If you
fight a dragon in Shavarath, it feels just like fighting an actual
dragon, and when you kill it, it seems dead and you can enjoy
your victory. However, if you return a day later, there's no sign
of the corpse, and instead, there's a new dragon in the sky.

Some planes don't have manifestations of creatures,
because the ideas they represent don't need them. Instead,
these planes generally rely on native mortals to make up the
supporting cast. So while Shavarath needs a constant churn
of conscripts in battle, and Dal Quor creates figments to flesh
out mortal dreams, other planes—[[Dolurrh]], [[Fernia]], [[Lamannia]],
and [[Syrania]]—don't create manifestations. For example, Lamannia needs mortal beasts to tell its story; birth, growth,
and even death are part of its concept, and reflecting that
requires a mortal population.
This long key, studded with tiny Siberys [[dragonshard]]s, can
only be used by a creature with the [[Mark of Hospitality]]. You
can trace the outline of a door in the air with
the manor key and conjure a shimmering door to an extravagant extradimensional dwelling. While closed, the portal is invisible. 

Beyond the portal is a magnificent foyer with numerous chambers beyond. The atmosphere is clean, fresh, and warm.

You can create any floor plan you like, but the space can't exceed 50 cubes, each cube being 10 feet on each side. The place is furnished and decorated as you choose. It contains sufficient food to serve a nine course banquet for up to 100 people. A staff of 100 near-transparent servants attends all who enter. You decide the visual appearance of these servants and their attire. They are completely obedient to your orders. Each servant can perform any task a normal human servant could perform, but they can't attack or take any action that would directly harm another creature. Thus the servants can fetch things, clean, mend, fold clothes, light fires, serve food, pour wine, and so on. The servants can go anywhere in the mansion but can't leave it. Furnishings and other objects created by this spell dissipate into smoke if removed from the mansion.

The spell ends after 24 hours or when you use the key to lock the door and dismiss
the effect; at that time, any creatures within the mansion are expelled into an open space near its entrance. Once used, the key cannot be used again until the next dawn.
Manta Bay lies off the coast of [[Breland]] and [[Droaam]].
A monster in every sense of the word, a manticore has a vaguely humanoid head, the body of a lion, and the wings of a dragon. A bristling mane stretches down the creature's back, and its long tail ends in a cluster of deadly spikes that can impale prey at impressive range.

//''Evil Predators.''// Manticores are fierce killers that hunt far and wide for prey. They work together to take down particularly large or dangerous creatures, sharing the meal once a kill is made. A manticore begins its attack with a volley of tail spikes, then lands and uses its claws and bite. When outdoors and outnumbered, it uses its wings to stay aloft, attacking from a distance until its spikes are depleted.

A manticore isn't particularly bright, but it possesses a malevolent nature and the ability to converse. In the course of attacking, it denigrates its foes and offers to kill them swiftly if they beg for their lives. If a manticore sees an advantage to be gained by sparing a creature's life, it does so, asking for a tribute or sacrifice equal to its loss of food.
You have advantage to resist the effects of [[spell]]s while you wear this pale yellow cloak. The cloak is hemmed with runes embroidered with blue beads.
\define places() {"filter":"$(filters)$"}
\define coords() $(first)$,$(second)$
\define majoractions() <$action-listops $tiddler="$:/MapTags" $filter="[has[points]]:filter[backlinks[]count[]compare:integer:lt[5]]"/>
\define mapactions() <$action-setfield $tiddler="$:/MapTags" $field="text"/><$action-setfield $tiddler="Map" $field="refresh"/>
\define markeractions() <$set name="first" filter="[{$:/MapTags}split[,]nth[6]]"> <$set name="second" filter="[{$:/MapTags}split[,]nth[5]]"> <$action-setfield $tiddler="$:/Origin" text=<<coords>>/> </$set> </$set> <$set name="first" filter="[{$:/MapTags}split[,]nth[8]]"> <$set name="second" filter="[{$:/MapTags}split[,]nth[7]]"> <$action-setfield $tiddler="$:/Destination" text=<<coords>>/> </$set> </$set><$action-setfield $tiddler="Map" $field="refresh"/>

<$checkbox tiddler="$:/MapTags" tag="[all[]all[]all[]has[polylines]tag[latitude]]"> ''Lines of Latitude''&nbsp;&nbsp;</$checkbox><$checkbox tiddler="$:/MapTags" tag="[has[polygons]tag[landmass]]"> ''Landmasses''</$checkbox><br/><$checkbox tiddler="$:/MapTags" tag="[has[polygons]tag[sea]]"> ''Seas''&nbsp;&nbsp;</$checkbox><$checkbox tiddler="$:/MapTags" tag="[all[]all[]has[polygons]tag[mountains]]"> ''Mountains''&nbsp;&nbsp;</$checkbox>
<$checkbox tiddler="$:/MapTags" tag="[all[]all[]all[]tag[geography]]"> ''Other Geography''</$checkbox><br/>
<$checkbox tiddler="$:/MapTags" tag="[all[]has[polygons]!tag[landmass]!tag[mountains]!tag[geography]!tag[sea]!tag[province]]"> ''Nations and Regions''&nbsp;&nbsp;</$checkbox><$checkbox tiddler="$:/MapTags" tag="[all[]all[]has[polygons]tag[province]]"> ''Provinces''</$checkbox><br/>
<$checkbox tiddler="$:/MapTags" tag="[has[points]tag[city]]"> ''Cities''&nbsp;&nbsp;</$checkbox>
<$checkbox tiddler="$:/MapTags" tag="[has[points]tag[town]]"> ''Towns''&nbsp;&nbsp;</$checkbox>
<$checkbox tiddler="$:/MapTags" tag="[has[points]!tag[city]!tag[town]!tag[geography]]"> ''Ruins and Other Sites&nbsp;&nbsp;''</$checkbox>
<$checkbox tiddler="$:/MapTags" tag="-[list[$:/MapTags]]" actions=<<majoractions>>> ''Major Sites Only''</$checkbox><br/>
<$checkbox tiddler="$:/MapTags" tag="[has[polylines]tag[road]]"> ''Roads''&nbsp;&nbsp;</$checkbox>
<$checkbox tiddler="$:/MapTags" tag="[has[polylines]tag[rail]]"> ''Lightning Rail Lines''</$checkbox>

<$button>
<<mapactions>>
Refresh Map
</$button>
<$button>
<<markeractions>>
Reset Markers
</$button>

!!! Distance between markers: ''{{$:/Distance}} miles''
''Origin:''<span style="padding-left:37px"/> {{$:/Origin!!latlng}} (coordinates: {{$:/Origin}})<br/>
''Destination:'' {{$:/Destination!!latlng}} (coordinates: {{$:/Destination}})

[[$:/MapTags]]

<$set name=filters filter="[[$:/MapTags]tags[]sort[]reverse[]]">
<$leafmap cluster="0" width="550px" places=<<places>>/>
</$set>
This map depicts the geography of a 100-mile square. You can point at two spots on the map and cause it to display the shortest, most direct physical route between the points with a red line. The map then becomes nonmagical, but the line remains. 
This map depicts the geography of a 100-mile square. You
can speak a command word and have your
current location appear on the map as a red dot that
persists for 1 minute. Once you have used this property, it
can't be used again until the next dawn. 
This map initially appears to be a blank parchment, rolled and sealed with wax. You can break the seal and unroll the map. When you do so, the surrounding geography in a 10-mile radius appears in the middle of the map. As you move, the map continues to fill out the area in a 10-mile radius, centered on itself. The map has enough
space to fill a 100-mile square. 
This sunken city in the [[Basira Swamp]] of [[Q'barra]] is one of the numerous ruins dating from the [[Age of Demons]]. Towers and the brass capstone of a great temple rise above
the water and muck of a vast swamp. [[Dragonborn|dragonborn]]
legends tell of how the fell magic that destroyed this
place millennia ago left its buildings open and full of
breathable air—and treasure. Stories also tell of the
Fallen Bones, a [[lizardfolk]] tribe that entered the ruins
and never returned. Some believe that these lizardfolk still dwell within Mar’saval, corrupted and allied with evil [[troglodyte]]s in the ruins.
The Marguul [[bugbear]]s threw off the yoke of the
[[Ghaal'dar]] long ago, seizing territory in the [[Seawall Mountains]] in the south of [[Darguun]]. They are infamous raiders, and while they have brokered a truce with the
Ghaal'dar, anyone venturing into the Seawall Mountains
had best travel with a Marguul guide.

The Marguul keep members of
other races (including [[goblin]]s and [[hobgoblin]]s) as
slaves, and only [[bugbear]]s can be full members of a
Marguul tribe.

Despite their xenophobia, some of the Marguul tribes pay homage to the Lhesh [[Haruuc|Haruuc Shaarat'kor]] and the [[Ghaal'dar]]. However, the exceptions can prove
dangerous to travelers. The Kalkor are a Marguul
tribe whose members worship the [[Mockery]], and who
delight in flaying their enemies alive. A veteran warrior named Morgaath rules the Kalkor, frequently
leading hunting expeditions against outsiders who
dare to venture into the [[Seawall Mountains]].
The Dragonmark of Death has faded from history, and no living creature on Eberron carries it. Its powers are not known.

For more information, see [[Lady Illmarrow]].
The Mark of Detection is an [[inquisitive]]'s dream. It
sharpens powers of observation and intuition, allowing the bearer to draw connections and interpret clues
others might miss. By actively drawing on its powers,
the bearer can discern the presence of threats, from poisoned food to scrying eyes.

Only a [[half-elf]] with ties to House [[Medani]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Finding sharpens the senses, guiding the
hunter to prey. It first appeared in the [[Shadow Marches]], where
clan hunters used it to find their quarry. Today, bounty hunters and prospectors use the mark to track down people of interest or valuable items.

Only a [[half-orc]] (or [[human]] with just a bit of [[orc]] ancestry) with ties to House [[Tharashk]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>

The Mark of Handling gives its bearer a primal
connection to beasts and the natural world, granting the power to calm and coax. This extends beyond
purely natural animals; the mark allows its bearer to
guide a [[hippogriff]] as easily as a horse. 

Only a [[human]] with ties to House [[Vadalis]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
A [[halfling]] with the Mark of Healing can save a life
with a touch, restoring vitality, curing disease and mending wounds.
When dealing with mundane medicine, the mark
helps its bearer sense the nature of maladies, aiding
them in finding a cure. When equipped with [[dragonshard]] focus items, the mark can even draw the dead back from the depths of [[Dolurrh]]. 

Only a [[halfling]] with ties to House [[Jorasco]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
They may not always have gold, but a [[halfling]] with the
Mark of Hospitality is sure to be rich in friends. The
magic of the mark allows the bearer to keep a place
clean, and to heat, chill, and season food. But it also
helps the bearer connect with others, with a calming aura that helps guests relax and enjoy themselves. With the help of [[dragonshard]] focus items, a mark bearer can even manifest food or shelter out of thin air.

Only a [[halfling]] with ties to House [[Ghallanda]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Making guides its bearer through any act
of creation. The bearer of the mark can [[mend|mending]] broken
things with a touch, and always has a minor [[magic item]]
they've been working on. An [[artificer]] or a [[wizard]] will
get the most out of the mark, but anyone can find a use
for an enchanted blade. 

Only a [[human]] with ties to House [[Cannith]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Passage governs motion, allowing its
bearer to move with uncanny speed. The bearer of the
mark can even slip through space in the blink of an eye. 

Only a [[human]] with ties to House [[Orien]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Scribing deals with communication—both
the written and spoken word. A gnome who bears the
mark can //feel// words as though they are living creatures,
struggling to make their meaning known. The mark
provides a range of gifts. It translates languages, but it
also allows its bearer to communicate with others at
a distance. 

Only a [[gnome]] with ties to House [[Sivis]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>

The Mark of Sentinel warns and protects. It heightens
senses and reflexes, allowing an heir to respond to
threats with uncanny speed. It can shield its bearer
from harm. Whether on the battlefield or the ballroom,
someone who carries the Mark of Sentinel is prepared
for danger. 

Only a [[human]] with ties to House [[Deneith]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Shadow lets an [[elf]] weave illusions, crafting
magic to distract or delight. It also allows its bearer to
sculpt shadows, making it easy to avoid detection. Some wielders of the mark can use its power to [[scry|scrying]] using [[dragonmark focus item]]s.

Only an [[elf]] with ties to House [[Phiarlan]] or [[Thuranni]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
Wind and water welcome the half-elves who carry the
Mark of Storm, and some learn to call on the power of
the storm itself. Bearers can resist the elements and endure lightning strikes, command the wind and sea, and with the assistance of [[dragonshard]] focus items, pilot [[airship]]s and [[elemental galleon]]s.

Only a [[half-elf]] with ties to House [[Lyrandar]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Warding helps its bearers protect things of
value. Using the mark, a [[dwarf]] can weave wards with
mystic force. It also provides its bearer with an intuitive
understanding of locks used to protect and seal. 

Only a [[dwarf]] with ties to House [[Kundarak]] can manifest this [[dragonmark]].

!! {{!!title}} [[Focus Items|dragonmark focus item]]

<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
A respectable, if
a bit run-down, option for longer stays in [[Lower Central]], Marquan's offers private rooms with a
common dining room. The building is decorated
with paintings, sculpture, and pottery produced by
local artists, all of whom are past or present residents of Marquan's. Kielsten Marquan, the owner
and sole employee, no longer keeps the place up as
well as he used to. This is because Kielsten runs a
small cult devoted to a [[radiant idol]], and his attention to his
business has slipped as his activity and responsibilities within the cult have increased.

Kielsten's cult holds meetings in a large
private room at Marquan's. Here, the cult members pay homage to their patron, a radiant idol
that calls itself Zotharr, Idol of Death. Zotharr
demands gifts as part of these ceremonies, and
its demands have become increasingly extravagant with the increased loyalty of its cultists. The
cultists have been seduced into acts of robbery,
kidnapping, and—most recently—ritual murder to
please their patron. Kielsten assumed leadership
of the cult in the last month, after the previous
leader balked at performing a human sacrifice
and Zotharr killed him for his disobedience.
Kielsten is nervous but sadistically excited about
his new responsibilities.
In ages past, the [[orc]]s that
eventually became the [[Ghaash'kala]] entered the [[Labyrinth]]
for the express purpose of keeping the horrors of the [[Demon Wastes]]
trapped and cut off from the rest of the world. One of the
oldest of these clans, the Maruk, has a long and bloody
history of fulfilling this mission.

The Maruk clan guards the central passages through the Labyrinth, the routes most often used by the [[Lords of Dust]] and their agents. The sly and clever [[rakshasa]]s often
manage to slip past the vigilant eyes of the Maruk guards,
but the sacred warriors of the binding flame are not without their resources. They can see through disguises used by the [[fiend]]s, and engage in deadly battle with any fiends they uncover in the depths of the canyons. The
Maruk clan suffers terrible casualties as a result of these
constant battles; the only reason the clan has survived to the present day is because of the steady infusion of new blood.
Orc barbarians from the [[Shadow Marches]], human scouts
from the [[Eldeen Reaches]], and even youths from the [[Carrion Tribes]] often hear the call of Kalok Shash, a divine beacon
that draws them to the Maruk [[Ghaash'kala]]. As a result, the
Maruk clan counts more [[human]]s and [[half-orc]]s among its
members than any other Ghaash’kala clan and possesses
slightly better equipment. The Maruk clan also has a higher
percentage of [[paladin]]s than the other three clans.

Members of the Maruk Ghaash’kala are somber
and serious, prepared to die at any time in battle with
the [[fiend]]s of the [[Demon Wastes]] and other horrors spit
up from the depths of [[Khyber]]. ''Torgaan Shashaarat'' ([[orc]] [[paladin]]) leads the clan, while the elderly priest ''Lharc Suusha'' (orc [[cleric]]) guides it.

!! Maruk Dar

Maruk Dar, a small settlement of the Maruk tribe, stands near a large
defile in the southwestern portion of the [[Labyrinth]].
The Maruk folk dwell in concealed caves, reached
by switchback stairs and protected by deadly traps
and watchful eyes. No more than a few hundred
people dwell in such settlements at a time, since the
Ghaash'kala’s mission keeps them on the move.
Maruts are powerful guardians, crafted in the
[[Crucible]] of [[Dolurrh]], forged from [[husksteel]], and tasked to
preserve the cycle of life and death. Maruts are occasionally
dispatched to [[Eberron]] to intervene with acts of [[resurrection|raise dead]], or
when a [[lich]] or [[mummy]] is created. No one's sure what triggers
this deadly intervention—perhaps the resurrection defied the
[[Prophecy|Draconic Prophecy]]—but [[Jorasco]] healers always cast [[augury]] before
raising the dead. If the result is “woe,” they refuse the job, lest
a Dolurrhi marut appear, destroying the resurrected creature,
its healer, and possibly the whole healing house in the process
This painted leather mask covers the upper half of the user's face, and has lenses of heavy red glass. The wearer can examine someone and see everything they are carrying. Objects in pockets, purses, or tucked in belts or sleeves can be easily seen by the wearer.
This mask resembles the face of a "monstrous" [[humanoid]].
You can place the mask on your face and take on the guise of the depicted creature as if you had cast the [[disguise self]] spell. The effect
ends early if you remove the mask. The DM chooses the
kind of mask or determines it randomly.

Once you have used the mask, it can't be used again until
the next dawn. 
The masquers are the elite spies of the [[Thousand Eyes]] in [[Riedra]]—exceptional [[changeling]]s trained in the arts of subterfuge
and observation. A masquer seldom carries weapons and
never initiates combat, but often wear a psionic form of [[shiftweave]]. Their job is to infiltrate, observe, and report, allowing others to do the messy work. Those
who encounter a masquer rarely know it, but any foreigner
who spends time in a bastion is observed by one.
While this looks like a scrap heap assembled from
shattered [[construct]]s, this [[eldritch machine]] possesses
great power. A creature in control of it can sense the
presence and location of all [[warforged]] within 10 miles
of the device and can send a telepathic
message to them laced with [[enchantment]] magic. Such a
message can be sent no more than once every 24 hours.
A warforged who receives the message is compelled
to follow one command contained within it, unless it can resist the magical compulsion.
The affected warforged breaks free of the command
after 24 hours. 
The masthin plant, native to the jungles of [[Q'barra]], produces natural intoxicants during its early growth and is chewed by the native folk; it also often attracts animals in the wild. It can be used to enhance the effects of certain [[enchantment]] [[spell]]s and [[potion]]s.
In the [[Age of Demons]], the region now known as [[Q'barra]]
was the domain of a [[fiend]]ish [[overlord]] of terrifying power.
He drew the light from the sky, and so his slaves called him
Masvirik, “the Cold Sun,” cousin to [[Tiamat]]. Masvirik has
power over creatures of scale and fang and venomous things
that slither through shadows. The dreaming priests of the
[[Masvirik’Uala|Cold Sun Federation]] say that the Cold Sun formed [[kobold]]s and
[[troglodyte]]s from [[lizardfolk]] stock, creating beasts that were
more vulnerable to his power. The existence of these creatures in distant lands calls this into question, but kobolds and troglodytes make up a larger percentage of the [[Poison Dusk]] than any other race.

Like many of the [[overlord]]s, Masvirik’s arrogance was his
undoing. The [[dragon]]s and [[couatl]] freed the [[lizardfolk]] from
his influence, and they rose up against him. In time the Cold Sun was cast down, bound beneath his [[obsidian citadel|Haka'torvhak]], and trapped by the [[Silver Flame]]. The [[couatl]] sacrificed their lives to kindle that flame, but the [[dragon]]s remained.

In time they dispatched the [[black dragon]] [[Rhashaak]]
to watch over [[Q'barra]]. He was accompanied by a host of
[[dragonborn]] soldiers, hand-picked from the legions of the
[[Light of Siberys]]. These sentinels established garrisons at
various demonic sites across the region. The worst of these
was the resting place of Masvirik, which they renamed
[[Haka'torvhak]]. Rhashaak made his home there, with the
best of his soldiers, and there they waited.

For a thousand years the [[dragonborn]] served with
distinction. As their population grew, they spread
across the region. Another thousand years passed,
and the young grew frustrated. They were a race of
warriors waiting for a battle that might never come.
Their skills were wasted, and the [[dragon]] lord of
[[Haka'torvhak]] had little interest in their doings. [[Rhashaak]]’s attention was confined to his city and to a spiritual battle no dragonborn could understand.

So the [[dragonborn]] ventured across the [[Endworld Mountains]] and into the plains that lay beyond. There they encountered a worthy challenge in the Empire of [[Dhakaan]]. Another thousand years passed as the dragonborn carved out their nation in the [[Blade Desert]] and [[Talenta Plains]], the tides of the Goblin Wars waxing and waning. There were great triumphs and terrible defeats. It was a joyful time for a people who thrived in battle. But in building this new empire, they forgot the battle they’d been sent to fight, and this finally came back to haunt them.

In [[Haka'torvhak]], [[Rhashaak]] had been holding the
fiend Masvirik at bay through sheer force of will, until
he finally faltered. The wards around Haka’torvhak
trapped Rhashaak himself. While the fallen guardian
couldn’t leave the fortress, the influence of the Cold
Sun spread across the land, and the [[Poison Dusk]] was
born. [[Kobold|kobold]]s, [[troglodyte]]s, and the transformed [[dragonborn]] of Haka’torvhak rose up in arms. Across the empire, young dragonborn corrupted by Masvirik’s power turned on their kin. As the empire collapsed,
the dragonborn returned to [[Q'barra]] to face the source
of the curse.

The [[dragonborn]] fought valiantly, but it wasn’t a
battle that could be won with courage or skill at arms
alone. To this day, the dragonborn themselves don’t
realize the true source of their salvation.

The [[couatl]] that bound Masvirik left a failsafe in place.
As the [[overlord]]’s power grew, a pulse of radiant energy
flowed across the land, filling Eberron [[dragonshard]]s
with the light of the [[Silver Flame]]. This power weakened
the influence of Masvirik and the [[Poison Dusk]] and woke
ancient memories in the [[lizardfolk]]. This was the creation
of the [[dawn shard]]s, and this web of light has kept the darkness at bay for thousands of years. Now House [[Tharashk]] is
harvesting these shards in record numbers, and Masvirik’s
power is growing once more.

Masvirik has followers among the [[Lords of Dust]], but he
doesn’t have a prakhutu (or "speaker") on the Council of [[Ashtakala]]; [[Rhashaak]] is his voice, and the [[dragon]] is bound in [[Haka'torvhak]].
The [[Poison Dusk]] are his minions, and at the moment he
has little influence beyond [[Q'barra]].

Information about Masvirik is extraordinarily scarce.
Even the [[dragonborn]] of [[Ka'rhashan]] remember little about
this ancient [[fiend]], having focused their attention on their
battles against the [[Poison Dusk]]. The [[lizardfolk]] are among
the only people who know anything about the [[overlord]], and
so far they haven’t shared this lore with outsiders. 
This windy village in [[Syrkarn]] is a sprawling mass of farmsteads
and stone buildings flanked by raised berms of rock
and earth. Settlers have lived here since the days of the [[twelve kingdoms|Sarlonan province]]. It is an agrarian village, mostly growing [[sepse]] and flax.
This tag indicates a substance with remarkable or magical properties that can be used in smithing, alchemy, or the creation of [[magic item]]s.

<<list-links-article "[tag{!!title}sort[title]]">>
This [[Vadalis]] storefront deals in exotic pets and animal companions, along with barding and other useful gear.
Maza Thadian ([[elf]] councilor for [[Upper Northedge]]) is one of the oldest, richest, and most respected elves in the city. She owns the [[Oaks]], one of
the finest restaurants in [[Sharn]]. Maza is stubborn and
set in her ways, and she constantly fights to maintain
the status quo and uphold tradition; however, she does
tend to put the concerns of the wealthy before those of
the poor, especially the [[goblin]]s and other dregs of the
[[lower ward]]s. While she has the highest regard for the
law, she is in no way naïve; she is capable of surprising
subterfuge in the best interests of Sharn. 
Mazalene is the [[Dominion|dominion]] of Rumors, and at her storefront in the [[Immeasurable Market]] of [[Syrania]], she only trades
in kind. Anyone who has a particularly interesting story to
share with her can get an intriguing—and possibly true—tale from this [[angel]].
While wearing this medallion, you can cast the [[detect thoughts]] spell from it, up to three times per day.

<<<
{{detect thoughts}}
<<<
''Leader:'' Baron [[Trelib d'Medani]]<br/>
''Headquarters:'' [[Tower of Inquisition]] ([[Wroat]], [[Breland]])<br/>
''Dragonmark:'' [[Mark of Detection]]

//If you want a wall of muscle to get between you and a blade, go to House [[Deneith]]. if you want someone to anticipate the threat and make sure you aren't even in the room with whoever's holding that blade, that's what we do.//

<div align="right">—Baron Trelib d'Medani</div>

Represented by the [[basilisk]]'s eye, the Warning Guild of
House Medani brokers the services of bodyguards and
[[inquisitive]]s. Medani advisors specialize in risk assessment and management, protecting clients from both physical and social threats. While Medani overlaps with
the inquisitives of House [[Tharashk]] and the bodyguards
of House [[Deneith]], the Warning Guild specializes in subtle threats and complex mysteries. Baron Trelib manages the guild's affairs from the [[Tower of Inquisition]] in
[[Wroat]], where the house also interrogates prisoners for
King [[Boranel|Boranel ir'Wynarn]] of [[Breland]].

The members of House Medani are [[half-elves|half-elf]] with
deep roots in Breland. Medani has little interest in the
power struggles that sometimes break out between
the other dragonmarked houses. Many Medani heirs
are more interested in helping their communities
than in raw profit, and Medani heirs often work with
local law enforcement or help those who can't afford
their services. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
In order to attune to this magic item, you must possess the [[Mark of Detection]].

While holding this wand, you can expend some of its stored magical power, and if a secret door or trap is within 30 feet of you, the wand pulses and points at the one nearest to you. The wand can be used 2-5 times per day before its power is expended and must recharge overnight.
In order to use this magic item, you must possess the [[Mark of Detection]].

These crystal lenses fit over the eyes. While wearing them, you can see much better than normal out to a range of 1 foot. You have advantage to investigate while searching an area or studying an object within that range.
Medusas are scaly monstrous humanoids with writhing serpents in place of hair. They are known and feared for their gaze, which can turn any creature who meets it to stone.

The [[Gatekeepers]] claim that medusas were created by the [[daelkyr]] [[Orlassk]], but the medusa priests of [[Cazhaak Draal]] offer their devotions to the [[Shadow]]. They claim that the Shadow shaped many of the creatures [[human]]s see as monsters, giving the [[harpy]] her deadly voice, hiding the [[displacer beast]] from its foes, and healing the wounds of the [[troll]]. These priests view the deities of the [[Sovereign Host]] as the true evil, comparing the exile of the Shadow to the fear with which many humans respond to medusas and other monsters.

There are relatively few medusas in [[Droaam]], but
their intelligence and mystical power makes them a vital part
of this growing nation. Medusa architects direct construction
in the blended cities, laying the foundations of what this nation
could become. Medusas who choose to serve as [[Katra's Voice]]
are often called upon to resolve disputes and enforce justice,
for who dares challenge the ruling of a medusa? Cazhaak Draal is also the seat of the most organized religious tradition in Droaam—the worship of the [[Dark Six]]—and most powerful priests of the Six are medusas. Compared to many denizens of
the region, medusas tend to be calm and rational; however, they
expect to be treated with respect and aren't above a few harsh
lessons to make a point.

The gaze of a medusa can petrify even an ally, and as a result, a medusa does not meet the gaze of a person with whom it is conversing. Where she directs her eyes indicates her esteem for the person. She drops her eyes toward the ground to show respect, or looks up and over the person if she wishes to indicate disdain; when speaking to an equal, she glances to the left or right. If she wishes to show trust, she directs her gaze to the person, but closes her eyes.

A medusa's gaze is a powerful weapon, but most medusas don't think of it as deadly. A petrified victim can be restored to life, after all; within their own society, medusas often use petrification as a way to preserve mortally wounded kin, so they can be restored at a later time when healing magic is available. Likewise, medusas dying of old age often choose to be petrified before they fully pass on; [[Cazhaak Draal]] contains a great catacomb filled with the stone remnants of respected medusa elders. This ties to the love of stonework common in the culture; when a medusa looks at a statue, she sees the life it represents.

A medusa uses its living mane for many purposes. In addition to serving as weapons and a supplemental form of eyesight, a medusa's serpents also help her communicate. The motions of the serpents often reflect a medusa's mood, and a DM should consider the state of a medusa's mane when describing her actions. The medusas of [[Cazhaak Draal]] have developed a simple language called Serpentine, which is based on the motions and hissing of their snakes.
Once these simple bone studs are donned, the wearer's appearance slowly transforms into that of a [[medusa]] over the course of a couple of days. Their hair slowly transforms into slender snakes, which obey the wearer. You cannot see through their eyes, however, and you do not have the petrifying gaze of the medusa.

If the earrings are removed, the snakes slowly die and fall away, and the wearer's appearance returns to normal after a couple of days.
The Meer River in [[Adar]] flows into the [[Sea of Lost Souls]]. 
A meld is formed from the faded souls of mortals—[[husk]]s
whose memories have been consumed by [[Dolurrh]]. These
husks are typically harmless, but sometimes an aggressive
nucleus gathers other husks, forming a deadly gestalt. In
essence, a meld is a fusion of half-formed [[ghost]]s; it has an
amorphous shape, with vague faces and limbs projecting
from the mass, then being consumed once more. It makes
no sound when it moves, but mortals around a meld
hear cries of pain, pleading voices, and unearthly moans.
It can project some of its husks into a mortal body, temporarily overwhelming
the victim with conflicting desires and visions.

//''Denizens of Dolurrh.''// Melds are born in [[Dolurrh]], and
prowl the endless caverns searching for scraps of memory.
This hunger can draw them to [[Eberron]] through [[manifest zone]]s or when [[plane]]s are coterminous. A meld can also manifest when someone is [[raised from the dead|raise dead]], following in the wake of the soul being drawn back to the world of the
living. Melds that enter Eberron rarely stray more than one
mile from the point where they arrived.

//''Hunger for Memory.''// A meld has the barest traces of
dozens of souls. It remembers scraps of the most powerful
moments of its component husks, but it can't place these in
any context. The meld yearns to consume other spirits, to
feast on their memories and emotions. While highly unusual,
it's possible for a powerful personality within a meld to exert
temporary control; this might cause the meld to pursue a
particular individual or draw it to a specific location. When
a meld kills a living creature and consumes its spirit, the
flood of memories can also shift the purpose of the meld,
as it suddenly acts on the desires of its most recent victim.
A meld loose in Eberron retains the spirits it consumes,
preventing them from transitioning to [[Dolurrh]]. This prevents
the spirit from fading; a character could hear the whispers
of a trapped spirit within a meld, and a husk could hold the
souls of people who died long ago. A side effect of this is that
creatures slain by a meld cannot be resurrected or raised
from the dead until the meld is destroyed.
You step into a stone object or surface large enough to fully contain your body, melding yourself and all the equipment you carry with the stone for up to eight hours. Nothing of your presence remains visible or otherwise detectable by nonmagical senses.

While merged with the stone, you can't see what occurs outside it, but you can still faintly hear. You remain aware of the passage of time and can cast spells on yourself while merged in the stone. You can choose to leave the stone where you entered it, which ends the spell. You otherwise can't move.

Minor physical damage to the stone doesn't harm you, but its partial destruction or a change in its shape (to the extent that you no longer fit within it) expels you and deals bludgeoning damage to you. The stone's complete destruction (or [[transmutation]] into a different substance) expels you and deals more bludgeoning damage to you.
Governors of the region surrounding [[Pylas Talaear]],
the [[line|Aereni noble line]] of Melideth produces the finest sailors of [[Aerenal]] and
maintains the Aereni navy. Due to its mercantile tradition,
Melideth Aereni are more comfortable with foreigners than
many of their kin. Facial tattoos are a common practice among
the Melideth.
This spell repairs a single break or tear in an object you touch, such as broken chain link, two halves of a broken key, a torn cloak, or a leaking wineskin. As long as the break or tear is no larger than 1 foot in any dimension, you mend it over the course of one minute, leaving no trace of the former damage.

This spell can physically repair a [[magic item]] or [[construct]], but the spell can't restore magic to such an object.
The [[line|Aereni noble line]] of Mendyrian governs the region
around [[Shae Cairdal]], and for most of [[Aerenal]]'s history they
have also been the source and seat of the [[Sibling Kings]]. The
Mendyrian Aereni are devoted to arcane lore, and many of
the most gifted [[wizard]]s and [[artificer]]s are Mendyrian. The
Mendyrian Aereni take particular pride in their appearance,
favoring ornate patterns and decoration in clothing, elaborate
hairstyles, and masks of metal or leather.
The hub of [[Sharn]]'s entertainment industry and home
to [[Breland]]'s largest university, Menthis Plateau is one
of the most diverse quarters in Sharn. Whether you're
looking for classical theater, a fine bookstore, or an illegal fighting ring, Menthis has something to offer. 

* [[Upper Menthis]]
* [[Middle Menthis]]
* [[Lower Menthis]]

Menthis Plateau is connected by bridge to [[Dura]], [[Tavick's Landing]], and [[Central Plateau]].

!! What's on the Bill?

People come from across Breland to experience the
Menthis art scene. All manner of entertainment can be
found in this quarter, from bawdy Lower Menthis events
to the traditional works of the [[Classic Theater]] in Middle
Menthis. The table below provides a sampling of the many performances staged in Menthis. 

| !<<dr d8>> |!Event |
| 1 |''Tira's Tears.'' A speculative drama about the [[founder|Tira Miron]] of the Church of the [[Silver Flame]]. ([[Grand Stage]], Upper Menthis) |
| 2 |''Facade.'' A comedy of errors about a family of changelings, involving a tangled web of mistaken identities. ([[Art Temple]], Upper Menthis) |
| 3 |''Five Lives.'' A bitter reflection on the tragedy of the Last War, as seen through the eyes of five soldiers. Written by up-and-coming playwright [[Luca Syara]]. ([[Diamond Theater]], Lower Menthis) |
| 4 |''Galifar Triumphant.'' A beloved history based on the legendary king and the conflict that established the Kingdom of [[Galifar]]. ([[Classic Theater]], Middle Menthis) |
| 5 |''The Late Count.'' A comic opera by the bard [[Kessler]], revolving around a [[Karrnath]]i count who is resurrected as a [[zombie]]. ([[Sharn Opera House]], Upper Menthis) |
| 6 |''The Carnival of Shadows.'' House [[Phiarlan]]'s traveling circus, a mesmerizing blend of illusions, physical arts, and exotic beasts. The traveling troupe always visits [[Smoky Towers]] (Middle Menthis). |
| 7 |''The Brelish Symphony Orchestra.'' A performance of some of the finest works of Seventh Century Brelish composers. ([[Kavarrah Concert Hall]], Upper Menthis) |
| 8 |''Reflection.'' A one-person show performed by the [[changeling]] Adi, exploring the multitudes that exist within us all. ([[Ten Torches]], Lower Menthis) |

!! Things to Do in Menthis Plateau

Any list of attractions that tries to summarize what
Menthis Plateau has to offer, even without considering
all the performance events, is doomed to be incomplete.
Of the countless possibilities, some of the most popular
reasons to come here are the following:

* ''Consult a sage.'' [[Morgrave University]] might not be the finest institute of learning in [[Khorvaire]], but it's the best Sharn has to offer. Whether you want to conduct your own research in the library or find a specialist in [[goblinoid]] history, Morgrave likely has what you need.
* ''Go into show business.'' Menthis has a wide range of performance venues, from the [[Grand Stage]] to the many taverns of [[Lower Menthis]]. In addition to enjoying the entertainment, you could try to find work—either showcasing your artistic talents on stage or displaying another sort of prowess in the [[Burning Ring]].
* ''Join an expedition.'' Scholars at Morgrave often sponsor expeditions to [[Xen'drik]] and into the ruins below Sharn. Cyran nobles in [[Smoky Towers]] sometimes hire brave souls to venture into the [[Mournland]] to reclaim lost treasures.
* ''See other cultures.'' [[Den'iyas]] brings a touch of [[Zilargo]] to Sharn. You might find a [[clawfoot]] raptor running down the streets in [[Little Plains]], or a [[Gatekeeper|Gatekeepers]] [[druid]] casting bones on [[Cassan Bridge]]. 

Mephits are capricious, imp-like creatures native to the elemental planes. They come in six varieties, each one representing the mixture of two elements. 

When encountered in the wilds, mephits are capricious tricksters and their “pranks” can make life miserable for planar travelers. However, those found in [[Fernia]] in the service of the [[efreet|efreeti]] are generally more polite and well mannered—though this can quickly change if there's an opportunity for mischief too good to pass up.

!! Types of Mephits

* ''Mud'' (water + earth)
* ''Smoke'' (fire + air)
* ''Steam'' (water + fire)
* ''Dust'' (air + earth)
* ''Ice'' (water + air)
* ''Magma'' (fire + earth)
The [[Jhodra]] in [[Dar Jin]] was opened to facilitate trade, and all trade with [[Riedrans]]
occurs in the Mercantile Center. The center is divided
into sections, showcasing textiles, glassworks, medicinal
supplies, and foodstuffs. Basic goods—tools, beasts of burden, and such—can also be purchased at the mercantile center. Weapons and armor are not available; one must deal with the [[Dream Merchants]] to obtain contraband.

The ''Jhodra Inn'' can be found here, a simple inn which provides [[Riedran cuisine|Riedrans]] and sparse dormitory lodging. It's austere,
but inexpensive compared to the [[Gold Dragon Inn]]. Private rooms are not available.
Merrix d'Cannith is the grandson of the creator (also named Merrix) of the first [[warforged]], and he is [[Starrin|Starrin d'Cannith]]'s grandnephew. He is twenty years
younger than his rivals—a fact that both his supporters and his detractors point to. Like his grandfather, Merrix is a brilliant inventor, but his ambitions go
far beyond the laboratory. Merrix has concealed a
functional [[creation forge]] within [[Cannith]]'s [[enclave|Cannith Forgehold]]
in [[Sharn]], and he continues to make new [[warforged]]
there in secret. He is also keen to extend House
Cannith's reach to [[Xen'drik]], which promises new
materials to fuel Cannith creations—and where the
prohibitions of the [[Treaty of Thronehold]] won't apply.

Merrix d'Cannith has been making efforts to improve the
life of the [[warforged]] in the [[Cogs]] and to encourage the [[construct]]s
to take more initiative. The warforged who work at the
[[Cannith Forgehold]] in [[Ashblack]] are treated as equals,
and Merrix secretly helped establish the [[Red Hammer]]
Inn in [[Blackbones]] to help the warforged there socially develop. 
These heavy gauntlets are made of steel and leather. The steel is tarnished and the leather is cracked from exposure to heat, and tiny flame-like runes are etched into the metal.

The wearer is able to bend and mold all common metals with ease, if given a moment to focus. Once per day, the wearer can touch a metal object and instantly heat it to a red-hot temperature.
This plate armor was magically crafted from plates of interlocking stone. Tiny rubies inlaid in the chest create a glittering mosaic of flames. When you fall while wearing this armor, you can tuck your knees against your chest and curl into a ball. While falling in this way, flames form around your body. You take half the usual falling damage when you hit the ground, and fire explodes from your form in a 20-foot-radius sphere. Each creature in this area must dodge or else take fire damage equal to the falling damage you took.
Once the seat of a pre-[[Galifar]] kingdom, and then the shining capital of [[Cyre]], Metrol was known as the Rising City, for many of its buildings stood atop soaring columns of rock that dared to scrape the heavens. The [[Cathedral on the Hill]] was the center
for followers of the [[Sovereign Host]]. The [[Wynarn Institute of Art]] was the kingdom's foremost academy of performative [[arcane magic]]. The [[Vault]] served as the mint
and treasury of Galifar, containing cultural treasures
deemed too valuable to be displayed; salvagers dream
of finding this "golden palace." Floating gardens orbited
the towering Royal [[Vermishard|Vermishards]]. Now lost, the beauty of
Metrol lives only in Cyran memory. 

!! After the [[Mourning]]

This city was once the capital of [[Cyre]]. Now it lies empty,
seemingly waiting along the [[Cyre River]] for its people to
return. Parts of Metrol have been shattered, their buildings crushed and tumbled by whatever force destroyed the nation. Other portions of the city escaped with
superficial damage; aside from the absence of people
and the shroud of mist that hangs over the area, it looks
much as it did before Cyre fell. The days in Metrol are
quiet, but the nights bring a cacophony of chaos and
violence to the streets—at night, misshapen monsters
emerge from their lairs to prowl and wail as they hunt
each other for food. 

The self-styled Empress [[Donata]], a magebreeding experiment of House [[Vadalis]], "rules" over the wreckage of Metrol from the abandoned [[Vermishards]].

The [[warforged colossus]] WX-5, "Norr", is slumped amid the ruins of Metrol.
This part of the city is a center for intrigue. The district
of [[Ambassador Towers]] contains embassies and consulates from the Thronehold Nations, as well as [[Aerenal]] and [[Sarlona]]. Ambassador Towers is also home to the
[[King's Citadel]], the headquarters of Brelish intelligence.
Across the ward, the district of [[Dragon Towers]] holds the
primary [[enclave]]s of the [[dragonmarked house]]s.

The [[Sovereign Towers]] district has the grandest temples in [[Sharn]]. The [[Pavilion of the Host]] is a complex of nine towers devoted to the [[Sovereign Host]], and the
[[Cathedral of the Cleansing Flame]] is the seat of the [[Silver Flame]] religion. Although these temples are the locations of grand
ceremonies and celebrations, many of the most devout
priests serve in the city's smaller shrines. 

!! Districts and Noteworthy Locations

* [[Ambassador Towers]]. This district contains the embassies to the Thronehold nations, along with [[Aerenal]] and [[Riedra]]. 
** [[Brelish Museum of Fine Art]]. The museum displays work produced by Brelish artists and relics recovered from [[Xen'drik]].
** [[The Citadel|King's Citadel]]. The headquarters of the King's Citadel, [[Breland]]'s elite military and intelligence service. The Citadel is also a high-security prison holding Sharn's most dangerous criminals.
* [[Dava Gate]]. A quiet district of clustered small businesses that provide professional services.
* [[Dragon Towers]]. This is the primary place to do business with representatives of the [[dragonmarked house]]s. All the houses have outposts here, and [[Sivis]], [[Tharashk]], [[Jorasco]], and [[Cannith]] have their primary [[enclave]]s in Dragon Towers. 
** The [[Panaceum]]. The largest House [[Jorasco]] [[enclave]] in [[Sharn]] provides high-priced healing services to all who can pay for them. 
* [[Sovereign Towers]]. A district filled with a vast assortment of temples and shrines. It is home to the two most important temples in Sharn.
** [[Cathedral of the Cleansing Flame]]. The central temple of the Church of the [[Silver Flame]] serves both as a templar garrison and the site of grand rituals and celebrations.
** [[Pavilion of the Host]]. The center for worship of the [[Sovereign Host]] is a grand open tower surrounded by nine temples, each dedicated to one of the Sovereigns. 
* [[Sword Point]]. This garrison district houses the forces that police and defend Central Plateau, including the [[Sharn Watch]] and a detachment of the royal army. 
* [[Tradefair]]. A merchant district offering legal goods and services of modest to comfortable quality. 
Middle Dura caters to the working class. Its taverns are
modestly priced, but there's gold among the dross.

The [[Bazaar]] of Dura is the largest commercial district in [[Sharn]]. In addition to the dozens of permanent
shops and smithies, the streets of the bazaar are an ever-changing tapestry of stalls and tents. It's said that you
can find anything here, if you're not too worried about
where it came from and if you're prepared to contend
with the cutpurses that prey on the crowds.

A small selection of merchants that regularly do business at the bazaar is given on the table below; roll a <<dr d10>>, or choose a location of interest. 

| !<<dr d10>> |!Merchant |
| 1 |''Secondhand Strings.'' A must-stop shop for the [[bard]] on a budget, with a variety of gently used instruments. |
| 2 |''Korryn's Quill.'' A reliable source for cartographers, calligraphers, and scribes of all stripes. |
| 3 |''Seven Leagues.'' Owned by the cobbler Boots, this small stall has a remarkable selection of footwear. |
| 4 |''Borran's Blades.'' Borran is one of the few [[halfling]] smiths in Sharn. He specializes in knives and daggers. |
| 5 |''Hearty Scales.'' A stall serving grilled lizard meat and other [[Talentan|Talenta Plains]] delicacies. |
| 6 |''Roll and Conquer.'' One of Sharn's only game stores. It does most of its business in cards and dice. |
| 7 |''The Old Apothecary.'' Selling supplies for herbalists and [[alchemist]]s, this claims to be Bazaar's oldest shop. |
| 8 |''Illumination.'' This shop sells lamps, lanterns, candles, and torches. Some are magical. |
| 9 |''The [[Magewright|magewright]]'s Miscellany.'' This little shop deals in spell components. The clerks love to discuss magic. |
| 10 |''Sundry's Shop.'' A [[gnome]] named Sundry runs a pawn shop filled with all manner of trinkets. |

Elsewhere in Middle Dura, the district of [[Hareth's Folly]] is a bizarre blend of architectural styles. One of the primary attractions is the [[Hollow Tower]], an enormous
arena that features aerial jousting and racing. The [[King of Fire]] is a grand tavern that hosts a broad range of gambling and bookmaking activities, legal and otherwise.

Many people make their homes in Middle Dura, even if their jobs take them elsewhere. [[Rattlestone]] and [[Tumbledown]] are mostly poor tenements. [[Stormhold]]
contains crumbling manors still occupied by some of
Sharn's oldest families, while many that have prospered
have moved on to more prestigious districts. 

!! Districts and Noteworthy Locations

* The [[Bazaar]]. The largest commercial district in Sharn, an excellent place to buy or sell used—and possibly stolen—goods.
* [[Broken Arch]]. Once a proud residential district, Broken Arch has fallen into disrepair. Its housing is poor to modest in quality, though the shells of wealthy manors can still be seen. 
* [[Hareth's Folly]]. A jumble of architectural styles, Hareth's Folly is a place to gamble and enjoy modest food and drink. Hareth's Folly is where the [[Race of Eight Winds]] begins and ends. 
** The [[Hollow Tower]]. A vertically oriented arena used for aerial jousting and other unusual sporting events. 
** The [[King of Fire]]. A comfortable tavern and gambling hall, known as one of the safest places to bet on the Race of Eight Winds and the events at the Hollow Tower. 
* [[Rattlestone]]. Rattlestone is a tenement district. Its people have little but their pride, but there's a strong camaraderie between them. 
* [[Stormhold]]. A comfortable residential district, Stormhold is home to the few powerful families that have  remained in Dura. It's in better condition than most of Middle Dura, and [[Deneith]] mercenaries protect the streets. 
* [[Tumbledown]]. A poor residential district, Tumbledown has experienced recent incursions from [[Daask]]. 
* [[Underlook]]. The center of Sharn's nightlife before [[Menthis Plateau]] was built, Underlook is a collection of poor taverns and inns. 
** [[Ghallanda Hall]]. This proud [[Ghallanda]] [[enclave]] continues to operate amid the fading squalor of Middle Dura, and has become a tourist attraction. It offers a range of services, with food and lodging of poor to comfortable quality. 
Middle Menthis boasts the most diverse population of
any ward in [[Sharn]]. The [[Little Plains]] district is the destination for [[halfling]] immigrants from the [[Talenta Plains]].
[[Cassan Bridge]] has a significant population of [[orc]]s and
[[half-orc]]s from the [[Shadow Marches]]. Immigrants from
the [[Lhazaar Principalities]] have settled in the [[Warden Towers]] district, which is primarily a garrison for the
[[Sharn Watch]]. The district of [[Smoky Towers]] had a significant [[Cyran|Cyre]] community even before the [[Last War]];
now, this area has become a haven for Cyrans wealthy
enough to escape the refugee camps of [[High Walls]].

One of the most prominent attractions In Smoky Towers is the [[Classic Theater]]. The place lives up to its name
by staging only traditional works written before the start
of the Last War. Although the [[Grand Stage]] in the [[University District]] also performs more recent works echoing the classical style, the Classic has a stated policy of
not even considering new works.

The [[Everbright]] district might be of particular interest
to adventurers. A wide assortment of [[magewright]]s ply
their trade here, and the shops have a good selection
of [[magic item]]s (of common and uncommon rarity). The
people of Middle Menthis are law-abiding folk; visitors
looking for spellcasters to help with illegal activities or
who want to sell stolen artifacts will likely have better
luck in [[Lower Dura]]. 

!! Districts and Noteworthy Locations

* [[Cassan Bridge]]. A mercantile district with goods of modest to comfortable quality. Home to a significant number of immigrants from the [[Shadow Marches]], Cassan Bridge is the place to visit for exotic Marcher herbs and cuisine.
* [[Everbright]]. This district is a source of magical goods and services. Exotic components, [[magewright]]s for hire, common or uncommon [[magic item]]s—all of these and more can be found here.
* [[Little Plains]]. Founded by [[Talenta|Talenta Plains]] [[halfling]]s, this district includes a central campground for visiting halfling nomads. The permanent residents are mostly halflings as well. Talentan foods and crafts can be found here, along with displays of traditional skills and pastimes. 
* [[Smoky Towers]]. Safer than the lower wards and less expensive than [[Upper Menthis]], Smoky Towers has plenty of entertainment options. The [[Classic Theater]] is its most popular venue, but Smoky Towers offers a wide variety of more exotic fare. Dinner theater, [[changeling]] burlesque, and other diversions can be found in Smoky Towers. [[Thovanic Hall]] has begun performing works from [[Darguun]] and [[Droaam]] featuring monstrous performers. Smoky Towers has also become a haven for [[Cyran|Cyre]] refugees wealthy enough to avoid [[High Walls]]. 
** [[Classic Theater]]. A small and inexpensive theater, the Classic performs only works written before the start of the [[Last War]]. 
* [[Warden Towers]]. This district is the primary garrison of the [[Sharn Watch]] in Menthis. It's home to a community of [[Lhazaar|Lhazaar Principalities]] immigrants, and the [[Broken Anchor]] is a tavern catering to Lhazaar travelers. 
This ward caters to the middle class of [[Sharn]], offering
a wide range of comfortable housing. [[Dwarves|dwarf]] make up
most of the population, with the highest concentration
in the district of [[Holdfast]]. In contrast to the residents of
[[Highhold]] in [[Upper Dura]], the dwarves of Holdfast have
deep roots in Sharn and feel no strong connection to the
[[Mror Holds]] or its traditions.

[[High Hope]] is a temple district; although the city's
most impressive churches and shrines are located
in [[Upper Central]], it's commonly known that if you're
looking for a truly devoted priest, you should go to High
Hope. The most notable feature of the district is [[Daca's Watch]]. Twelve feet high, this pillar is thought to have
once held a statue or monument. Over a century ago,
a [[gnome]] named [[Daca]] climbed atop the pedestal. She
has remained there ever since, and shouts advice to
anyone who passes by. Although Daca doesn't claim to
be a priest, the people of the community say that she's
blessed by the god [[Boldrei]] and speaks with the [[Sovereign|Sovereign Host]]'s voice. True or not, Daca's advice has proven to be
remarkably sound, and she and her pillar have become a
tourist attraction. 

!! Districts and Noteworthy Locations

* [[High Hope]]. A center for worship for the people of Northedge, High Hope includes temples of the [[Silver Flame]] and the [[Sovereign Host]], along with many smaller shrines. It lacks the grandeur of [[Sovereign Towers]] in [[Central Plateau]], but has an atmosphere of solemn devotion. 
** [[Coldflame Keep]]. A garrison temple of the [[Silver Flame]], this place once housed a hundred templars dedicated to protecting Sharn from supernatural threats. It has largely been abandoned; only a dozen devoted templars and adepts remain in residence. 
** [[Daca's Watch]]. A [[gnome]] named [[Daca]] has been sitting on a pillar in Northedge for over a century, offering advice and encouragement. Though she doesn't claim to be a priest, many believe that Daca is blessed and guided by [[Boldrei]]. 
* [[Holdfast]]. Holdfast is the heart of Sharn's native [[dwarf]] population. The ancestors of the Holdfast dwarves helped build Sharn, and many of its people are stonemasons, architects, and smiths. Holdfast dwarves are proud of their Sharn roots and have little interest in [[Mror|Mror Holds]] customs or traditions. 
* [[Oakbridge]]. A safe and friendly residential district.
Unlike the [[upper ward|Upper Tavick's Landing]], Middle Tavick's Landing welcomes travelers and tourists. The ward features a host
of lively taverns and excellent inns. The [[Cornerstone|Cornerstone (arena)]] is
a huge arena that hosts events ranging from circuses to aerial jousting. The [[Deathsgate]] district caters to adventurers, much as the [[Clifftop]] district of Upper Dura does.
Like Clifftop, the district has an adventurer's guild—though the [[Deathsgate Guild]] has a dark reputation, and
its members often pick fights with Clifftop adventurers. House [[Jorasco]] has a large house of healing in the
ward, and House [[Deneith]] maintains a recruiting station
for would-be mercenaries. 

The [[Graystone]] district has deep roots in [[Karrnath]]i
culture that predate the [[Last War]]; [[Slogar's]] and the
[[Bloody Mug]] are places where homesick Karrns can
enjoy blood sausage and Nightwood ale. The district is a
haven for Karrnathi soldiers who want to avoid Brelish aggression and a place where followers of the [[Blood of Vol]] can practice their faith.

[[Tavick's Market]] is one of [[Sharn]]'s major market districts; located directly above the [[Terminus]] [[lightning rail]] station, it's filled with stands selling produce and goods brought in by local farmers. 

!! Districts and Noteworthy Locations

* [[Cornerstone]]. A haven for travelers, Cornerstone has a range of comfortable inns and taverns. It's built around the vast Cornerstone arena and is a center of activity for many major sporting events. 
** The [[Cornerstone|Cornerstone (arena)]]. A massive arena that hosts a wide array of sporting events. These include jousts and races, both on foot and through the air. The ''Stone Trees'' is an offshoot of the Cornerstone that serves as the playing field for [[hrazhak]] competitions. 
** The [[Tooth and Nail]]. A comfortable tavern devoted to the sport of [[hrazhak]]. Most of the clientele are [[shifter]]s, but anyone willing to talk hrazhak will find friends here. 
* [[Dancing Shadows]]. This district offers middle-of-the-road accommodations to the many people who arrive in Sharn every day.
* [[Deathsgate]]. Named for the nearby [[City of the Dead]], this district houses the [[Deathsgate Guild]] and businesses that cater to adventurers. House [[Deneith]] recruits mercenaries at its outpost here. 
** The [[Deathsgate Guild]]. A society where adventurers can hone their skills and seek profitable work. The Deathsgate Guild has a sinister reputation, earned because its members will do anything in pursuit of success. 
** The [[Guild of Starlight and Shadows]]. The guildhall of one of Sharn's most prestigious [[arcane order]]s. A reliable source for arcane spellcasting services. 
** [[Maynard's Menagerie]]. This [[Vadalis]] storefront deals in exotic pets and animal companions, along with barding and other useful gear. 
** [[Redblade's]]. A comfortable tavern catering to the adventurers of the [[Deathsgate Guild]]. Redblade is rumored to have a side business selling [[poison]] and venoms. 
* [[Graystone]]. This district was founded long ago by [[Karrnath]]i immigrants, and its people are proud of their heritage. It is a haven for any Karrnathi travelers passing through Sharn. Rumors say there's a temple devoted to the [[Blood of Vol]] in Graystone, but if that's the case, it's kept hidden. 
** [[Slogar's]]. This modest restaurant serves traditional Karrnathi cuisine. The ambience is a bit gloomy, but the prices are reasonable, and the food is very filling. 
* [[Kenton]]. A residential district with a significant [[shifter]] population.
* [[Little Barrington]]. A quiet middle class residential district.
* [[Tavick's Market]]. This district specializes in produce and other goods brought in by the farmers from the surrounding countryside. 
The middle [[city|Sharn]] is a bit more enclosed than the section above it, but there are still open-air balconies and platforms here and there. A wide range of middle-class citizens live and work in this region. 

<<list-links "[tag{!!title}sort[title]]">>
A creature that ingests this poison suffers no effect until the stroke of midnight. If the poison has not been neutralized before then, the creature suffers extreme poison damage.
Prince Mika Rockface of the [[Cloudreavers]] is an aggressive and boisterous woman with remarkable strength and an uncanny ability to inspire terror in her enemies. She believes that she has been blessed by the [[Devourer]] and that she gains strength for every vessel she sends to the bottom of the ocean. Whether this is true or simply a delusion remains to be seen.

Thirty years ago, a pirate captain named [[Magwroth]] tried to usurp the [[Cloudreavers]] from Prince Mika. Magwroth was soundly defeated, last seen at the helm of his damaged ship, //Devourer’s Hand//, as it limped out to sea into the gray mists of [[Lastpoint]].
The mimaxe is a living weapon, the result of a [[mimic]]'s unlucky encounter with a creative [[artificer]]. It has a predatory intelligence, and is able to see and hear as well as communicate with simple grunts (usually to convey hunger). In addition to serving the wielder as a powerful magic battleaxe, the mimaxe has the following properties.

''//False Appearance.//'' While the mimaxe remains motionless, it is indistinguishable from an ordinary battleaxe.

''//Hungry.//'' The mimaxe has 3 charges, and recovers spent charges by consuming corpses. A small creature such as a [[goblin]] restores 1 charge, a [[human]]-sized creature restores 2 charges, and a large creature such as a horse restores 3 charges. A full mimaxe refuses to consume any additional corpses.

The process of consuming a corpse is loud, obvious, and messy. Once consumed, the corpse is completely destroyed and any magic equipment on it is spat out into a nearby pile. The mimaxe does not change weight, regardless of what it has consumed.

If the mimaxe goes 24 consecutive hours without eating a corpse, it loses 1 charge. If it goes 24 hours at 0 charges, it will search for the nearest source of food on its own... which may be the owner.

''//Roar.//'' You may expend one charge to cause the mimaxe to roar menacingly, striking fear into the hearts of your foes, and granting advantage on attempts to intimidate.

''//Teeth.//'' When you hit a creature with this weapon, you may expend a charge to deal extra damage.

Mimics are shapeshifting predators able to take on the form of inanimate objects to lure creatures to their doom. In dungeons, these cunning creatures most often take the form of doors, chests, and furniture, having learned that such forms attract a steady stream of prey.

Mimics can alter their outward texture to resemble wood, stone, and other basic materials, and they have evolved to assume the appearance of objects that other creatures are likely to come into contact with. A mimic in its altered form is nearly unrecognizable until potential prey blunders into its reach, whereupon the monster sprouts pseudopods and attacks.

When it changes shape, a mimic excretes an adhesive that helps it seize prey and weapons that touch it. The adhesive is absorbed when the mimic assumes its amorphous form and on parts the mimic uses to move itself.

Mimics live and hunt alone, though they occasionally share their feeding grounds with other creatures. Although most mimics have only predatory intelligence, a rare few evolve greater cunning and the ability to carry on simple conversations. Such mimics might allow safe passage through their domains or provide useful information in exchange for food.

Scholars believe that the mimics of [[Eberron]] either immigrated from [[Kythri]], the Churning Chaos, or were created by its influence.
Mind flayers, also called illithids, are the scourge of sentient creatures across [[Eberron]]. Psionic tyrants and slavers, they are insidious masterminds that harvest entire races for their own twisted ends. Four tentacles snake from their octopus-like heads, flexing in hungry anticipation when sentient creatures come near.

Mind flayers possess psionic powers that enable them to control the minds of other creatures. Illithids prefer to communicate via telepathy and use their telepathy when issuing commands to their thralls.

Solitary mind flayers are likely rogues and outcasts. Most illithids belong to a colony of sibling mind flayers devoted to an [[elder brain]]—a massive brain-like being that resides in a briny pool near the center of a mind flayer community. From its pool, an elder brain telepathically dictates its desires to each individual mind flayer within 5 miles of it, for it is able to hold multiple mental conversations at once.

Illithids subsist on the brains of [[humanoid]]s. The brains provide enzymes, hormones, and psychic energy necessary for their survival. An illithid healthy from a brain-rich diet secretes a thin glaze of mucus that coats its mauve skin. An illithid experiences euphoria as it devours the brain of a humanoid, along with its memories, personality, and innermost fears. Mind flayers will sometimes harvest a brain rather than devour it, using it as part of some alien experiment or transforming it into an [[intellect devourer]].

Mind flayers are native to the plane of [[Xoriat]], and were part of the initial incursion of the [[daelkyr]] into Eberron along with other [[aberration]]s from the plane of madness. They are closely associated with the daelkyr known as [[Dyrrn]], the Corruptor.

//''Ceremorphosis.''// Mind flayers don't reproduce in the traditional sense.
Instead, they lay eggs from which hatch tadpole-like
creatures that are used to make more of their kind
through a process called ceremorphosis. First, a captured [[humanoid]] is rendered docile by a blast of [[psionic|psionics]] power. A newly hatched tadpole is inserted into the victim's cranium, usually through a nostril or ear canal.
The tadpole grows as it devours the humanoid's brain,
attaching to the victim's brain stem and becoming its
new brain. Over the course of a week, the humanoid
body changes form, and a new mind flayer comes into
being. The emergent mind flayer often retains a few dim
memories from its previous form, but these vague recollections seldom have any bearing on its new life as a brain-eating monster. 

Rarely, one of these tadpoles mutates (either accidentally or deliberately) and becomes a fearsome [[neothelid]].

<<list-links-article "[tag{!!title}sort[title]]">>
[[Kalaraq|kalaraq]] [[quori]] have the ability to devour the thoughts
of a victim, slowly replacing that being's personality and rendering the victim a willing servant of the
kalaraq. The process is a mental disease that attacks
the victim's will instead of the body. It is used sparingly by the kalaraq, since there have been incidents
where the victim of a mind seed has gone rogue.
Nonetheless, it's an effective means of placing a mole
in an enemy organization.

!! The Limits of Mind Seed

The mind seed power is perhaps the most powerful weapon
in the [[quori]] arsenal. So why don't the quori control the
world? Why don't they mind seed everyone in [[Khorvaire]]?

To begin with, mind seed is no common tool. Only a master telepath can manifest the power, and it requires a significant expenditure of energy. Only a
select handful of the [[Inspired]] can manifest the power,
and they can't use it on a regular basis. The [[kalaraq]] are few in number and have many important duties in [[Sarlona]] and [[Dal Quor]].

Furthermore, mind seed is an uncertain tool. The
user has no control over the newborn seed. The [[quori]] are
fanatically dedicated to [[il-Lashtavar]], and usually this is
sufficient to ensure the loyalty of seeds—the victim's personality mirrors that of the quori, and usually they serve [[Dal Quor]] with unswerving devotion. Nonetheless, a seed
occasionally turns against the [[Inspired]] and the [[Dreaming Dark]]. These rogue seeds possess all the knowledge (if only a fraction of the power) of a potent quori. They can
be the most dangerous dissidents of all.

If a party dedicates itself to battling the [[Dreaming Dark]], it is possible that a PC will be targeted with mind seed. Mental [[abjuration]]s can prevent a seed from germinating,
but only [[psionic chirurgery]], [[reality revision]], [[wish]], or miraculous [[divine magic]] can remove a seed. Few people in Eberron possess such power. The Venerable [[Thatari]] of [[Tashalatora]] is one; the [[Keeper of the Flame]] is another. 
The spellcaster drives a disorienting spike of psychic energy into
the mind of one creature they can see within 60 feet.
You psychically lash out at one creature you can see
within 90 feet. On a hit, the target suffers some psychic damage and is dazed for a few seconds.

If you are able to cast [[rare-tier|spell tier]] spells, you can cast this as such to target up to two additional creatures. The creatures must all be within 30 feet of each other when you target them.
Minharkhad, an [[Inspired]] [[psi warrior]], is the commander of the guard at the [[Riedra]] [[Embassy|Riedra Embassy (Sharn)]] in [[Sharn]]. The embassy guard is comprised of 12 highly trained [[human]] soldiers. To date, the embassy guard has never been called into service, so the people of Sharn know nothing about the extent of their skills. Minharkhad himself is cold and cruel. Unlike [[Helkashtai]] and [[Jorasesh]], Minharkhad has trouble concealing his disdain for humanity, and as a result he is rarely seen outside of the embassy.
This small [[mimic]] is in the shape of a chest that can hold up to 1 cubic foot of material.
You can speak a command word and cause the chest to open. If you attempt to open the chest without first speaking the command word, the chest grows
teeth and attempts to bite your hand. 
A minotaur's roar is a savage battle cry that most civilized creatures fear. Shaggy humanoids with the heads of bulls, minotaurs are savage conquerors and carnivores that live for the hunt. 

Minotaurs are native to [[Khorvaire]] and [[Xen'drik]]. On Khorvaire, most minotaurs dwell in the monstrous nation of [[Droaam]], many of whom serve the warlord [[Rhesh Turakbar]]. 

Some minotaurs also live in [[Sharn]], serving as House [[Tharashk]] mercenaries or agents of [[Daask]].

The minotaurs believe that they are the chosen warriors of a
being commonly known as the Horned Prince, and they hone
their skills in battle so they may join the Prince after death.
Each clan has their own private name for the Prince and their
own beliefs about the conduct he expects of his followers. In
most cases, the Horned Prince seems to be an analogue to the
[[overlord]] [[Rak Tulkhesh]], desiring only bloodshed. However, the
Red Hooves worship He Who Walks Behind, who is much like
the [[Mockery]]; they focus on the use of terror and in deceiving
their enemies. The Blade Breakers worship One Horn, who
rewards strength and courage—much like [[Dol Dorn]]. The Dawn
Harvest was a clan whose version of the Prince—the Dawn
Gorer—encouraged followers to fight with honor and to defend
the weak, two traits rarely seen in Droaam. The Dawn Harvest
was destroyed by [[Maenya's Fist]] after refusing to accept Rhesh Turakbar as the warlord of their region; a few members of the clan survived and are now scattered across Droaam.
Most believe Miron's Tears to be an urban legend—an secret
order of spies and assassins deep within the Church of the [[Silver Flame]], hidden even from the [[Keeper|Keeper of the Flame]] and the Cardinals.
According to the stories, [[Tira Miron]] foresaw the danger of the
Shadow in the Flame. On the eve of her battle with [[Bel Shalor]],
Tira charged her trusted companion [[Samyr Kes]] to monitor the
Church that was to come for signs of [[fiend]]ish [[corruption|Silver Flame Heresy and Corruption]]—to save those who could be saved, and eliminate those who
could not. Those who believe these tales say that it was agents
of Miron's Tears who recognized the threat of [[Melysse Miron]]
and exposed her as an agent of Bel Shalor.

It's up to the DM to decide if this order exists or if it died
out long ago. If he still lives, Samyr Kes—an [[elf]] whose long
life has been extended by the Flame—could be disgusted by the
corruption of the modern church. Beyond combating fiendish
corruption, Miron's Tears could target greedy priests in
[[Breland]], fight the extremism of the [[Pure Flame]] in [[Aundair]], or
even seek to bring down the [[Thranish|Thrane]] theocracy, seeing it as a
corrupting influence on the church. Virtuous player characters
could be recruited into the order. Or chaos could ensue when an ally of the player characters—secretly a servant of the [[Lords of Dust]]—is targeted by the Tears.
Three illusory duplicates of yourself appear within 5 feet of you. Until the spell ends (up to one minute), the duplicates move with you and mimic your actions, shifting position so it's impossible to track which image is real. 

Each time a creature targets you with an attack during the spell's duration, there's a chance it will instead target a duplicate. If the duplicate is hit by an attack, it is destroyed. The spell ends when all three duplicates are destroyed.

A creature is unaffected by this spell if it can't see, if it relies on senses other than sight, or if it can perceive illusions as false, as with [[truesight]].

This large lake sits in the center of the [[Mror Holds]], surrounded by the [[Ironroot Mountains]]. The lake is fed from streams from the mountains, then empties into the [[Glimmergleam]] river out into the [[Karrn Bay]].
When King [[Jarot ir'Wynarn]],
the last ruler of [[Galifar]], died in 894 YK, his daughter
Mishann, governor of [[Cyre]], was the rightful heir to the
throne. However, her coronation was not to be. Her
brother [[Thalin|Thalin ir'Wynarn]] of [[Thrane]] asserted that he should take
the throne. [[Kaius|Kaius ir'Wynarn I]] of [[Karrnath]] and [[Wroann|Wroann ir'Wynarn]] of [[Breland]] shared Thalin’s notion that succession of the eldest was
a worn-out tradition. Only [[Wrogar|Wrogar ir'Wynarn]] of [[Aundair]] stood
with Mishann and her rightful claim. Before the year
had ended, the [[Last War]] began. Galifar collapsed into
hostile nations, with each ir’Wynarn sibling eventually
claiming rights to the Galifar crown.

In 908 YK, Mishann was assassinated by the Order of the [[Emerald Claw]]. Mishann was succeeded by her son Brusst ir'Wynarn.
//‘Duty before Glory.’ So says the inscription on the gates of [[Ka'rhashan]]. Our ancestors carved this when they fled the western lands and returned to watch these dusty ruins. For a hundred generations we have been told that this is all we can aspire to, that we must guard these [[cursed cities|dragonborn clanhold]] until the end of time. I say no more! I say it is our duty to regain the glory we once possessed, to fulfill the promise of our blood. We have fallen from our path, and it is this that makes our children weak. Join me. Heed the call of battle. Let us know glory once again!//
<div align="right">—Mishva the Conqueror</div>

In southwestern [[Q'barra]], a threat grows against the
settlers of that land that could one day spread to the
rest of [[Khorvaire]]. A prescient [[dragonborn]] leader,
Mishva Garodya of the [[Stormhorn Clan|Stormhorn Clanhold]], has taken
the stories of her people’s lost empire and glory to
heart. With vengeful eyes trained on [[Hope]], she
dreams of seeing the dragonborn raised to a mighty
power in Khorvaire, no matter what the cost.

The [[dragonborn]] warlord has erected a [[fortress|Castle Garodya]]
in the forested foothills not far from [[Stormhorn Clanhold]] and [[Wyrmwatch]]. Her forces have conducted raids on settlements in [[Hope]], as well as forays
into [[Valenar]] and the [[Blade Desert]]. King [[Sebastes|Sebastes ir'Kesslan]] is
watching the situation, seeing a potential threat to
[[New Galifar]].

Stormhorn elders are at odds with Mishva, who claims that honor compels the
clan to seek redress for past wrongs, and to lead the [[Q'barra]]n [[dragonborn]] to glory. Though her detractors claim that Mishva’s only goal is personal aggrandizement, she has announced her plan to attend the upcoming ritual war in [[Ka'rhashan]] with a contingent loyal to her vision. A victory will place her in an influential position, perhaps even birthing a new [[dragonborn]] clan.

!! Mishva's Motives

Mishva was an undistinguished
warrior of the Stormhorn Clan until her brother
Shamash was killed in [[Wyrmwatch]] a decade ago.
When a trade dispute turned violent, the local
militia drew weapons against Shamash and his
compatriots, who killed several guards before being
subdued. Elder Nevillom ordered Shamash and two
other [[dragonborn]] executed, and Mishva has sworn
to take vengeance on the [[Silver Flame]] zealot and his
followers.

Mishva’s true motivations are more complex than even her closest allies
know. Shortly after Shamash’s death, Tarmahkan,
an elder [[blue dragon]] of the [[Vast]] in [[Argonnessen]],
sent envoys to Mishva. The elder blue plans to use the young [[dragonborn]] warrior to establish a new dragonborn kingdom in [[Khorvaire]], seeing that as the first step to placing his own [[dragon]] clan in control of [[Haka'torvhak]]. With the power of Argonnessen behind her—including a magic sword and a number of young dragon allies already provided by Tarmahkan—Mishva is a more dangerous foe than any in [[Q'barra]] realize.
You become invisible at the same time that an illusory double of you appears where you are standing. The double lasts for up to one hour, but the invisibility ends if you attack or cast a spell.

You can move your illusory double up to twice your speed and make it gesture, speak, and behave in whatever way you choose.

You can see through its eyes and hear through its ears as if you were located where it is. You can switch from using its senses to using your own, or back again. While you are using its senses, you are blinded and deafened in regard to your own surroundings.
This 1-foot square glass panel is resistant to all physical damage from non-[[adamantine]] materials, and is immune to the effects of the [[magic missile]] spell. This material is used for windows in banks, government offices, strongholds, and other prominent locations.
\define chimera-counts-filter() $(boo)$ +[sortan[]reverse[]] +[limit[50]]
\define scares-ghost() [[$(scares)$: $(ghost)$]]
\define chimera-counts()
<$list filter="[all[tiddlers]links[]is[missing]!is[system]]" variable="ghost">
<$list filter="[<ghost>backlinks[]count[]]" variable="scares" >
<$text text=<<scares-ghost>>/>
</$list>
</$list>
\end
\define search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text="[title[$(ghostname)$]backlinks[]]"/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text="[title[$(ghostname)$]backlinks[]]"/><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-setfield $tiddler="$:/state/advancedsearch/currentTab" text="$:/core/ui/AdvancedSearch/Filter"><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/>


[[To Do]]

<$wikify name="boo" text=<<chimera-counts>>>
<$list filter=<<chimera-counts-filter>> variable="ghostnamecounts">
<$wikify name="ghostname" text="{{{ [<ghostnamecounts>split[: ]nth[2]] }}}">
<$set name="ghostcounts" filter="[<ghostnamecounts>split[: ]nth[1]]">
{{{ [<ghostnamecounts>split[: ]nth[2]] }}} (<$button class="tc-btn-invisible tc-tiddlylink"><<search-actions>><<ghostcounts>></$button>)<br/>
</$set></$wikify>
</$list>
</$wikify>
...
Briefly surrounded by silvery mist, the spellcaster teleports up to 30 feet to an unoccupied space that they can see.
Mithral is a rare, silvery, glistening metal that is lighter than iron but just as hard. When worked like steel, it becomes a wonderful material from which to create armor or other items. It also acts as silver when used as a weapon against creatures with a weakness to silver, such as [[lycanthrope]]s and [[devil]]s.

On [[Eberron]], the largest known mithral deposits are on the continent of [[Khorvaire]], in the [[Mror Holds]] and in the [[Blackcaps|Blackcap Mountains]] of northern [[Breland]].
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The homes in this district are
large and well kept, showing clear signs of great
wealth. True to the district's name, many of the
houses boast [[mithral]] filigree.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Korranath]] (northeast); [[Highest Towers]] (south); [[Skysedge Park]] (southeast); [[Dava Gate]] (below)

Mithral Tower is [[Sharn]]'s most desirable downtown residential district, comparable to the more
suburban [[Oak Towers]] and [[Crystal Bridge]] districts
in [[Upper Northedge]]. Mithral Tower's most noteworthy resident is its representative on the [[city council|Sharn Council]], [[Javan Tomollan]].

Mizano Rupa's is one of three
important dinner theater venues in Smoky Towers
that give rising stars a stop on their ascent between
[[Gailan's]] and [[Upper Menthis]]. Self-consciously named
and styled in imitation of Gailan's in the [[Torchfire]]
district below, Rupa's offers decent food and high-quality entertainment in a variety of styles. Mizano Rupa ([[dwarf]]) is hardly a connoisseur
of fine music, but he knows what he likes and—fortunately—his tastes seem to compare with those of many
in [[Middle Menthis]], making his establishment quite
popular. Reservations are recommended.
[[Dol Arrah]] will show you how to fight with honor, [[Dol Dorn]]
will grant you courage, and when you die, at least you'll know
you did so bravely and honorably. The Mockery will drag you
through mud and blood, drive you to betray your principles and
employ tactics that horrify your allies and enemies alike—but
at the end of the day, you'll be standing over the corpse of your
foe. Which path will you follow?

Those who despise the [[Dark Six]] condemn the Mockery as
a villain, a monster who encourages cruel and treacherous
behavior. This can be as simple as ambushing an enemy,
using stealth instead of facing them openly. Or it can mean
slaughtering innocents, torturing your foes, breaking a truce—anything to bring you victory. Those who embrace the path of the Mockery may say that such tactics are the only way to bring down a superior foe. Honor is a luxury for the strong; for those
who are weak and oppressed, victory is all that truly matters.

Others who follow the Mockery assert that the very idea
of honor in war is delusional. Pain, terror, and death are the
inevitable results of violence; at least those who follow the
Mockery acknowledge the truth others deny. The assassin
who kills without warning, the barbarian who sees mercy as a
weakness, the pirate who cultivates a terrifying reputation—all
these might view the Mockery as an ally. While this can be a
dark path for a player character to follow, a hero could use the
techniques of the Mockery in pursuit of a noble cause. A grim
vigilante who uses stealth and fear to terrify cowardly criminals
into changing their ways could be guided by the Mockery.

According to legend, the Mockery was
once the brother of [[Dol Dorn]] and [[Dol Arrah]], but
he was stripped of his skin and his name (Dol Azur) after betraying them. His symbols include five blood-spattered blades or a flayed [[dragon]].
//Period: 5,000–0 years ago//

Scholars at [[Morgrave University]] call the last five thousand
years the Age of Humanity, contending that its defining trait
is the rise of [[human]] civilization and its spread from [[Sarlona]]
to [[Khorvaire]]. The [[gnome]] sages of the [[Library of Korranberg]]
call it the Dragonmarked Age, asserting that the appearance of
the [[dragonmark]]s and the achievements of the [[dragonmarked house]]s are more significant in the grand sweep of history than
mere human achievements. Most people dodge this debate by
simply referring to it as the ''modern age''.

Regardless of where you stand on this argument, a great
deal has happened over the last five thousand years.

!! Abbreviated Timeline

| !Year|!Event |
| -4,100|The greatpine [[Oalian]] is awakened—some say by a [[Gatekeeper|Gatekeepers]] [[druid]], others by [[Vvaraak]] herself. Over time, Oalian becomes recognized as the Great Druid, a spiritual authority respected by all the druids of the [[Eldeen Reaches]]. |
| -3,200|The [[Mark of Hospitality]] appears among [[halfling]]s of the [[Talenta Plains]]. The [[Mark of Shadow]] and the [[Mark of Death]] appear among the [[elves|elf]] of [[Aerenal]]. |
| -3,000|The adventurer [[Lhazaar]] leads a wave of [[human]] settlers from [[Sarlona]] to the eastern shores of [[Khorvaire]], establishing what comes to be known as the [[Lhazaar Principalities]]. <br/>The [[Mark of Healing]] appears among [[halfling]]s of the [[Talenta Plains]]. |
| -2,975|[[Malleon the Reaver]] builds a fortress amid [[goblin]] ruins on the edge of the [[Dagger River]], naming his keep [[Shaarat|Sharn]]. Over time, it expands to become a powerful city. |
| -2,800|Humans are aggressively expanding across [[Khorvaire]], fighting and oppressing the [[goblin]]s and other natives. <br/>The [[Mark of Scribing]] appears among the [[gnome]]s of [[Zilargo]]. |
| -2,650|The [[Mark of Sentinel]] appears among [[human]]s in the expanding city-state of [[Korth]]. |
| -2,600|The [[Aereni]] discover that the [[line|Aereni noble line]] of [[Vol]], which carries the [[Mark of Death]], has been performing magebreeding experiments with rogue [[dragon]]s in hopes of enhancing the mark. The [[Undying Court]] joins forces with [[Argonnessen]] and completely wipes out the line of Vol. [[Elves|elf]] that supported Vol are exiled to [[Khorvaire]], and the elves of House [[Phiarlan]] choose to relocate there. |
| -2,500|Humans have spread across [[Khorvaire]], and the city-states that will eventually become the [[Five Nations]] are now well established: [[Daskara]], [[Korth]], [[Metrol]], [[Thaliost]], and [[Wroat]]. <br/>The [[Mark of Making]] appears among [[human]]s of Metrol. <br/>The [[Mark of Warding]] appears among the [[dwarves|dwarf]] of the [[Ironroot Mountains]]. |
| -2,400|King Bregor of [[Wroat]] destroys the rival city of Shaarat, asserting his power over the region. He eventually rebuilds the city and renames it [[Sharn]]. |
| -2,000|[[Karrn the Conqueror]] seizes control of [[Korth]] and establishes the nation of [[Karrnath]]. After defeating the remaining [[goblinoid]] settlements, he unsuccessfully attempts to conquer [[Daskara]], [[Metrol]], [[Thaliost]], and [[Wroat]]. <br/>The [[Mark of Storm]] appears among half-elves of Daskara. |
| -1,900|The [[Mark of Passage]] appears among [[human]]s in [[Thaliost]]. |
| -1,800|The [[Mark of Handling]] appears among humans in western [[Thaliost]].<br/>[[Adar]]an monks become voluntary vessels for [[quori]] spirits in [[Dal Quor]], creating the [[kalashtar]]. |
| -1,600|In [[Sarlona]], the [[Sundering]] begins. Over the next two hundred years, the [[quori]] use manipulation and greed to stir up riots and wars across the continent. These conflicts lead to a wave of [[human]] refugees settling on [[Khorvaire]], notably in the [[Shadow Marches]] and the [[Demon Wastes]]. [[Tiefling|tiefling]] and human refugees from Sarlona establish the [[Venomous Demesne]] in what is now [[Droaam]]. |
| -1,500|The [[Mark of Detection]] appears among [[half-elves|half-elf]] of [[Wroat]]. The [[Twelve]] is established, forging a strong alliance between the [[dragonmarked house]]s and standardizing many practices. This leads to the [[War of the Mark]], as the Twelve works to eradicate [[aberrant dragonmark]]s. The city of [[Sharn]] is ruined in one of the final battles of the war. |
| -1,300|[[Riedra]] is unified under the [[Inspired]]. Riedran calendars count forward from this year, which they call 1 Unity. |
| -1,043|[[Galifar Wynarn|Galifar ir'Wynarn]] is born in [[Karrnath]]. |
| -1,022|Galifar assumes rulership of [[Karrnath]]. |
| -1,012|Galifar begins his campaign to unite the [[Five Nations]]. He abolishes the practice of slavery in his domain and promises freedom to the oppressed subjects of his enemies. This draws a significant number of [[goblin]]s to his cause. |
| -1,005|Galifar meets with the [[Twelve]] and establishes the [[Korth Edicts]], establishing that the houses will remain a neutral force—forbidding them from holding land or noble titles—while promising them regulatory power and industrial preeminence in exchange for their support. |
| -1,000|The [[Mark of Finding]] appears among the people of the [[Shadow Marches]]. |
| 1 YK <br/>(–998)|After a long campaign of conquest and diplomacy, [[Galifar I|Galifar ir'Wynarn]] unites the nations of [[Khorvaire]] under his rule, declaring this realm the United Kingdom of [[Galifar]]. During the later reign of [[Cyre|Cyre ir'Wynarn]]’s son, [[Galifar the Dark]], a new calendar establishes this year as the first Year of the Kingdom (YK). |
| 2 YK|Galifar I appoints his five eldest children as governors of the provinces of the new kingdom. He renames these regions after his children. [[Daskara]] becomes [[Thrane]], [[Metrol]] becomes [[Cyre]], [[Thaliost]] becomes [[Aundair]], and [[Wroat]] is named [[Breland]] after his daughter [[Brey|Brey ir'Wynarn]]. Galifar’s son [[Karrn|Karrn ir'Wynarn]] governs [[Karrnath]], which remains unchanged. |
| 5 YK|Galifar I and Princess Brey begin the reconstruction of the ruined city of Sharn. The [[ir'Tain family]] invests heavily in the construction. |
| 15 YK|Galifar I establishes the [[Arcane Congress]]. |
| 22 YK|The rogue [[dragon]] [[Sarmondelaryx]] carries out a reign of terror. When Prince Thrane raises an army to face her, she slays him and scatters the army. The area devastated in the battle becomes known as the Burnt Wood. Sarmondelaryx isn’t seen again for centuries. |
| 28 YK|The decade-long [[Galifar-Lhazaar War]] begins. |
| 40 YK|Galifar I, now eighty-five years old, steps down and passes rulership of the kingdom to his eldest daughter, [[Cyre|Cyre ir'Wynarn]]. |
| 53 YK|Galifar I dies. |
| 88 YK|The [[Edgewalkers]] are founded in [[Riedra]] in response to a disastrous planar incursion in the province of [[Nulakesh]]. |
| 106&nbsp;YK|House [[Kundarak]] is recognized by the [[dragonmarked house]]s and becomes part of the [[Twelve]]. |
| 298&nbsp;YK|The Year of Blood and Fire. The [[overlord]] [[Bel Shalor]] is partially released from his bonds, and [[fiend]]s terrorize [[Thrane]]. |
| 299&nbsp;YK|The [[paladin]] [[Tira Miron]] sacrifices herself to rebind Bel Shalor. Her allies establish the Church of the [[Silver Flame]], and the cathedral of [[Flamekeep]] is built around the pillar of fire marking her sacrifice. |
| 347&nbsp;YK|House [[Lyrandar]] takes possession of an island off the coast of [[Aundair]] to create [[Stormhome]]. |
| 498&nbsp;YK|House [[Sivis]] discovers heirs with the [[Mark of Finding]] while exploring the [[Shadow Marches]]. Sivis helps the Marchers build House [[Tharashk]], which is quickly recognized by the [[Twelve]]. |
| 512&nbsp;YK|King Daroon orders the construction of the [[Starpeaks Observatory|Starpeaks]] in [[Aundair]], now used by the [[Arcane Congress]] to study the moons and stars. |
| 778&nbsp;YK|A group of [[medusa]]s emerge from [[Khyber]] and take possession of [[Cazhaak Draal]], a [[Dhakaan]]i ruin in what is now [[Droaam]]. |
| 789&nbsp;YK|House [[Sivis]] [[message station|speaking stone]]s begin operations, dramatically improving long-distance communication. |
| 802&nbsp;YK|The Kingdom of [[Galifar]], in cooperation with the [[dragonmarked house]]s, funds the upgrade of the trade city of [[Stormreach]] on the northern peninsula of [[Xen'drik]]. |
| 811&nbsp;YK|The first [[lightning rail]] connects [[Flamekeep]] and [[Fairhaven]]. |
| 830&nbsp;YK|[[Lycanthropy|lycanthrope]] surges in the [[Towering Wood]]. The people of western [[Aundair]] suffer a wave of attacks and wererat infiltration. |
| 832&nbsp;YK|[[Keeper of the Flame]] Jolan Sol launches the [[Silver Crusade]] to eliminate the threat of lycanthropy. An army of templars is dispatched to [[Aundair]], and templars across [[Khorvaire]] seek to expose and eliminate hidden [[lycanthrope]]s. |
| 845&nbsp;YK|King [[Jarot|Jarot ir'Wynarn]] begins a public works project to connect all of central [[Khorvaire]] via [[lightning rail]]s. Within twenty years, lines connect the [[Five Nations]], [[Zilargo]], the [[Mror Holds]], and the [[Talenta Plains]]. |
| 878&nbsp;YK|House [[Deneith]] begins to provide clients with [[goblinoid]] mercenaries from the [[Darguun]] region. |
| 882&nbsp;YK|[[Keeper|Keeper of the Flame]] Jovor Daran declares an end to the [[Silver Crusade]]. |
| 894&nbsp;YK|King [[Jarot|Jarot ir'Wynarn]], the last ruler of [[Galifar]], dies. [[Thalin|Thalin ir'Wynarn]], [[Kaius|Kaius ir'Wynarn I]], and [[Wroann|Wroann ir'Wynarn]] reject the succession of [[Mishann|Mishann ir'Wynarn]]. [[Wrogar|Wrogar ir'Wynarn]] backs his sister’s claim, and the [[Last War]] begins. |
| 896&nbsp;YK|King [[Kaius I|Kaius ir'Wynarn I]] of [[Karrnath]] embraces the [[Blood of Vol]] as Karrnath’s state religion. The Order of the [[Emerald Claw]] is established. |
| 910&nbsp;YK|[[Kaius II|Kaius ir'Wynarn II]] ascends to the throne of [[Karrnath]] after the mysterious death of Kaius I. |
| 913&nbsp;YK|Miners in the [[Mror Holds]] break through into the deeper halls of the [[Realms Below]]. |
| 914&nbsp;YK|The [[Mror Holds]] declares its independence in the first [[Iron Council]].<br/>[[Thalin|Thalin ir'Wynarn]] of [[Thrane]] dies and the Church of the [[Silver Flame]] assumes control of the nation. |
| 918&nbsp;YK|Unknown saboteurs destroy the [[Glass Tower]] of [[Sharn]]. |
| 928&nbsp;YK|[[Ven ir'Kesslan]] leads settlers from the [[Five Nations]] to forge the nation of [[Q'barra]]. |
| 956&nbsp;YK|[[Tairnadal]] mercenaries annex Eastern [[Cyre]] and declare the sovereignty of the [[elf]] nation of [[Valenar]]. |
| 958&nbsp;YK|The [[Eldeen Reaches]] declares itself an independent nation under the protection of the [[Wardens of the Wood]] and the guidance of the Great Druid [[Oalian]]. |
| 959&nbsp;YK|The first [[warforged titan]]s are deployed in [[Cyre]]. |
| 961&nbsp;YK|[[Boranel ir'Wynarn]] becomes king of [[Breland]]. |
| 962&nbsp;YK|[[Zilargo]] formally aligns with [[Breland]]. |
| 965&nbsp;YK|House [[Cannith]] perfects the modern-era [[warforged]], living [[construct]]s designed to fight the [[Last War]]. |
| 969&nbsp;YK|The mercenary leader [[Haruuc|Haruuc Shaarat'kor]] leads a [[hobgoblin]] rebellion. The [[goblinoid]] nation of [[Darguun]] is established. |
| 972&nbsp;YK|The Shadow Schism. House [[Thuranni]] splits off from House [[Phiarlan]]. |
| 976&nbsp;YK|Regent [[Moranna]] of [[Karrnath]] condemns the [[Blood of Vol]] and restores the [[Sovereign Host]] as the state religion of Karrnath. Seeker orders are disbanded, but the Order of the [[Emerald Claw]] refuses to disarm, its members going into hiding. |
| 980&nbsp;YK|Queen [[Aurala|Aurala ir'Wynarn]]’s reign over [[Aundair]] begins. |
| 986&nbsp;YK|A trio of [[hag]]s known as the [[Daughters of Sora Kell]] arrive at the [[Great Crag]] with an army of [[troll]]s, [[ogre]]s, and [[gnoll]]s. |
| 987&nbsp;YK|King [[Boranel|Boranel ir'Wynarn]] pulls settlers back and seals off the land west of the [[Graywall Mountains]]. The [[Daughters of Sora Kell]] declare the sovereignty of the nation of [[Droaam]]. |
| 988&nbsp;YK|House [[Tharashk]] begins brokering the services of monstrous mercenaries from [[Droaam]]. The criminal organization [[Daask]] establishes a presence in [[Sharn]]. |
| 990&nbsp;YK|The first elemental [[airship]]s go into service for House [[Lyrandar]]. |
| 991&nbsp;YK|[[Kaius III|Kaius ir'Wynarn III]]’s rule of [[Karrnath]] begins. |
| 992&nbsp;YK|A group of disavowed [[Brelish|Breland]] commandos establishes the criminal organization known as House [[Tarkanan]] in [[Sharn]]. |
| 993&nbsp;YK|[[Jaela Daran|Keeper of the Flame]], then six years old, assumes the power of the Keeper of the [[Silver Flame]]. |
| 994&nbsp;YK|[[Cyre]] is destroyed in the [[Mourning]]; the [[Mournland]] is created. |
| 996&nbsp;YK|The [[Treaty of Thronehold]] officially ends the [[Last War]]. The treaty officially recognizes the nations of [[Aundair]], [[Breland]], [[Thrane]], [[Karrnath]], the [[Talenta Plains]], [[Zilargo]], [[Q'barra]], the [[Lhazaar Principalities]], the [[Mror Holds]], the [[Eldeen Reaches]], [[Darguun]], and [[Valenar]]. House [[Cannith]] is ordered to destroy all [[creation forge]]s; the remaining [[warforged]] are granted the rights of sentient beings. |
| 998&nbsp;YK|The default starting point for an [[Eberron]] campaign. |
Modrons are [[construct]]s of absolute law that adhere to a hive-like hierarchy. They inhabit the plane of [[Daanvi]], their existence a clockwork routine of perfect order.
Mokush is a town of [[ogre]]s and [[oni]] on the
[[Borunan]] frontier near [[Syrkarn]]. Ostensibly ruled by
an aging [[Chosen]] lady, Mokush's residents are builders,
miners, and farmers. Quarterly caravans come from other
[[Riedra]]n settlements to pick up rock, iron, and [[Khyber shard|dragonshard]]s from
the town, and perhaps some ogre laborers for other parts
of the [[Inspired]]'s empire. The [[ogre]]s of Mokush are honest
and hard-working—they believe wholeheartedly in the
[[Path of Inspiration]]. 

Lady [[Galshani]] supposedly rules Mokush, but the [[oni]] [[Yrnuxi]] often masquerades as Galshani and rules in her stead. Yrnuxi and a sizable percentage of the town are members of the [[Horned Shadow]].

!! Notable Features

!!! Wall and Barbicans

Mokush's wall is an edifice
of earth and stone built to withstand an attack from
[[Syrkarn]] that has never come. It is about 30 feet thick, and
its inside halls are big enough for [[ogre]]s to fit through.
While the officers of Mokush are almost all [[human]]s or [[shifter]]s, the ogres are expected to form a militia if the
town is attacked.

The gate towers are massive structures obviously
built by giant hands. Each houses a small indoor courtyard overlooked by murder holes and two portcullises. All the barbicans have ballistae.

!!! Monolith

In the center of Mokush stands a [[monolith|hanbalani alta]] that is smaller than those commonly seen in the
bastions of [[Riedra]]. The village's two large wells flank
the structure.

This monolith is only about 60 feet wide and 200 feet
tall. A mute representative of the [[Path of Inspiration]], the
"small" monolith is still a point of pride for the [[ogre]]s.
They and their [[priest|Ignra]] gather at the monolith for the Feast
of Founding, sharing the customary meal in the large
community hall south of the hanbalani.

Unknown to most of Mokush, the hall has a secret
area underneath, dug secretly from the mines. In this
secret chamber, the members of the [[Horned Shadow]] meet
and plan to free Mokush. Stored here are a good amount
of [[Khyber dragonshard|dragonshard]]s (some tainted), iron bars, and
finished weapons. 

!!! Town

In the town, [[ogre]]s live communally in small
buildings, each rotating living spaces regularly to better
know one another. Ogres are usually segregated by gender,
though some groups are allowed to mingle on a schedule
dictated by the [[Inspired]] long ago. New ogres are essential
to keeping Mokush alive. The races of Mokush do not mix,
though—the [[Path of Inspiration]] forbids such behavior.

!!! Manor

In the deepest section of Mokush, walled
away from the ogres and protected in the west by a tall
mesa, live the elderly [[Chosen]] lady [[Galshani]] and her small
staff. Many of the buildings in this compound are empty,
showing signs of neglect. However, Galshani maintains
a stable of [[quorbound|quorbound beast]] creatures that she dearly loves,
including horses, hounds, and even a few birds. Those
few who care for the animals are the luckiest of citizens
in Mokush, treated better by Galshani (and [[Yrnuxi]] in
her stead) than any others.

[[Yrnuxi]] and the inner circle of the [[Horned Shadow]]
have a secret shrine under the manor, which can be
entered from the mines as well. This foul place is dedicated to [[fiend]]s. It's also where Yrnuxi keeps some [[magic item]]s she has managed to acquire in clandestine trades
with [[dromite]]s from the nearby city-hive [[Talcheka]].

!!! Watch Towers

On rotating shifts, [[ogre]]s stand watch
at these squat towers set atop pinnacles of red rock. The
towers cannot be accessed other than by climbing the
rough stone or flying. Within the towers are stores of
stones for throwing and horns for warning the town.
Most ogres see their time on watch as a restful reward,
and they don't shirk their duty.

!!! Mine and Quarry

Behind a stone wall thinner
than the main fortifications and a small watch tower is
Mokush's mine. Iron is the principal product of the excavation, but a few years ago the [[ogre]]s stumbled onto small deposits of Khyber [[dragonshard]]s. Mokush is supposed to export all such shards, but [[Yrnuxi]] has been skimming the
production and replacing a few of the shards with tainted
ones she has received from the [[dromite]]s.

The upper level of the mine is also a quarry. Here the ogres dig and cut blocks of rock to ship to other parts of [[Riedra]]. Red blocks from Mokush can be found in buildings as far away as [[Dar Jin]]. 

!!! Ruins

The ruins of an ancient village stand near
the mine. Mokush's [[ogre]]s have tumbled most of it to the
foundations and plundered the structures for useful
building materials. The place is abandoned.

!! Notable People

* Lady [[Galshani]]
* [[Yrnuxi]]
* [[Roorprek]]
* [[Ignra]]
* [[Korac]]

!! Encounters

The [[ogre]]s of Mokush are largely dispersed to the fields or
the mine during the day, with a few in the town practicing
some craft or another. Most rest inside the town walls at
night. They don't trust visitors unless they are members
of the [[Riedra]]n military or agents of the blessed [[Inspired]].
Hostile intruders have a hard fight ahead of them. Unlike
typical [[citizens|Riedrans]] of Riedran villages or cities, the ogres
take up arms to defend themselves.

For invaders, almost every encounter in Mokush is
with a gang or band of [[ogre]]s, or one or two [[oni]].
The ogres fear the taint of the oni (according
to the [[Path of Inspiration]]), and they prefer not to fight
alongside them. Officers lead the militia. Mokush's citizens fight bravely and to the death.
If invaders seem likely to win, however, those who follow
the [[Horned Shadow]] (about 10% of the ogre population)
switch sides immediately.

The quarry and upper mines are usually safe, protected by soldiers and ogres. Underground creatures do live in the deep earth here, though, and if the PCs enter the deep caverns to investigate or look for more [[dragonshard]]s, they may encounter hostile [[dromite]]s or creatures such as [[ankheg]]s, [[folugub]]s, or [[xorn]]s.

!!! Development

[[Riedran|Riedrans]] PCs are likely to come to Mokush to track tainted
[[Khyber shard|dragonshard]]s. In the mines, they find no evidence of such
shards, so investigating the village becomes necessary. In
doing so, they might eventually uncover the [[Horned Shadow]]
and root out the evil and its connection to the [[dromite]]s.
War with [[Yrnuxi]] could follow. In so doing, however, they
also have to deal with [[Galshani]]'s utter incompetence and
their feelings about the obvious failings of this [[Chosen]].

Infiltrating Mokush isn't difficult if such a plan is
worked out with [[Yrnuxi]] through [[Syrk|Syrkarn]] intermediaries.
The [[ogre]]s accept that strange folk sometimes arrive with
caravans or at other times when the mysterious and glorious [[Inspired]] order them to appear. Yrnuxi plays the part
of the downtrodden serf if possible, hoping to ally with
those powerful enough to improve her position. If foreign
adventurers come to Mokush, Yrnuxi is a willing ally—and
she has the means to disguise her evil if she must. 

!! Treasure

Within Mokush, Khyber [[dragonshard]]s are the most valuable treasure. [[Yrnuxi]]'s stores amount to a small fortune
in shards, and the mine still has small deposits as well.
Getting the shards out of the mine is the hard part.

Despite the backcountry setting, [[Galshani]] lives in
the comfort any petty noble might enjoy. She has plenty
of pretty baubles and even a few [[psionic|psionics]] items. Yrnuxi
has enjoyed the comforts of masquerading as the [[Chosen]]
lady—as mentioned, she also has a small store of [[magic item]]s. Some of these items are cursed by [[fiend]]ish magic.
You choose a portion of dirt or stone that you can see within 30 feet and that fits within a 5-foot cube. You manipulate it in one of the following ways:

* If you target an area of loose earth, you can instantaneously excavate it, move it along the ground, and deposit it up to 5 feet away. This movement doesn't involve enough force to cause damage.
* You cause shapes, colors, or both to appear on the dirt or stone, spelling out words, creating images, or shaping patterns. The changes last for 1 hour.
* If the dirt or stone you target is on the ground, you cause it to become difficult terrain. Alternatively, you can cause the ground to become normal terrain if it is already difficult terrain. This change lasts for 1 hour.

If you cast this spell multiple times, you can have no more than two of its non-instantaneous effects active at a time, and you can dismiss such an effect at will. A [[full success]] or bonus effect on this spell might grant additional area of effect, duration, or range.
The ascetic warriors known as monks make careful study of a magical energy within themselves that many monastic traditions call //ki//. By honing their minds and bodies, they harness this power to create magical effects and exceed their bodies' physical capabilities, channeling uncanny speed and strength into their unarmed strikes.

!! Monastic Orders

* The [[Broken Blade]]
* The [[Silver Forge]]
* The [[Flayed Hand]]
* [[Haztaratain]]
* The [[Fists of Dal Quor]]
Monstrosities are monsters in the strictest sense—frightening beastlike creatures that are not ordinary, not truly natural, and almost never benign. Typically they exhibit properties of one or more natural [[beast]]s. Some are the results of magical energies of [[Lamannia]] or [[Kythri]] (such as [[owlbear]]s) either incidental or through intentional magebreeding, and others are the product of terrible curses (including [[minotaur]]s and [[yuan-ti]]). 

<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
This thick, black paint is stored in a small jar, containing enough paint to apply moodmarks to one creature. The paint is dabbed on the face in spots or markings that often resemble the eyes of insects or spiders. Applying the paint in this way takes 1 minute.

For the next 8 or so hours, the marks change to reflect your mental state. Other creatures can discern whether you are happy, sad, angry, disgusted, surprised, or afraid, as well as the main source of that emotion.
The sky of [[Eberron]] is full of wonders. The Ring of [[Siberys]] stretches over the equator, its glittering stones standing out even in the light of day. Sages trace images of celestial dragon patterns of the stars. And twelve moons circle the planet, filling the night sky with color and light.

This multitude of moons affects Eberron in many ways. While [[Zarantyr]] has the greatest influence over the tides of Eberron, each moon has its own impact on wind and water, and lunar conjunctions can have dramatic effects that can spawn adventures. A confluence of moons can pull back the waters, revealing ancient ruins along the shores of [[Xen'drik]]. Sailors speak of maelstroms that arise when [[Zarantyr]] eclipses [[Aryth]]—vast whirlpools that can draw a ship into the elemental oceans of [[Lamannia]] or the endless frozen sea of [[Risia]]. The sage Galeoin, who lived among the [[Seren]]s, claimed that the moons influenced the tides of magic as well as water and that his barbaric hosts had learned to weave lunar power into their arcane rituals; however, the magi of the [[Arcane Congress]] have yet to find any solid evidence supporting Galeoin's claims. A DM could certainly decide that a particular ritual, [[magic item]], or [[eldritch machine]] can be completed only during a particular conjunction of moons, or that a full moon can enhance the effects of a particular [[manifest zone]].

Each moon has an "ascendant phase"—a 28-day period during which it is unusually bright. To date, scholars have found no natural explanation for this phenomenon, and it remains one of the mysteries of the skies. This cycle of radiance is the basis for the [[lunar calendar|Khorvaire calendar]], and each month is named for the moon that is in its ascendant phase. Some stargazers claim that the ascendant moon has a profound impact on the skills and spirit of children born beneath it; a child born in the month of Zarantyr will be wild and mercurial, while a child of Therendor will be gentle and kind. [[Druid|druid]]s and rangers also believe that the ascendant moon can be a source of strength—that a child of [[Dravago]] has a special gift for calming animals when this moon is full in the sky.

When the [[dragonmark]]s appeared, sages were quick to note the similarities between the powers of the marks and the mythic qualities of the moons. According to popular legend, each dragonmark first manifested during the month of its associated moon. One common belief is that a child born in the month of his mark has a greater chance of developing a powerful dragonmark, and superstitious dragonmarked couples often time pregnancies to end in the appropriate month. As there were once thirteen dragonmarks, some sages believe that there is a [[thirteenth moon|Crya]] that has either vanished or simply cannot be seen with the naked eye, and the existence of such a moon has been hinted at by dragons and carvings found in ruined [[Xen'drik]]. If this moon was once visible in the sky, it vanished long before the rise of [[human]] civilization, and the common races do not know its name or place in the heavens.

!! The Twelve Moons

<<list-links-article "[tag{!!title}!title[Crya]sort[title]]">>
The Moon Court is a social entourage of the [[fey]] of the [[Moonlit Vale]] of [[Thelanis]]. It is split into factions corresponding with the four seasons, and whichever faction is currently dominant, its associated season unfurls onto the Moonlit Vale. Court intrigues and revels abound at the [[Palace of the Moon]], the seat of the Moon Court.
While most of the [[Carrion Tribes]] worship the demonic [[overlord]]s and their lesser servants, the Moon Reavers revere the [[night hag]]s—[[fiend]]s who spread
fear by the dark of the moon. This clan specializes in terror tactics
and guerrilla warfare. Whenever possible, the Reavers prefer
to stalk isolated prey using methods designed to frighten
them prior to making a kill. They draw this fear out for
as long as possible, reveling in the terror of their victims.
Clan members make masks and other decorations using
the bones and skin of their victims. They file their teeth
and let their nails grow long in emulation of the fiends
they admire.

''Karka Darkbane'' leads the Moon Reavers. She is a cruel woman twisted
in mind and body by a night hag while she was still within
her mother’s womb. In battle, Karka wields a [[mace of terror]],
a gift from her sinister patron, the [[night hag]] who marked
her as its own before she came into the world.
In darkness, the unsheathed blade of this sword sheds moonlight, creating bright light in a 15-foot radius and dim light for an additional 15 feet.
This is the largest [[layer]] of [[Thelanis]] and the heart of the [[plane]].
The Moonlit Vale is essentially a country, with the [[feyspire]]s
spread across it as cities; it's possible to spend days traveling
from spire to spire. While it's largely arboreal, there are
beautiful valleys, glittering lakes, and a vast mountain. It's
always night here, and the moon [[Rhaan]] radiates bright light,
always seeming to hang just above the viewer. While the moon
doesn't move or change, the seasons do; in winter, the court
is covered in snow, while in spring, it's in brilliant flower. This
has nothing to do with the passage of time, and everything to
do with the intrigues of the [[Palace of the Moon]]; the current
season indicates which seasonal court is currently dominant.
This is a crucial aspect of the Moonlit Vale: //things change//.
The [[baronies|barony]] are fixed in their stories, but the intrigues of the
four seasons are the story [[Thelanis]] tells itself.

The Moonlit Vale embodies the general idea of the [[fey]]—otherworldy beauty and magic. There are many natural displays of [[illusion]]—streams of glowing mist, ethereal music, distant song. Motes of light drift slowly through the trees. The
beasts of the region are sleek and graceful, and have unusual
colors and patterns. The land is fertile, game is easy to hunt, and adventurers have advantage on foraging attempts... though hunting without permission may incur the
wrath of the local fey.
A peaceful [[Khoravar|half-elf]] village built on the Old Road,
Moonshadow is a young community, built by immigrants
who hope that [[Valenar]] can become a home for their people. Though small, Moonshadow has drawn half-elves from across [[Khorvaire]], and a surprising number of
gifted scholars and artisans thrive in the village. 
The Moonspeakers are a [[druid]]ic sect of the [[Eldeen Reaches]] tied specifically to [[shifter]] traditions. Moonspeaker druids respect the totems
associated with the beast within—Grandmother Wolf, Cousin
Bear—but they don't see these spirits as gods. These beasts
guide shifters from within—they don't shape the world itself.

These totem spirits may share a connection with the totems of [[Lamannia]].
The [[Mror|Mror Holds]] spirits served at Moraggan's might be the strongest drink in [[Sharn]]. However,
Moraggan's is a far cry from the rough and tumble
saloon one might expect from a place with such a
reputation. This posh, luxurious establishment has
considerable security and a number of private, soundproofed rooms. Moraggan's caters to [[Kundarak]] agents
and other Mror merchants—traders and crafters who
believe that strong drink and business negotiation
go hand in hand. 
Lady Moranna continues to serve as regent of [[Karrnath]] since the ascendancy of [[Kaius ir'Wynarn III]], a post that has been transformed from a stewardship to an
advisory position. She never ventures far from the court or
from Kaius’s side, except when he sends her out in his name to
handle crises near and far. Moranna, a large, strong woman,
has a commanding manner and a no-nonsense approach
that leaves most of her underlings shaking in her wake.

During the [[Last War]], Lady Moranna, serving as steward of [[Karrnath]], gave the order to reinstate the [[Sovereign Host]] as the state religion of the nation in place of the [[Blood of Vol]], and to disband the Order of the [[Emerald Claw]], the Onyx Skull, and all other chivalric orders of Seekers.
//"The executioners tried everything. He was bathed in acid, burned at the stake, drowned, even dismembered. And after each attempt, he rose again, his vigor unchecked and flesh rebound. No lesser mage could set his will over the flesh of Mordain."//
<div align="right">—Salyon Syrralin d'Sivis</div>

Mordain the Fleshweaver, one of the most powerful [[wizard]]s in history and the subject of dark fireside tales, lives in exile in western [[Droaam]]. Though the [[Twelve]]
have attempted to imprison Mordain for his disturbing attempts
to master the magic of the [[daelkyr]], few have the
power to directly oppose him.

!! Lore of the Fleshweaver

Near [[Droaam]]’s border with the
[[Shadow Marches]], [[Mordain's Hall]] reaches into the
sky like a massive malformed arm. The area that
surrounds it is filled with [[foulspawn]] and other horrors of Mordain’s own creation. His servants search constantly for ancient [[daelkyr]] sites within Droaam
and the Shadow Marches, and some say that the mad
mage hopes to reopen the gates to [[Xoriat]].

More than two centuries ago, Mordain d’[[Phiarlan]] was one of the [[Twelve]], but the
ambitious mage began delving into forbidden lore,
choosing to experiment with the magic of the daelkyr. Though he was captured, tried, and found guilty of capital offenses, the mages could not find a way to execute the aberrant wizard. He was then petrified and sent to [[Dreadhold]], but escaped before reaching the island prison.
The first confirmed sighting of the twisted hall of [[Mordain the Fleshweaver]] occured in 873 YK, during the [[Silver Crusade]]. A troop of [[Aundair]]ian templars pursued a few [[werewolves|lycanthrope]] far to the south of the [[Towering Wood]]. Weeks later, another patrol encountered a lone survivor, half-mad and delirious. He spoke of a tower "with blackened, leathery walls, twisted as the limb of a dragon reaching up to grasp the sun." The soldier couldn't account for his companions, and his own condition was testimony to the horrors he had seen. His body had been magically conjoined to the body of a werewolf. His mental state quickly deteriorated and he soon died of self-inflicted wounds.

The location of Mordain's Hall has long since been confirmed, though the tower is shielded from [[scrying]] and other [[divination]]. Virtuous champions have set out to destroy the foul wizard and his works. Emissaries from the [[Five Nations]] sought his aid the [[Last War]], and mages have dreamed of stealing his secrets. However, few gaze on the face of [[Mordain|Mordain the Fleshweaver]] and return unchanged... if they return at all.
In the age when [[fiend]]s and [[dragon]]s waged war across [[Eberron]], [[rakshasa]]s served the fiendish [[overlord]]s as strategists and generals. A rakshasa named Mordakhesh rose up through the ranks to become one of the greatest commanders of his age, and a dragon-slaying specialist. For this, he earned the nickname Shadowsword, along with a legendary reputation for leaving death in his wake.

Mordakhesh serves as the prakhutu or "speaker" of his imprisoned master, [[Rak Tulkhesh]], and he seeks to free his lord by bathing the world in blood. Like a spider with multiple webs, he has agents and pawns (which he calls his "claws") established in armies across [[Khorvaire]]. The most significant of those is the barbarian horde he amasses in the [[Demon Wastes]]—warriors who threaten to sweep into [[Aundair]] on a tide of blood.

Many of the horrors of the [[Last War]] were instigated—or at least encouraged—by Mordakhesh's operatives, and his claws are known to have perpetrated some of the most brutal massacres of that conflict. No one knows how far the Shadowsword's reach extends, or which commanders in the armies of [[Khorvaire]] serve him.
//“A beacon of knowledge shining from the tallest towers of the city, illuminating the forgotten secrets of the past.” //

That's how Lord Lareth ir'Morgrave envisioned his university when it opened its doors in [[Sharn]] over 250 years ago. From its earliest days, however, the university has been plagued by suspicions and accusations that it's more of a front for unscrupulous treasure-hunters than a serious institution of academic study. Although the vast majority of the university's faculty and students are serious scholars, enough items disappear from the university's holdings, only to reappear on the black market, to keep the accusations alive.

Morgrave University owns most of the buildings in [[Upper Menthis]], even ones not used for University purposes. The University itself fills Dalannan
Tower, which is crowned by the enormous dome of Lareth Hall. Five slender spires ring Dalannan Tower, representing and named after the [[Five Nations]], and they house most of Morgrave's students. The university library is located just below
Lareth Hall, and the Commons—atop [[Breland]] Spire—is a popular gathering spot for students and faculty alike.

Morgrave also has a campus in the capital city of [[Wroat]].

!! Campus Destinations

* The [[Bridge]]
* The [[Commons]]
* [[Dezina Museum of Antiquities]]
* The [[Great Hall of Aureon]]
* [[Lareth Hall]]
* [[Morgrave University Library]]
* [[Shava House]]
Centrally located on the [[University|Morgrave University]] campus near the top of Dalannan Tower (just below the dome of [[Lareth Hall]]), the
Morgrave University Library has the most extensive
collection of books in all of [[Breland]]. It pales in
comparison to the great [[Library of Korranberg]], but
a significant number of [[Zilargo]] expatriates live in
[[Den'iyas]] and work to make the Morgrave Library the
best resource it can be.

History is clearly a specialty of the University,
and those using the Morgrave Library for research
into the history of [[Sharn]] or [[Xen'drik]] gain two advantages on their attempts. The Library offers one advantage on attempts to research other scholarly topics.

Those without formal ties to Morgrave University must pay a fee of 1c per week to conduct research at the Library. Students, alumni, and those working
for Morgrave can use the Library for free.
The Mosswood is a small forest in the [[Eldeen Reaches]], near the towns of [[Mossmantle]] and [[Alvirad]].
Mount Kel is a mountain on the island of Ohr Kel, the largest island in the [[Ohr Kaluun]] archipelago in [[Riedra]].
The {{!!title}} is a [[Sharn]] street gang of 
[[Cyran|Cyre]] veterans who present themselves
as a vigilante militia that protects Cyran
refugees, but some say they're just pursuing selfish interests.
The nation of [[Cyre]] was once the heart of the kingdom of
[[Galifar]]. The [[Last War]] took a heavy toll on Cyre and its
citizens, as the nation became a primary battleground
where the [[Five Nations]] crossed swords. But no one was
prepared for the disaster that struck in 994 YK.

Accounts of the Mourning vary. Some say that a
blinding light engulfed the battlefield near the Saerun
Road. Others say that [[dead-gray mists]] rose in the capital
city of [[Metrol]] and spread from there. Still others swear that the disaster began in the [[Cannith]] stronghold of [[Making]]. Within the space of
one day, the nation of Cyre had been engulfed in a wall of mist, and anything caught within the mists was horrifically transformed. Over ten million Cyrans were killed on
the day of Mourning. Those who survived were soldiers
fighting in enemy territory, those living on the borders
who were able to flee from the advancing mists, and
those few who were able to escape the interior through
magical means. On 20 Olarune 994 YK, the nation of
[[Cyre]] ceased to exist. 

The Mourning threw [[Khorvaire]] into a state of shock.
Who could unleash such power? Was this a weapon,
and if so, when would those responsible issues their demands? Were the borders of the lingering walls of mist stable, or could they expand at any moment? What was
to be done with the Cyran refugees surging into every
adjacent nation? Fear of the Mourning ended the war.
But all those questions remain unanswered.

[[Breland]] opened its borders to refugees, and Prince [[Oargev|Oargev ir'Wynarn]] serves as de facto ruler in the area now called [[New Cyre]]. Despite its grand name, New Cyre is little more than a vast refugee camp. Other refugees scattered across [[Khorvaire]]; some are treated with pity, others with suspicion or anger. And fear of the Mourning
hangs like a shadow across Khorvaire. Could it happen
again? Is this how the world ends? 

Over the last four
years, people have ventured into the [[mist|dead-gray mists]] for many reasons. Some sought to plunder the abandoned treasures
of the richest nation in [[Galifar]]. Others hoped to find lost
loved ones, or some explanation for the disaster. Few of
these explorers have returned, and those survivors all
tell tales of a [[land|Mournland]] twisted in unpredictable and inexplicable ways. 
The Mourning Dawn is a loose network of [[Cyran|Cyre]] vigilantes and terrorists that operates across [[Khorvaire]], dedicated to making everyone on a long roll of [[Cyre]]’s enemies pay. The Dawn places House [[Cannith]] at or near the top of its list, since it holds them personally responsible for the [[Mourning]], despite insubstantial evidence.
Once, [[Cyre]] shone more brightly than any of its sibling
nations in the kingdom of [[Galifar]]. It was the center of
the kingdom's wealth, a monument to its artistic and arcane achievements, and the site of great centers of learning where preeminent masters of magic, architecture,
and artifice taught at the forefront of their craft. It was
also the home of House [[Cannith]] and its massive foundries: some of them built on mountains or in mountains,
some gracefully spanning canyons, and others erected
in vast labyrinths deep underground.

Today, this region is a festering wound across [[Khorvaire]]. A wall of [[mist|dead-gray mists]] surrounds a land twisted into
strange and terrible shapes. Cyre was once called the
Jewel of Galifar. Now it is the Mournland. 

!! Mournland Environment

The arcane energies that caused the Day of [[Mourning]]
and that linger in the remains of Cyre are mysterious
and unpredictable, so they can be the cause of any
bizarre magical effect you want to bring to bear in
your game.

Maps of Cyre from before the Day of Mourning are of
limited use nowadays. The land beyond the [[gray mist|dead-gray mists]]
has been twisted and warped, and distances seem to
expand and shrink even as one treks across the wastes.
As a result, any attempt made to navigate the Mournland
is made with disadvantage. Explorers must also bring their own provisions into the
Mournland, unless they want to risk the danger of ingesting tainted food and water. 

!!! Terrain Features

The Day of [[Mourning]] redefined the geography of Cyre.
The cataclysm raised land, swallowed lakes, and moved
whole cities. In some areas, the earth has been torn and
gouged as if by some colossal beast. In others, it has become iridescent glass or semiliquid sludge. Trees in one place turned to crystalline onyx; the flowers in another
place begin eerily buzzing when touched by a breeze. Nothing in the Mournland is as it was; the entire land is a scar left by the catastrophe of the Mourning.

//''Mist Wall.''// The borders of the Mournland are defined
by a wall of thick, [[gray mist|dead-gray mists]] that rises thousands of feet
into the air and forms a canopy that hides the ruined
realm even from above.

//''Glowing Chasm.''// The northern part of the Mournland
is dominated by a great crack in the ground that emits a
cold purple light. This supernatural glow emanates from
deep within the [[Glowing Chasm]], so far beneath the surface that its source hasn't been identified. The mutated
monsters that roam the Mournland seem drawn to this
location, and those that spend any significant time near
the Glowing Chasm mutate further, becoming more
twisted and misshapen than before. 

//''Crimson Water.''// Before the Mourning, a spring in the
eastern part of [[Cyre]] fed the Rushing River as it traced
a short but fertile path south to [[Kraken Bay]]. The bed
of the Rushing River is now as dry and barren as the
rest of the Mournland, and the location of the spring is marked by the [[Crimson Water]], a stagnant lake of blood-colored liquid. At the lake bottom is the ruined town of Eastwood Springs, which once served as a resort for the leisure classes of Cyre. As yet, no one has been brave or foolish enough to search for lost treasures
in the depths of the Crimson Water. 

''//Unusual Locations.//'' At places smaller in scale than
the major features described above, explorers in the
Mournland might encounter any kind of terrain feature
with bizarre magical properties. The table below offers some ideas. 

| !<<dr d6>> |!Unusual Location |
| 1 |A pool of glowing water sits in the middle of a ruined and abandoned village. Anyone who looks into the water sees brief reflections of the long-dead villagers going about their lives in harmony and joy. |
| 2 |In the middle of the wreckage of a carnival stands a perfectly preserved carousel. If the carousel is ridden, the characters doing so see visions of [[Cyre]] as it was before the [[Last War]]. |
| 3 |All the trees and plants in a forest have been turned to objects of glossy white stone with blood-red flecks. |
| 4 |The battlefield before the characters contains no bodies, only the clothing and weapons of thousands of missing soldiers. |
| 5 |The broken bodies of soldiers lie scattered across a battlefield, refusing to decompose. |
| 6 |The characters find a fallen [[warforged colossus]]. |

!!! Creatures of the Mournland

Many creatures were slain outright by the [[Mourning]].
Others were mutated as the land was transformed.
Sometimes the result was an entirely new life form; any
previously unseen monster could appear as a spawn of
the Mourning. Other creatures retained a semblance of
their original physiology while taking on some sort of alteration. The table below has options for
altering existing monsters to reflect this phenomenon.

| !<<dr d6>> |!Monstrous Mutation |
| 1 |The creature has grown to an unusual size. |
| 2 |The creature has developed magical camouflage. |
| 3 |The creature's body has been infused with one kind of energy: acid, cold, fire, or lightning (your choice, or determine randomly: <<dr d4>>). |
| 4 |The creature has a resistance to magical spells. |
| 5 |The creature has a supernatural ability to heal its wounds. Its regeneration ability may not function if it is subjected to acid, fire, or some other type of damage. |
| 6 |The creature has two heads. |

Most [[warforged]] were unaffected by the Mourning, and
the race as a whole seems immune to many of the lingering effects that plague the Mournland. As such, the
warforged who follow the [[Lord of Blades]] constitute the
closest thing to a humanoid society that can be found in
the Mournland. Similarly, [[golem]]s and other [[construct]]s
were largely unaffected by the Mourning. 

The [[Mourning]] had no effect on existing [[undead]], and a
large number of new undead came into being when the
cataclysm occurred. Various spirits (such as ghosts and
specters) linger near the places where they died, and the
corpses that litter an abandoned battlefield might rise
up to continue fighting whenever a living creature comes
near. Some of these entities are similar to undead that
might be encountered outside the Mournland, but others
have alterations that are tied to the unusual manner of
their deaths. You can use the mutations table above to generate some details. 

Many Mournland creatures have mutations that are
purely cosmetic and don't change their stat blocks. For
example, one might have eyes that look like gemstones
or might display glowing patterns on its skin or fur. 

!!! Magical Effects

The catastrophe of the [[Mourning]] altered more than the
landscape and living creatures. The devastation caused
localized alterations in the way magic functions. In
some places, magic barely functions, or certain magical
functions are warped. In other places, spells persist past
the instant of their casting and start behaving as if they
were independent, living creatures.

A common misunderstanding about the Mournland is
that healing spells refuse to work. The fact is that healing spells are impeded within the [[dead-gray mists]], and occasionally in other areas, making it harder for someone to cast them effectively. Because so few expeditions
make it far past the mist, the inability to heal is widely
assumed to be a property of the Mournland as a whole.

The table below provides suggestions
for weird magic that might pervade a small or large area
of the Mournland. Effects might shift from day to day or
even hour to hour. 

| !<<dr d8>> |!Effect |
| 1 |Healing spells are impeded here. |
| 2 |A creature who casts a spell experiences psychic feedback and a wave of fatigue. |
| 3 |Any humanoid that dies in the area reanimates as a [[zombie]] 10 seconds later. |
| 4 |The area is affected by a [[silence]] spell. |
| 5 |Each creature that enters the area either increases or decreases dramatically in size, with an equal chance for each effect. The effect lasts until the creature leaves the area. |
| 6 |The pull of gravity is lessened. Creatures can jump twice the normal distance in any direction, and everything effectively weighs half its actual weight. |
| 7 |All creatures are telepathically linked to every other creature in the area, enabling them to instantaneously share words, images, sounds, and other sensory messages. |
| 8 |A creature that casts a spell experiences a [[random magical effect]]. |

!! Sites and Ruins

Of all the bizarre and horrific spectacles of the Mournland, perhaps the greatest tragedy is represented by
the ruins of the once-glittering cities of [[Cyre]]. Some
have been reduced to rubble, while others are eerily
preserved, devoid of life but otherwise unharmed. In
some of them, treasures left behind by the former inhabitants await discovery, and many people across [[Khorvaire]] are eager to get their hands on such spoils for a
wide variety of reasons. 

<<list-links-article "[tag{!!title}category[location]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Mournland Villains

Few people have reason to spend time anywhere near
the Mournland. Among the exceptions are those who
seek to plunder the riches of lost [[Cyre]], such as [[Ikar's Salvage]]. These treasure hunters are
also the kind of people who make interesting villains,
teaming up with adventurers one day and betraying
them the next.

In addition to these salvagers, the [[Lord of Blades]] is a major force in the Mournland. The table below suggests other possible evil schemes and influences that might arise in connection with the Mournland. 

| !<<dr d6>> |!Villain |
| 1 |The [[Lord of Blades]] maintains a detention center where experiments are performed on adventurers and scavengers that his forces capture in the Mournland. |
| 2 |The leader of a cult devoted to [[Belashyrra]], the Lord of Eyes, uses [[daelkyr]]-made tentacles to tear out the eyes of victims and attaches them to members of the cult. |
| 3 |A powerful member of House [[Cannith]] hopes to find something in the Mournland that will guarantee the ascendancy of her branch of the house. |
| 4 |A [[Karrnath]]i [[bone knight]] wants to raise up an [[undead]] army from the corpses in the Mournland. |
| 5 |A [[rakshasa]] works to free a fiendish [[overlord]] trapped in a whirlwind of stone and sand somewhere in the Mournland. |
| 6 |A servant of the [[Lords of Dust]] maintains an extensive collection of severed heads and continues to draw on the knowledge in their brains. |

!! Adventures and Encounters

In contrast to the salvagers and treasure hunters who undertake most of the expeditions to the Mournland, some individuals enter the churning mist with good intentions in mind. Most of these adventurers are displaced Cyrans or are hired by such people, ranging from common folk hoping to retrieve family heirlooms to servants of Prince [[Oargev|Oargev ir'Wynarn]], who hopes to recover the lost regalia of the Cyran crown.

Two of the [[dragonmarked house]]s, [[Orien]] and [[Cannith]],
also have vested interests in investigating the Mournland's ruins and often hire adventurers to pursue those interests. House Orien wants to restore the [[lightning rail]] line that crosses the Mournland, which would reconnect the western and eastern halves of [[Khorvaire]]. House Cannith wants to recover trade secrets, experimental artifacts, and magic items from the [[creation forge]]s, foundries, and secret laboratories it lost on the
Day of [[Mourning]].

The table below includes a range of potential opportunities that could lead a group
of adventurers into the Mournland. 

| !<<dr d6>> |!Adventure Hook |
| 1 |A [[Gatekeeper|Gatekeepers]] [[druid]] wants a rock sample from the [[Glass Plateau]]. |
| 2 |A [[magewright]] from House [[Cannith]] wants the party to escort him to a [[warforged colossus]]. The magewright wants to retrieve the docent network from the colossus before an unscrupulous House [[Phiarlan]] operative does so. |
| 3 |On her deathbed, the visionary artist who designed the [[lightning rail]] station at [[Metrol]] reveals that she hid a treasure map within a lamp in her old office. |
| 4 |A wealthy eccentric asks the party to go into the Mournland and retrieve his most prized possession (a letter from a lover, a mechanical caterpillar, or anything else you devise) from his mansion. |
| 5 |A young Cyran [[paladin]] is morose because she was away from Cyre on a mission when the Day of Mourning occurred and never got to say goodbye to her family. She longs to retrieve her father's sword. |
| 6 |An elderly knight is strapping on his armor one last time so he can ride into the Mournland and die on the battlefield where his companions perished and "where I should have been ." |

!!! Encounters and Trinkets

The Mournland is a dangerous place full of bizarre,
inexplicable, and often localized magical effects—literally anything can happen in this place. The Mournland
Encounters table and the Mournland Trinkets table offer
just a glimpse of the weirdness that adventurers might
come across in their travels into the ruins of Cyre. 

| !<<dr d6>> |!Mournland Encounter |
| 1 |The party meets flickering images of their future selves who are trying desperately to communicate, but their message is garbled. |
| 2 |The party encounters a [[revenant]] who was murdered by House [[Cannith]] assassins after she learned too much about the house's secret research. The characters can appease her by promising to help her get revenge. |
| 3 |A tiny kitten mews from inside a hollow log. Within a few hours after being freed, it grows into an adult [[displacer beast]]. |
| 4 |The apparition of a parent searches for their lost child. As soon as the two are reunited, parent and spirit child both vanish. |
| 5 |The [[mist|dead-gray mists]] congeals into the form of a long-lost love of one of the adventurers. The mist apparition wants the character to stay here forever. |
| 6 |The characters come across the skull of a buried [[warforged colossus]]. |

| !<<dr d10>> |!Mournland Trinket |
| 1 |The favorite childhood toy of one of the adventurers, floating in midair |
| 2 |A tin whistle that makes beautiful colors and patterns magically appear when it's played |
| 3 |A toy [[lightning rail]] car |
| 4 |A glass eye |
| 5 |A silver lapel pin of a finely detailed [[gorgon]]'s head with ruby eyes |
| 6 |A monocle that can be used as a telescope |
| 7 |A six-inch-tall mechanical marmoset in need of minor repairs |
| 8 |A small medallion made of silver, depicting a tower with an eye at the top of it and other smaller eyes embedded in the sides |
| 9 |A cloak pin made of iron in the shape of two hammers joined by a semicircular haft |
| 10 |A wooden [[dinosaur]] toy that has movable legs |
Mournlode is a very rare and recently-discovered variety of iron ore found only beneath the [[Field of Ruins]] in the [[Mournland]]. When mined, this ore has a mottled purple color; when it is refined, it takes on a more vibrant silvery hue, streaked with veins of purple.

The material properties of mournlode are identical to that of ordinary iron, with one curious exception: it is extremely effective against [[Mabar]]an [[undead]].
The [[Mror Holds]] are a feudal society, comprised of holds,
spires, and families. There are twelve active holds, each
governed by a ruling clan, which gives its name to the hold—
so Droranathhold is ruled by Clan [[Droranath]]. Each hold is
then broken up into smaller territories known as spires, each
ruled by a clan; there are ancient ties of kinship and marriage
between clans and the ruling clan. Within a spire, families
maintain tenant relationships with the local clan. Land is
held by a clan or family, and most businesses are family
businesses. Families are long established, and the creation
of a new family is an extremely rare event.

The Mror engage with their history through stories,
and clans and families are the characters in those stories.
Typically, a Mror tale refers to heroes and villains solely by
their family names. So in //Mroranon and the Troll King//, it
doesn't matter exactly when the story took place or which
specific Mroranon it was; it's a story about [[Mroranon]].
In one tale, he is a heroic youth, and in another, she is a
battle-scarred veteran, and yet they're depicted as the same
Mroranon. And in both cases, all Mroranon [[dwarves|dwarf]] should
strive to live up to that example. Where the [[Tairnadal]] [[elves|elf]]
seek to emulate specific ancestors, Mror dwarves view their
family as a greater whole. Your family is a direct extension
of your identity; it's only natural that you'd help a family
member in need, and betraying a family member is like
stabbing yourself in the hand. This drives feuds and alliances;
if you're wronged by a Hronnath [[dwarf]], the blame lies with
Clan Hronnath, not simply the individual. To draw another
comparison to the [[elves|elf]], the [[Aereni]] preserve their ancestors
as [[deathless]] undead. In contrast, the Mror don't feel that need
to preserve individuals; you preserve your //family// by living
up to its character and by adding to its story. The Mror also
aren't as particular about precisely following the traditions
of ancestors, as shown by the clans that are embracing
[[symbiont]]s; what you do is less important than how you do it,
the values you stand for, and the lines you refuse to cross.

This doesn't mean that Mror don't take personal
responsibility for their actions or feel pride in their personal
deeds. The deeds of living dwarves are generally acknowledged
by name, but when they take their place in history, their names
are unlikely to be remembered. Instead, every dwarf hopes that
their grand deeds will be added to the trove of stories told of their family—and that they won't shame their family with the
memories of their misdeeds.

In creating a Mror character or NPC, consider your family.
Are you part of a clan or ruling clan? If so, are you close
enough to power to take the noble background, or are you
a lesser heir? Are you from a tenant family, and if so, what
is your family's business? Even more crucial, what is your
family's //character//? When people tell stories about your family,
what are the virtues they highlight? Are there any particular
things your family is known for, any celebrated deeds you
might emulate, or anything a member of your family should
never do? Some families have specific taboos; a Tronnan must
never break their word, while a Holladon never turns away
a guest. Does your family have any such traditions?

Also consider how your family was affected by the [[Dol Udar|Mror History]]. Did they invest deeply in the depths, only to suffer
grievous losses when the horrors rose? Did they fight on the
front lines, or largely remain above? Do they have a family
treasure recovered from the [[Realm Below]]—a legendary item
or artifact you might someday have the honor to wield? Are
they willing to embrace [[symbiont]]s, or are they disgusted by
the tools of the [[daelkyr]]?

Finally, what is your standing with your family? If it's good,
consider why you left the [[Mror Holds]]. If your standing is bad, what happened? Is it a situation you hope to fix, or have you turned your back on your family? As
a player, talk to your DM about the role your family might play
in a campaign; do you want to have cousins showing up in need
of assistance or to be drawn into new feuds, or would you
rather your family remain in your backstory?

!! The Ruling Clans

The [[Mror Holds]] are divided into twelve holds, each bearing
the name of the ruling clan that exercises authority within
that region. These twelve clans are the foundation of Mror
culture, and every citizen owes allegiance to one of these clans.
But there are many lesser clans, and below those, tenant families. In creating
a Mror character, it's up to you whether your character is tied
directly to a ruling clan or if you're part of a lesser family. While
many Mror take inspiration from their ruling clan, they don't all
share the same virtues; in creating a Mror family of your own,
you can decide what their celebrated virtues are.

<<list-links-article "[tag{!!title}] [title[Kundarak]] +[sort[title]]">>
The [[Mror Holds]] are a loose confederation of [[clan|Mror clan]]s,
each with its own mercantile interests. Each of the
holds has a representative at the Mror consulate,
who negotiates on behalf of their clan. These consuls
are devoted to their work, and compared to the
[[Lhazaar|Lhazaar Embassy (Sharn)]] ambassadors there is little conflict among
the [[dwarves|dwarf]]. The dwarf consuls rarely have any use
for adventurers, and it would be extremely unusual
for a party to be called to the consulate.

The most noteworthy consul is ''Lain'' of Clan
[[Soldorak]], a socialite who often hosts lavish galas at his estate
in [[Highhold]]. Lain is a member of the [[Aurum]] and
reports to [[Antus Soldorak]], the chairman of the
Platinum Concord. In [[Sharn]], [[Kalphan Riak]] is the
highest-ranking member of the cabal, but Lain may
make a good opponent for lower-level adventurers.
The Soldorak family has an ancient grudge against
House [[Kundarak]]; if the party includes a Kundarak
heir, Lain may send misfortune their way.
[[Dwarves|dwarf]] aren't native to [[Khorvaire]], but no one knows exactly
how or when they arrived. Most spinners concur that the
dwarves came from a land of ice and frost, though not all stories agree. While
that's enough for the [[Mror|Mror Holds]], other scholars continue to debate
where they might have originated and how they traveled to
Khorvaire. The most popular theory is that the first dwarves
came from the [[Frostfell]], traveling by way of a [[demiplane]]
passage through [[Khyber]]. Proponents of this idea believe that
there may be an undiscovered dwarven civilization—or ruins
of it—waiting to be found in the Frostfell. A second popular
theory is that the dwarves originated in the [[Tashana Tundra]]
of [[Sarlona]], sailing to Khorvaire and landing in the [[Lhazaar Principalities]] millennia before human settlers. However, the
modern [[Akiak]] dwarves have little cultural overlap with the
[[Mror|Mror Holds]], and there's no evidence that they ever built ships. The
most exotic story is that the dwarves of [[Sarlona]] and [[Khorvaire]]
both came from [[Risia]], and that there may still be a grand
hidden civilization deep in the Risian ice. While origin stories
vary from [[clan|Mror clan]] to clan, the talespinners all agree on the broad
eras of Mror history that followed.

!! Sol Udar: The Realm Below

Wherever the dwarves came from, they sunk their roots into
the soil of [[Khorvaire]]. [[Dhakaan]]i [[dirge singer]]s sing of battles
between [[dwarf]] and [[dar|goblinoid]] that took place in vast halls below the
earth. Dhakaani records—which are more accurate than those
of the dwarves—show that the Dhakaani encountered dwarves late in the golden age of the Dhakaani Empire and drove them
east, eventually reaching a stalemate. The ancient dwarves
lacked the numbers or resources to threaten [[Dhakaan]], but they
established a line below the [[Ironroot Mountains]] and held it
against countless onslaughts. The dar had no need of the
territory, and in time, decided the effort of conquest wasn't
worth the rewards. This was the origin of what the dwarves call
//Sol Udar//, the [[Realm Below]].

!! Mallanok: The Exile

The next major era in Mror history was //Mallanok//, the Exile.
At some point—whether years or centuries later is unclear—a
group of dwarven warriors were exiled from the [[Realm Below]],
and found a new home in the mountains above, along with
their families and followers. The reason for the Exile depends
on who you ask. [[Mroranon]] talespinners say King Mror of
Sol Udar couldn't decide which of his thirteen heirs should
inherit his throne, so he pushed these heroes out onto the
mountain to prove themselves worthy of his kingdom. The
[[Soldorak]] say that King Mror was a weak tyrant, and he exiled
the thirteen heroes because he feared an uprising. Professor
Melian Mit Davandi of [[Korranberg]] has advanced the theory
that the ancient dwarves may have exiled criminals to the
surface world instead of maintaining prisons, and the founders
of the [[Mror Holds]] were a broad assortment of criminals
and undesirables. The truth is buried beneath the weight of
thousands of years and may never be known.

!! Dul Krok: Bloody Stones

The Exile was followed by //Dul Krok//, Bloody Stones. When
[[human]]ity came to [[Khorvaire]], the [[Ironroot Mountains]] were
divided between thirteen powerful [[clans|Mror clan]] of [[dwarves|dwarf]]. These
mountain dwarves were proud and warlike, but they were
mired in feuds—and these ancient conflicts kept them from
substantially advancing their culture or their influence in the
world. Even as [[human]]s spread across the land, the dwarves
continued to devote their energy and resources to their own
ongoing vendettas. While they were unquestionably fierce
warriors and made fine weapons, their deep division prevented
any progress. The Ironroot dwarves weren't the only dwarves
on Khorvaire; some had spread east into what's now the
[[Lhazaar Principalities]]. It was largely these Lhazaar dwarves
who integrated with humanity, spreading west with them,
though there were also a few Mror who left their feuds behind
to help build the foundations of the new kingdoms.

!! Bal Dulor: The Great Sorrow

As the [[Five Nations]] took form, [[human]]ity largely shunned
the [[Ironroot Mountains]] and left the [[dwarves|dwarf]] to their feuding.
Following the rise of the united kingdom of [[Galifar]], Prince
[[Karrn|Karrn ir'Wynarn]] finally made a concerted effort to pacify the mountain
dwarves. This time is known as //Bal Dulor//, the Great Sorrow.
The soldiers of Galifar were disciplined and took advantage of
the existing feuds, isolating the [[clans|Mror clan]] or pitting them against one
another. The central fortresses of the holds were impregnable,
but Galifar held the surrounding lands; the compromise that
followed left the dwarves as lords of their territories, but as
subjects of Galifar, forced to pay tribute and taxes.

!! Korran Hal: Korran's Blessing

While the Great Sorrow was a source of deep shame to the
[[dwarves|dwarf]], it brought a forced end to their violent feuds and
forced them to raise the funds to pay their tribute. Warriors
became miners, and the [[Ironroot Mountains]] proved to be an
astonishingly rich source of mineral wealth. [[Mror|Mror Holds]] talespinners say that the [[Sovereign|Sovereign Host]] [[Onatar]] had his forge in the mountains,
and that [[Kol Korran]] kept his hoard beneath it; other scholars
have speculated that there could be a more unsavory
supernatural force at work, an overlord tied to greed bound
beneath the peaks. Whatever the truth, this led to the period
known as Korran Hal, Korran's Blessing. Even with the taxes
owed to [[Galifar]], the Mror prospered and built a thriving society.
While the ancient feuds were never forgotten, violence was
no longer their first answer. The bearers of the [[Dragonmark of Warding|Mark of Warding]], Clan [[Kundarak]], were drawn into the [[Twelve]] and
became House Kundarak. Working closely with House [[Sivis]],
Kundarak parleyed its wealth and the power of its [[dragonmark]]
to establish the Banking Guild, and the influence of Kundarak
helped to drive a further wave of cultural advancement.

!! Tra Halor: the Revelation

As the dwarves expanded their mines and fortress holds, they'd
occasionally find tunnels and outposts that seemed to be tied
to [[Sol Udar|Realm Below]]—outposts that appeared to have been abandoned
many thousands of years ago. The dwarves continued to dig
deeper toward the [[Realm Below]], and this led to a wave of
breakthroughs in the early tenth century, an event broadly
known as //tra Halor//, the Revelation. Miners and masons
found evidence of a vast, wondrous subterranean empire,
with enormous city-halls below all of the modern holds. Early
explorers found finely crafted treasures, along with evidence of
even deeper mines and fortresses. It was clear that these cities
had been built by [[dwarves|dwarf]], and it speaks to Mror character that
rather than pondering the fate of the builders of this abandoned
realm, the dwarves simply embraced this as a miraculous
stroke of fortune and proof of their collective destiny.

!! Mror Solu: The Realms of Iron

By this time, the [[Last War]] was underway. For the last decade,
[[Karrnath]] had been steadily raising taxes and demanding troop
levies. But the dwarves were conquered long ago by [[Galifar]],
whereas Karrnath was just a piece of that broken kingdom.
Inspired by Sol Udar and recognizing how far their people had
come since the Great Sorrow, the lords of the holds convened
in Mror Aulan, the [[Iron Council]]. The lords of the Iron Council
affirmed their union and declared the sovereignty of Mror Solu—
the Realms of Iron—a name which even the Mror themselves
usually translate into Common as the [[Mror Holds]]. It's worth
noting that in calling themselves the Mror, dwarves aren't
professing fealty to Clan [[Mroranon]] or the ancient king of Sol
Udar; rather, they're simply calling themselves “the Ironfolk.”

!! Dol Udar: The War Below

The time that followed was initially known as //Aul Aur//, the
Age of Gold. While [[Karrnath]] engaged in retaliatory actions
during the [[Last War]], it was struggling with famine and against
its neighbors, and lacked the power to stop the rebellion. The dwarves expanded and explored [[Sol Udar|Realm Below]], reclaiming wondrous relics and facilities. But soon they learned what had become of the ancient [[dwarves|dwarf]] of the Realm Below, and
why the kingdom had never reached up to the exiles. The
ancient dwarves had been wiped out thousands of years ago
by the [[daelkyr]], for Sol Udar abutted on the [[demiplane]] [[prison|Palace of Sinew]]
of [[Dyrrn]] the Corruptor, one of the mightiest of the daelkyr.
The first explorers found curious [[tools|symbiont]] formed from flesh and
bone—and then they discovered the creatures that made them.
[[Dolgrim|dolgrim]] hordes rose from the depths. Entire colonies were lost
and consumed by [[illithid|mind flayer]] corruption. While the [[Five Nations]]
fought the [[Last War]], the Mror fell into //Dol Udar//, the War Below.

Today, the Mror Holds are in a stalemate against the
[[aberration]]s below, and remain balanced between the Age of
Gold and the War Below. Even with their current holdings,
the dwarves continue to draw vast wealth from their mines.
Clans take pride in the treasures reclaimed from the depths,
and Mror [[artificer]]s continue to learn from studying ancient
artifacts. Though the dwarves are few in number, their
economic power and strong fortifications have deterred any
[[Karrnath]]i retribution, and no one challenged their recognition
under the [[Treaty of Thronehold]]. The dwarves are proud and
prosperous—and yet, old feuds linger. The [[Realm Below]]
remains both a glorious lure and a deadly threat. And tensions
are further exacerbated by the other [[treasures|symbiont]] recovered from
the depths—tools made not by dwarves, but by the [[daelkyr]].
''Capital:'' [[Krona Peak]]<br/>
''Hallmarks:'' Banking, dwarves, metalwork, mining (precious and non-precious metals) 

When [[humanity|human]] first came to [[Khorvaire]], they found
the [[dwarven|dwarf]] [[clans|Mror clan]] of the Mror Holds locked in endless
feuds. This division kept the [[clans|Mror clan]] from uniting against
the new arrivals, and the dwarves were forced to swear
fealty to [[Karrnath]] and [[Galifar]]. Over the centuries, they
turned their energies to harnessing the astonishing
natural resources of their mountain home. The dwarves
were then reborn as merchant lords.

In the early days of the [[Last War]], Mror miners made
an astonishing discovery: the ruins of an ancient dwarven empire, vast halls deep within the [[Ironroot Mountains]]. Explorers uncovered mines still brimming with
jewels and precious ores and vaults filled with riches
and powerful artifacts. The Mror restored these ancient
fortresses and worked to reclaim the secrets of their
ancestors. Seeing the untapped potential of the [[Realm Below]] and the broken Kingdom of Galifar, the clan lords
joined together to form the [[Iron Council]] and to declare
the independence and sovereignty of the Mror Holds.

One question remained: What had become of the ancient [[dwarves|dwarf]]? The answer soon became apparent. As
the Mror delved deeper into the Realm Below, they woke
an ancient evil: [[Dyrrn]] the Corruptor, a [[daelkyr]] lord of
madness. Hordes of [[aberration]]s and [[derro]] rose from the
depths to challenge the explorers. For decades, the Mror
lords have been fighting a battle in the depths, struggling to drive the darkness from their ancestral halls.
Many dwarves revile anything to do with the [[daelkyr]].
Others believe that the daelkyr can grant the Mror
dwarves the power to overcome any enemy. Some clans
have taken up [[symbiont]]s and living weapons recovered
from the depths, and cabals of [[warlock]]s draw on the
power of the Plane of [[Xoriat]].

For more information on the history of the dwarves, see [[Mror History]].

The Mror Holds consist of a loose confederation.
Twelve noble [[clans|Mror clan]] each govern a hold and have a
representative on the [[Iron Council]], which resolves disputes and issues affecting the entire nation. Each hold
includes a number of lesser clans, who owe fealty to the
noble line. Those who occupy land above have the right
to claim the halls that lie below if they can.

The [[Sovereign Host]] is the dominant faith of the Mror
Holds. [[Kol Korran]] is the most beloved of the Sovereigns, but the dwarves also revere [[Boldrei]], [[Dol Dorn]], [[Olladra]], and [[Onatar]]. 

See also [[Culture of the Mror Holds]], as well as [[Mror clan]]s.

!! Interesting Things About {{!!article}}{{!!title}}

* The Mror Holds contain deep reserves of gold, silver, and other rare and precious metals, along with iron and other ores. The Mror [[dwarves|dwarf]] are skilled miners and artisans. 
* A clan of [[orc]]s called the [[Jhorash'tar]] live among the [[Ironroot Mountains]]. The Jhorash'tar have been slowly crowded into the least hospitable regions of the mountains. A few dwarven clans seek to incorporate the Jhorash'tar into Mror society, but others wish to drive them out once and for all. 
* The dwarves have recovered artifacts and arcane secrets from the [[Realm Below]]. Dwarf [[artificer]]s are still working to master the techniques of their ancestors, while [[warlock]]s strive to harness the powers of the [[daelkyr]]. Mror communities are shaped by the artifacts they possess or by their interactions with the daelkyr. A Mror lord might serve guests from a bottomless cauldron of wine, while another studies strangers using a [[crown of eyes|Belashyrra's beholder crown]], claiming that this living artifact reveals all evil intent. 

!! Mror Characters

As you develop a Mror character or NPC, consider the
following:

* ''Clan Focus.'' The [[dwarf]] [[clan|Mror clan]] is the heart of Mror culture. Is your clan known for mercantile power or martial skill? Are you a noble—even if you're a few steps removed from true power? Or are you a guild artisan or soldier? Most Mror have embraced modern martial techniques, but a few minor clans still cling to barbarian traditions of the past. What caused you to leave your hold? Are you serving your clan and honing your skills, or have you been exiled from your homeland?
* ''The Realm Below.'' How has the [[Realm Below]] affected your family and your character? Do you oppose the foul forces that infest your ancestral halls, or do you see them as a source of power? You might be a [[paladin]] sworn to oppose the horrors that dwell in the deep, or you could be a [[warlock]] who's forged a pact with a Great Old One patron, one of the dark powers in the depths.
* ''Pride in Possessions.'' From the wealthiest clan lord to the humblest miner, the Mror take great pride in their possessions. Quality is more important than appearance, and you are interested in the history of the items you carry. If you find a magic weapon, you want to know the battles it has seen and the warriors who have wielded it before you. This is especially true of the relics recovered from the Realm Below. Who forged the blade you carry? Do you bear a trinket from a forgotten age? 

!! Cities and Sites

The Mror Holds spread across the [[Ironroot Mountains]].
Most Mror communities are at least partially subterranean, extending down into the mountains. The [[Realm Below]] is deep beneath the surface, and not every town
has a passage to it. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

The Mror Holds declared independence during the [[Last War]]. Many nations depend on the resource of the Holds, and the [[Treaty of Thronehold]] affirmed its sovereignty.

To the casual observer, the Mror [[dwarves|dwarf]]' star appears to be rising. Their mines seem to offer limitless resources. Mror [[artificer]]s make amazing strides as they study the relics of their ancestors. The dwarves are proud of their ancient past and optimistic about the future. Most Mror are generous and courageous, eager to show off their wealth and accomplishments.

Those who dig deeper realize that this prosperity is
built on an unstable foundation. The Last War may be
over, but the war against the [[daelkyr]] has barely begun.
The clan lords hold their reclaimed halls in the [[Realm Below]], but no one knows the full extent of the power of the daelkyr. A renewed assault could come at any time,
whether it's a force of monsters boiling up from below or
a creeping madness that infects the weak-willed.

The dwarves are also divided by their attitude toward
the [[aberration]]s. Some of the clans—notably [[Soldorak]]—embrace [[symbiont]]s and other [[daelkyr]] gifts; some even experiment with flesh-warping techniques and create
their own monsters. Others—notably Clan [[Mroranon]]—avoid contact with the [[aberration]]s. Such dwarves treasure the relics of their ancestors but despise those who
use [[symbiont]]s or form pacts with the darkness.

Long ago, the dwarves engaged in vicious feuds that
kept them from uniting as a nation. This new divide
could reignite those rivalries, leading to a civil war on
the surface even as evil gains strength in the depths. 
''Capital:'' [[Krona Peak]]<br/>
''Primary Resources:'' Iron, [[mithral]]<br/>
''Enemies:'' [[Soldorak]]<br/>
''Celebrated Virtues:'' Charisma, leadership, wisdom. Lead the way, but lead wisely.

Clan Mroranon has always been the largest and strongest
of the ruling [[clans|Mror clan]]. The mythical Mroranon is said to have
been the son of the last king of the [[Realm Below]], and to have
rallied the exiles to establish the [[Mror Holds]]. Talespinners say
that it was [[Kol Korran]]'s bargain with Mroranon that ensured
prosperity for the dwarves, and [[Krona Peak]] is home to both
the [[Iron Council]] and [[Kol Korran's Throne]], the largest temple
dedicated to the [[Sovereign|Sovereign Host]] in [[Khorvaire]].

While Mroranonhold has a wide variety of mines, it's best
known for iron and [[mithral]]. It has established strong ties with
House [[Cannith]], though all of the [[Five Nations]] import Mroranon
steel. It has the strongest general industrial base of the holds,
and [[Krona Peak]] is the largest single city in the region.

Mroranon [[dwarves|dwarf]] are proud of their skills as warriors and
negotiators, even if they acknowledge [[Doldarun]] and [[Kolkarun]]
to be the best in those fields. What sets the Mroranon apart is
leadership. Mroranon sees the future and inspires others to
follow. Mroranon unites, and makes wise decisions for the good
of all. This ties to the mythic story of Mroranon as the leader—[[Doldarun]] is a mighty champion, but Mroranon has the vision. Mroranon are strong supporters of the [[Sovereign Host]] and believe that the dwarves are blessed; many of the most devout
Mror priests and powerful adepts hail from Mroranonhold.

With the largest and most industrialized territory, Mroranon
has the deepest investment in the [[Realm Below]]. It has multiple
colony outposts, including one tied to a [[demiplane]] mine and
another holding an ancient fortress, and is holding a firm line
while building power for another surge. Mroranon and its vassal
clans have recovered many legendary relics and artifacts from
the depths. While they don't oppose [[symbiont]]s as strongly as
[[Doldarun]], they refuse to make use of //dularash// (Mror word meaning "foul blood") items and assert that any contact with the [[daelkyr]] or their creations is dangerous.

Acolyte, noble, and soldier are common backgrounds for
Mroranon dwarves. While [[paladin]]s are more likely to be found
in [[Doldarun]], [[cleric]]s, fighters, and [[bard]]s are all sound choices for Mroranon. With its big cities, it's also a reasonable option for criminals and rogues.
''District Type:'' Shantytown<br/>
''Buildings:'' Poor residences (400)<br/>
''First Impression:''  Lean-tos, smoky fires, and makeshift hovels cling to the side of the cliff and spread into tiny caves in the great rock wall.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Ship's Towers]] (west); [[Sharn's Welcome]] (northwest)

The southern expanse of cliff face, away from the
wharves where the Hilt flows into the [[Dagger River]],
is dotted with small caves. Some of the poorest of
[[Sharn]]'s poor find shelter in wretched hovels built in
and around these caves. The populace is a destitute
mixture of [[human]]s, [[dwarves|dwarf]], [[gnome]]s, [[halfling]]s,
[[shifter]]s, [[changeling]]s, [[goblin]]s, [[hobgoblin]]s, [[bugbear]]s,
[[orc]]s, [[ogre]]s, and even a [[troll]] or two. 
Undead mummies are created when a priest of the [[Blood of Vol]] or other faith ritually imbues a prepared embalmed corpse with [[necromantic magic|necromancy]]. This process is one of only three techniques known by practicers of [[Mabar]]an necromancy that can extend a person's existence and preserve their personality and memories (the other two creating [[vampire]]s and [[lich]]es).

[[Seekers|Blood of Vol]] and [[Bloodsails]] call these undead //oathbound//. The reason for this is that a mummy is bound by a set of oaths that they must obey, and it is these oaths that bind its essence to its body and prevent it being dragged to [[Dolurrh]]. Many oathbound are bound to specific temples or villages, forbidden by its oath never to leave its domain. Many Bloodsail mummies are bound to their ships. The looser these oaths, the more power and components are required for the ritual. For example, [[Malevanor]], the High Priest of [[Atur]], has far fewer restrictions than most oathbound; but it's not a simple matter to create mummies with such freedom.

Mummies are not driven by the hunger of the [[vampire]], and do not need to consume the blood of the living to survive. They are sustained directly by the dark energy of [[Mabar]]. This is why the touch of the mummy causes flesh to rot and why its gaze causes dread; it is a vessel for Mabar, which embodies the death of all that lives and the end of all hope.
Murephan is an enigma. Born as the result of some
heinous crime against the [[Inspired]], and once one of
the [[Chosen]] of [[Riedra]], he is a permanent amalgam of
[[quori]] spirit and [[human]] flesh. He came to Adar long
ago—even he doesn't know how long—without memories
or possessions. He expected to die. But the [[kalashtar]] of
[[Malshashar]] slowly influenced Murephan even as they
imprisoned him, and his suppressed hatred for the
[[Inspired]] resurfaced. He began to work for the [[Summit Road]] and now spends much of his time in [[Syrkarn]], helping others out of situations all too familiar to him. The
ranger and [[psion]] has proven his loyalty and ability
time and again, but his race keeps him eternally an outsider. Only in the city-hive [[Zi'til'natek]] does he find any true company.

Murephan is hard-nosed, and he speaks unkind
truths more often than he should, but he is fair-minded
overall. His gruffness is perfect for testing others'
patience, which means it can be an asset in the risky business he's in. He is less likely to carry out threats of abandoning those he aids than he seems. He is, however,
a merciless killer of [[Riedrans]], and he's likely to give
anyone who attacks him a good thrashing. His closest
friend is the [[dromite]] [[Kelki]], who doubles as Murephan's
soft side. 
Mutiny Harbor is a small bay off the coast of southern mainland [[Lhazaar Principalities]]. It connects to the [[Far Strait]].
{{!!title}} is a street gang of 
[[bugbear]]s in [[Lower Dura]], [[Sharn]] who have been
"protecting" [[Malleon's Gate]] for decades
(recently they've aligned with [[Daask]], but
their focus is their home district).
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this quiet district. Children play
in the streets, couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[North Towers]] (northeast); [[Vallia Towers]] (southwest); [[Boldrei's Hearth]] (east); [[Ashblack]] (below); [[Ambassador Towers]] (above)

Myshan Gardens is an unremarkable residential district. Its downtown location in Lower Central makes it particularly attractive to younger residents, particularly those with an artistic bent, radical political ideas, or untraditional lifestyles.
The white tower of the
[[Esoteric Order of Aureon]] is surrounded by a host
of lesser magic businesses. The Mystic Market consists mainly
of [[magewright]]s and adepts. Businesses in the market
include

* The ''Mithral Blade,'' a smithy that produces steel and [[mithral]] weapons and armor with magical enhancement
* ''Wise Wood'', a shop that buys and sells wands and staves
* The ''Moonlit Loom'', which sells magic clothing
* The ''Dragon's Hoard'', which sells a wide assortment of minor wondrous items and does a brisk business in feather fall talismans (not to be confused with the [[Dragon's Hoard]] in [[Skyway]])
* ''Boldrei's Tears'' and ''Good Spirits'', which sell potions.
Born into the large, semi-nomadic Naartoq tribe of
the [[Qiku]] nation, Naar-Esqa chose the path of the shaman
after his first hunt. His affinity for the land and command of powerful spiritual magic led him to become the
tribe's shaman leader at a relatively young age. But it was
Naar-Esqa's uncommon wisdom and foresight that led to
his destiny as Qiku Sky Teller.

Along with emerging leaders from other tribes,
Naar-Esqa has been instrumental in maintaining the
current peace among the [[shifter]] nations. He established
a system of regular communication, dispatching pipers
and lorekeepers to constantly circulate in [[Qiku]], [[Saartuk]],
and [[Chuniigi]] territories, settling local disputes before
they worsened. 

Naar-Esqa was elected to his current post at the last
Summit of Nations, joining representatives from the other
two nations in an unofficial triumvirate leadership. Since
then, he has been able to rally the tribes to common causes.
The Qiku Sky Teller has dispatched scouts and rangers to
investigate the threat of the [[Kalaak]] barbarians, and has
met with other [[Tashana|Tashana Tundra]] groups to assess the situation,
including the [[human]] barbarian
tribes. In the south, Naar-Esqa fears open warfare with the
[[Riedra]]ns should [[Qiku]] involvement with the [[Akiak]] progress, and he has forbidden [[shifter]] warriors from directly
participating in the conflict.

Naar-Esqa has no permanent residence and tends
to travel constantly and secretly—either alone or with
a small retinue. He relies on his network of scouts,
runners, and pipers to keep him informed. In person,
Naar-Esqa is remarkably reserved and diplomatic, while
projecting at all times a steely resolve. Tufts of silvery hair
cover his wiry, muscular frame. He is always interested
in forging new alliances, with the good of the [[Tashana shifter nations|Culture of the Tashana shifters]] foremost in his mind. 
This small glass bottle contains enough paint for one
application. Applying the paint takes 10 minutes and the
paint lasts 10 days. While your nails are painted,
scratching them on any surface leaves behind a trail of
color that lasts for 24 hours. 
The [[dao]] Naja Ash sculpts fire, producing masterful artifacts and tools
that channel or produce flame. She creates the majority
of the [[azer]], and she can create other [[elemental]] creatures,
[[construct]]s, or unique blends between the two concepts. She's
the foremost expert on elemental binding in the multiverse,
though it would take a great deal to convince her to share her
knowledge with mortals.
Overseeing the daily needs of the eastern arm of
[[Dar Myan]] and reporting both to [[Baalnakosh]] and the
[[Thousand Eyes]], Naldhuna is an ambitious and vindictive [[tsucora]] [[Inspired]] who uses any tool available to her in her subtle
quest for prominence. Naldhuna must approve any
business or operations of significant scale in Dar Myan's
eastern arm. Her subordinates handle lesser concerns.
Nalfeshnee [[demon]]s patrol the [[Catacombs]] of [[Dolurrh]],
dispersing [[meld]]s and [[lemure]]s and dealing with mortal intruders.
They appear as large [[humanoid]]s whose features are shrouded
in gray mist, and they delight in crushing mortals and pulling
the [[shade]]s from their corpses, as well as consuming lemures.
''Capital:'' Shadowspire<br/>
''Primary Resources: ''Precious stones, wizardry<br/>
''Enemies:'' [[Doldarun]], [[Droranath]], [[Toldorath and Tordannon]]<br/>
''Celebrated Virtues:'' Arcane knowledge, beauty, mystery. Solve mysteries, but remain unknown.

Narathun is a small [[clan|Mror clan]], but has always had power. The mythic
hero Narathun was the lone [[wizard]] of the exiles, and their
people hoarded this knowledge. Narathun was renowned for
its [[magewright]]s, especially its oracles; while they draw rubies
and sapphires from their mines and produce beautiful jewelry,
secrets have always been one of Narathunhold's primary exports.
Narathun [[dwarves|dwarf]] appreciate tragedy and sacrifices. The clan
is known for its artists and its [[bard]]s; its work is unquestionably
beautiful, but certainly more morbid than that of other clans;
it's no accident that its largest city is called Shadowspire.

In the modern age, the [[dragonmarked house]]s and
traditions of [[Galifar]] have brought [[magewright]]s to all holds.
But its oracles are still respected, and the Ebon Library of
Shadowspire is the one of the finest schools of [[divination]]
in [[Khorvaire]]. Narathun sages have always asserted that no
knowledge should be forbidden, and Shadowspire holds
temples both to the [[Shadow]] and to the [[Blood of Vol]]. Clan
Narathun is fascinated by the [[Realm Below]], though it lacks
the forces to push as deeply into Sol Udar as it would like, and
Narathun patrons might well employ adventurers willing to risk
their lives in the depths. Narathun [[artificer]]s have embraced
the study of fleshcrafting; while they are no match for [[Mordain the Fleshweaver]], they have made remarkable developments
over the past few decades.

Narathun dwarves hold long grudges. They have never
forgiven [[Toldorath and Tordannon]] for thefts that occurred
before the [[Great Sorrow|Mror History]], and despise [[Droranath]] for a murder that
occurred eight centuries ago. [[Doldarun]] has long condemned
Narathun for its “foul practices,” and its pursuit of fleshcrafting
has exacerbated this. However, the other clans value its jewels
and its knowledge, and others have always stood in between
Narathun and [[Doldarun]]. [[Soldorak]] and Narathun are staunch
allies, reinforced by their interest in the [[Realm Below]].

A character from Narathun lends itself more to introspection
than interaction and bargaining, and Narathun dwarves are
more likely to be [[artificer]]s or [[wizard]]s than [[warlock]]s. Narathun
entertainers and [[bard]]s produce haunting works; the College
of Whispers is an appropriate choice. This is also an excellent
clan for hermits, acolytes, or clerics tied to the [[Dark Six]] or the
[[Blood of Vol]]. Despite the propaganda spread by Clan [[Doldarun]],
Narathun dwarves are no more likely to be evil than any others.
This strange stone found in the [[Demon Wastes]] is believed by some to be the petrified remains of [[demon]] bones. It can be used in rituals involving the [[conjuration]] of [[fiend]]s.
When you put on this ring and attune to it, thick, leafy vines sprout from the ring and run up your arm, stopping just short of your shoulder. This ring allows you to cast [[awaken]] on a plant at will. You can only animate one [[plant creature]] at a time.
The largest city in [[Syrkarn]] and unofficial capital of the region, Nderitese is built on the foundations of ancient [[yuan-ti]] ruins in [[Khunan]], just north of the [[Tese Hills]]. The sahar of the city is sometimes asked to broker disputes between other settlements and larger clans.

To learn more about the people of Nderitese, see [[Syrks]].

!! Notable People

* [[Gerazan Sandaili]]
* [[Laddin Tho]]
* [[Ky]]
While wearing this necklace, you can breathe normally in any environment, and you have advantage resisting harmful gases and vapors (such as [[cloudkill]] and [[stinking cloud]] effects, inhaled [[poison]]s, and the breath weapons of some dragons).
This choker of black ribbon is dotted with tiny diamonds. When worn, it gives the wearer a beautiful singing voice.
The School of Necromancy explores the cosmic forces of life, death, and [[undeath|undead]]. As one focuses their studies in this tradition, they learn to manipulate the negative energy of [[Mabar]] to animate once-living things. As they progress, they learn to sap the life force from a creature as their magic destroys its body, transforming that vital energy into magical power they can manipulate.

Most people see necromancers as menacing, or even
villainous, due to the close association with death.
Not all necromancers are evil, but the forces they
manipulate are considered taboo by many societies. 

A more challenging form of necromancy involves infusing the once-living with positive energy from [[Irian]], and sustaining the resulting [[deathless]] being with the devotion of the living. This is the form of necromancy that animates the [[Undying Court]].

Powerful bearers of the [[Mark of Healing]] and [[cleric]]s with potent conduits to divine power can [[raise the dead|raise dead]]; technically this qualifies as necromancy, even though the recipient of the spell is truly living, not undead.

!!! <<showspells-school {{!!title}}>>
This weapon is a magic dagger disguised as a sewing needle. When you hold it and speak its command word, it transforms into a dagger or back into a needle. While holding it, you can cast the [[mending]] cantrip from it.

<<<
{{mending}}
<<<
A slime-covered worm of immense size, a neothelid is a mutated [[illithid|mind flayer]] tadpole that was never implanted in a donor brain. As a feral thing, a neothelid knows nothing beyond the predatory existence it has lived so far and struggles to comprehend its new [[psionic|psionics]] abilities. Neothelids prowl subterranean passages in search of more brains to sate their constant hunger, growing ever more vicious. These creatures can spray tissue-dissolving enzymes from their tentacle ducts, reducing victims to a puddle of slime and leaving only the pulsing brain unharmed.
After the [[Mourning]], King [[Boranel|Boranel ir'Wynarn]] welcomed
refugees from [[Cyre]], permitting them to set up encampments within [[Breland]]’s borders. Most settlements were
squalid and confused. Sickness ran rampant, worsening the people’s suffering. As the number of refugees
grew, it was clear that the camps would not suffice.
Boranel granted the Cyran ambassador, Prince [[Oargev ir'Wynarn]], permission to found a town for his people.
By king’s edict, the residents would be subject to Cyran
authority and live as they saw fit. The Cyrans appreciated the gesture and named the town New Cyre, but
most remain aware that they were granted territory
no one else wanted. Many of them resent the fact that
they’re trapped inside their former enemy’s lands, with
nowhere else to go.

Though resources are scarce, New Cyre
remains a symbol of hope for many refugees. It's also a
last stop for those determined to explore the [[Mournland]]. 
New Galifar is the older of the two colonized territories of [[Q'barra]] (the other being [[Hope]]), founded on the [[Adder River]] by [[Galifar]] patriots fleeing the [[Last War]] in 928 YK. The territory's ruler is King [[Sebastes ir'Kesslan]], grandson of Duke [[Ven ir'Kesslan]] of [[Cyre]] who initially petitioned for the rights to settle the land east of the [[Endworld Mountains]]. The borders are defined by the Newthrone Accords the meridians 29.1° E and 33° E.

The law in New Galifar is modeled on that of the kingdom of [[Galifar]] before the [[Last War]]. The people of New Galifar live in the capital [[Newthrone]], [[Adderport]], fortified towns surrounding those cities, or along the [[Adder River]]. 

The [[Inspired]] of [[Riedra]] have made alliances with [[Sebastes|Sebastes ir'Kesslan]]'s tiny kingdom. Little does the king realize, they are using [[Q'barra]] as a beachhead for expansion into [[Khorvaire]].
<<list-links-article "[tag[plane]search[elemental]]">>
<<list-links-article "[tag{!!title}sort[title]]">>
The capital of [[New Galifar]] and the seat of King [[Sebastes|Sebastes ir'Kesslan]], Newthrone is the largest city and port in [[Q'barra]]. This fortified port stands where the [[Adder River]] meets [[Adder Bay]]. Newthrone is built on the model
of the great cities of the old kingdom of [[Galifar]]. No hostile force has
ever breached its walls.

The city offers all the amenities of central [[Khorvaire]], including [[house|dragonmarked house]] [[enclave]]s and businesses, in particular those of [[Jorasco]] and [[Ghallanda]]. Alongside
these enterprises, merchants and crafters from [[lizardfolk]] tribes, [[dragonborn]] clans, and the [[Lhazaar Principalities]] work and trade. Newthrone even has a
small [[Riedra]]n ward, which only the folk of that land
have access to.
This whistle is carved from transparent crystal, and it resembles a tiny [[carrion crawler]] curled up like a snail. The name "Night Caller" is etched on the whistle in Dwarvish runes.

If you blow the whistle in darkness or under the night sky, it allows you to cast the [[animate dead]] spell. The target can be affected through up to 10 feet of soft earth or similar material, and if it is, it takes 1 minute to claw its way to the surface to serve you. Once the whistle has animated an [[undead]] creature, it can't do so again until 7 days have passed.

Once every 24 hours, you can blow the whistle to reassert control over one or two creatures you animated with it.
Night hags are among the first children of [[Khyber]], and roamed [[Eberron]] freely during the [[Age of Demons]] when the [[overlord]]s ruled the Material Plane. After the overlords were defeated and bound, the night hags were scattered, each pursuing their own agenda.

Resembling a humanoid crone with [[troll]]-like features, blue-purple skin, and black hair, night hags are terrifying creatures to behold. Legend has it that all other [[hag]]s are the children or grandchildren of the [[immortal]] night hags.

Today, night hags are a rare sight, but can be found in the [[Demon Wastes]] (like the "ambassador" [[Kyrale]]) or [[Droaam]], or wandering the [[plane]]s. Amazingly, night hags are the only known creature that can freely enter and leave [[Dal Quor]], the Region of Dreams, and can haunt the dreams of mortals, harvesting emotions and memories. In order to pass into Dal Quor, a night hag must have a [[heartstone]] in her possession.

When the [[Akiak]] [[dwarf]] clans split from their [[Dorann|Dorann Holds]] forebears
hundreds of years ago, they initially settled in the passes
and valleys of the [[Paqaa|Paqaa Mountains]] mountain range. Leaving behind
the destructive clan violence of their forebears, they made
great leaps in metallurgy and [[alchemy|alchemist]]. The [[psionic|psionics]]-tending
[[duergar]] in particular developed advanced techniques for
working with the abundant metals and deep crystal found
in the mountains of their adopted home. Previous to the rise
of the [[Inspired]], the Akiak were in great demand as technicians in all [[Sarlona]]n nations, and some clans migrated even
farther south, approaching Adar borders. During this
period, the Akiak began building //dalnans//, small structures
of crystal and steel designed to harness the psychic energy
of a community. Many of these early monoliths can still
be found throughout Sarlona.

When the [[Inspired]] came to power, they hired many
of the [[Akiak]]—who functioned nearly like a guild in this
period—and the clan coffers swelled with [[Riedra]]n gold. The
Akiak and the Inspired worked together to build the first of
the massive [[hanbalani|hanbalani alta]], with the dwarves supplying the basic [[alchemical|alchemist]] and metallurgical building blocks. Although
the basic framework was derived from the Akiak design, the
Inspired also brought [[quori]] insights to the work, ensuring
that the monoliths could be used in ways the Akiak never
considered. Once the Inspired had appropriated the knowledge they needed to build hanbalani on their own, they turned
on the Akiak in a massive coordinated betrayal that has come
to be known as the Night of Razor Dreams. Planned assassinations, both physical and [[psionic|psionics]], wiped out nearly all the
Akiak leaders, engineers, and skilled technicians in the hanbalani construction facilities. Meanwhile, the [[shifter]] warriors
of the [[Taskaan Legion]]—already garrisoned near many of the
clan homes as "protection"—swarmed the Akiak villages and
towns in the [[Paqaa Mountains]], killing or enslaving all who
remained. Only a fraction of the once-great Akiak nation
survived this horrifying betrayal, fleeing to the northern
foothills of the Paqaa Mountains and the free lands of the
southern [[Tashana Tundra]]. The Night of Razor Dreams burns in
the heart of every Akiak, a terrible price paid for an unwise
and greedy collaboration with the [[Riedra]]n leadership.
Part apothecary, part tavern, Nightshade caters to those who wish to explore the mysteries
of death. Some of its patrons are [[necromancers|necromancy]] or
devout followers of the [[Undying Court]], while others
are jaded youths or thrill-seeking aristocrats. In
addition to the traditional funerary dishes of [[Aerenal]], Nightshade serves beverages tainted with weak
[[poison]]s designed to bring the diner to the edge of
death. It is unusual for a client to actually die; the
servers are trained in resuscitation and keep antitoxin
on hand. But accidents do happen. 
Nightwalkers are huge horned [[manifestation]]s of shadow that emerge from the pure darkness of [[Mabar]]. They are powerful conduits of negative energy that roam the [[Last Desert]], or feed on fragments in the [[Hinterlands]].
South of [[Atur]] and the [[Ashen Spires]] lies the Nightwood. The forest’s fringes serve
as a hunting preserve, but not far inside, the woods
become trackless, filled with dark and terrible creatures. Some foresters claim that burgeoning evil swells from an oozing wound at the wood’s center, a
deep chasm leading into the bowels of [[Khyber]]. Few
can substantiate these assertions, but the hideous
things emerging from the shadows suggest some
truth to the rumors.
Ninebay is an island in the [[Lhazaar Principalities]].
Nolan Toranak ([[dwarf]] councilor for the [[Cogs]]) represents the industrial powers behind
[[Ashblack]] and [[Blackbones]]. The nobles and merchant princes of [[Skyway]] and the [[Upper City|upper ward]] own many of the foundries and forges in the [[Cogs]], and Nolan usually aligns himself with one of the more eloquent councilors. The one issue that he does feel strongly about is the status of the [[warforged]]. His children were killed by warforged during the [[Last War]], and he has never forgiven House [[Cannith]] or the warforged as a whole. If Nolan had his way, all warforged would be melted down or banished. As it is, he tries to find ways to bypass the stipulations of the [[Treaty of Thronehold]], so [[warforged]] can be treated as property. There are a few groups of people in [[Sharn]] who share Nolan's fear and hatred of the warforged, and he often channels funds to these organizations. He might hire adventurers to take action against House [[Cannith]] or the prominent warforged of [[Blackbones]]; or if there is a warforged among the party, Nolan could use his power to try to discredit the adventurers and drive them from the city. 
There are twelve holds in the [[Mror Holds]], including House
[[Kundarak]]—but there were thirteen exiles in the stories. Noldrun
was clever and curious, an explorer who was always finding
new things. Noldrun was never a large [[dwarf]] [[clan|Mror clan]], but its greatest
mine—Korran's Maw—was a rich source for a seemingly
impossible array of minerals, including Eberron and Khyber
[[dragonshard]]s. This made it a strong ally of House [[Kundarak]]
and [[Zilargo]], and brought tremendous wealth to the clan. ''Noldrunthrone'' was the capital of the [[clan|Mror clan]]’s holdings—a great city to rival [[Krona Peak]].

And then, approximately four hundred years ago, Noldrunhold
fell silent. Messengers sent into the hold never returned. Noldrun
had previously fought many fierce battles with the [[Jhorash'tar]],
and blame immediately fell to the [[orc]]s; but none could explain
how the Jhorash'tar could have achieved such a massacre.

The fate of Noldrunhold remains a mystery to this day. Most
contemporary records of what explorers found were passed
down orally and are unreliable. In some accounts, corpses were
skinned; in others, there were no corpses, as if the Noldrun
had all simply vanished. Some suggest that the Noldrun all
gathered together and descended into Korran's Maw; others
say the [[Jhorash'tar]] killed them and threw the bodies into the
Maw. Neighboring clans [[Soldorak]] and [[Droranath]] both sought
to expand into the abandoned territory and claim the empty
spires, but all attempts were abandoned—again, the stories of
why are unreliable. Some say the new settlers killed each other
in an irrational frenzy, others say they simply disappeared. The
Droranath blame the Jhorash'tar orcs, and mysteriously, there
are tribes of Jhorash'tar still living on old Noldrun lands, though
even they shun the empty cities and Korran's Maw.

Today, many assume that the Noldrun must have been the
first victims of the [[War Below|Mror History]]—that they dug too deep and
were destroyed by [[Dyrrn]]. Some assume the [[derro]] found in [[Sol Udar|Realm Below]] are the remnants of the Noldrun dwarves. But that's all
just conjecture. Perhaps it was the work of a fiendish [[overlord]]
imprisoned in the region. Perhaps it was an early impact
of whatever caused the [[Mourning]], or some sort of [[Cannith]]
experiment. Or perhaps it was the [[Jhorash'tar]] after all, and the
[[orc]]s possess some hidden power they have yet to reveal.
The northern steppes of [[Aerenal]] are the domain of
the [[Tairnadal]], the warrior elves who seized control of
[[Valenar]]. Although much of their population now resides
in Valenar, many Tairnadal noncombatants—children,
artisans, and the [[druid]]s who raise their remarkable
[[beasts|Valenar beast]]—remain in Aerenal. 
The North Circle is the southernmost latitude in the Northern Hemisphere at which the sun can remain continuously above the horizon for 24 hours during the [[Lharvion|Khorvaire calendar]] equinox (or below the horizon during the [[Zarantyr|Khorvaire calendar]] equinox).
''District Type: ''Marketplace<br/>
''Buildings:'' Open-air market, temple ([[Sovereign Host]]), shrine ([[Silver Flame]]), average lodging (9), average food (45), exotic trades (15), upscale trades (50),
average trades (140), poor trades (40), upscale services
(20), average services (60), poor services (20)<br/>
''First Impression:'' North Market is one of the oldest
business districts in Sharn. The cobblestone streets
have been repaved time and again, and the walls of
the towers are worn smooth with age. People always
fill the streets, but there is less noise and bustle than
one might expect from such a crowd; the locals are
surprisingly patient and polite.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Stoneyard]] (northwest); [[Wroann's Gate]] (bridge, southeast); [[Terminus]] (bridge, south); [[Boldrei's Hearth]] (bridge, southwest); [[Holdfast]] (above)

The open market of this district is one of the oldest
in [[Sharn]]. In addition to local residents, crafters from
the regions around Sharn come to sell their wares at
the open market, and [[Far|Khorvaire calendar]] and [[Sar|Khorvaire calendar]] are excellent times
to purchase textiles and other crafted goods. A marketplace permit costs 3 sp. Most of the businesses and
merchants in the district follow solid, simple trades:
blacksmiths, brewers, carpenters, and tailors who
produce sturdy clothes for the lower classes. However,
Lower Northedge is home to a significant portion of
Sharn's shifter population, and there are a few exotic
trades and restaurants catering to the shifting folk,
including an apothecary who specializes in the proper
care of fangs and claws.

In addition to the private businesses, there are a
number of workhouses in North Market, primarily
textile factories. The district also contains a small
temple to the [[Sovereign Host]], which primarily
honors [[Kol Korran]] and [[Onatar]]. 

!! Noteworthy Locations

* The [[Bear's Rest]]. A modest inn maintained by a [[beasthide]] [[shifter]] named Leara, who usually gives a discount to traveling shifters. The decor features various exotic hides. 
* [[Fathen's Shrine|Shrine of Fathen the Martyr]]. This marker in North Market commemorates a miracle that exposed a network of [[wererat|lycanthrope]]s in Sharn, along with the [[priest|Fathen]] of the [[Silver Flame]] who died while fighting them. Pilgrims devoted to the Silver Flame often visit the shrine. 
* The [[Horse and Hearth]]. Though not as colorful as the [[Bear's Rest]], this large inn is maintained by House [[Ghallanda]] and offers rooms of modest and comfortable quality.
* The [[Rat's Nest]]. A modest tavern catering to the [[shifter]]s of Lower Northedge, the Rat's Nest is a haven for gossip and serves food and drink in the [[Eldeen|Eldeen Reaches]] style. 
''District Type:'' Shops<br/>
''Buildings:'' Temple ([[Aureon]]), shrine ([[Kol Korran]]),
average lodging (15), average food (40), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (10), average services
(40), poor services (8)<br/>
''First Impression:'' Quirky boutiques and small
bookstores stand out among a host of more
mundane shops.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Myshan Gardens]] (southwest); [[Boldrei's Hearth]] (southeast); [[Stoneyard]] (bridge, northeast); [[Ashblack]] (below); [[Tradefair]] (above)

North Towers is one of [[Lower Central]]'s two mercantile districts. It has a higher concentration of
bookstores than any other district in [[Sharn]] except
the [[University District]].
When this gold ring etched with two opposing arrows is worn, the wearer fully believes that north is to the south. Nothing can be said or done to convince the wearer otherwise. Once donned, the user becomes very possessive of the ring and will not willingly take it off.
The Northedge residential area is the quietest quarter
of [[Sharn]]. At first glance there's little to attract adventurous sorts, unless someone is interested in purchasing
top-quality real estate. At the same time, you never
know when this charming and innocuous area could be
the site of a nefarious cult or a devilish plot. 

* [[Upper Northedge]]
* [[Middle Northedge]]
* [[Lower Northedge]]

Northedge is connected by bridges to [[Central Plateau]] and [[Tavick's Landing]]. 

!! Things to Do in Northedge

Northedge is the most peaceful quarter in Sharn. It does
have a few taverns and temples, but if you're looking for
excitement or a wide selection of goods and services,
you'll want to go elsewhere. Even so, Northedge boasts
some notable special attractions:

* ''Settle down.'' If you're looking for a place to live in Sharn, Lower Northedge residences are of reasonable quality and price and offer more security than [[Lower Dura]].
* ''Die in style.'' The elves of Shae Lias are experts in funerary customs and embalming. In addition, the high priest of the [[Gates of Passage]] is capable of raising the dead.
* ''Find a patron.'' Many eccentric nobles make their homes in Upper Northedge. A patron of the arts could take an interest in the career of a bard or an entertainer. A collector might keep capable adventurers on retainer with the understanding that they'll deliver any [[Dhakaan]]i artifacts they come across in their travels. You never know what benefits a patron will provide; at the very least, having a patron can provide you with an introduction to high society. 
This septum ring gives its wearer the ability to smell magical auras, and track the scent left behind by [[magic item]]s or spellcasters.
When worn, this brass nose ring makes the user's irises appear streaked with green. Three times per day, the wearer can exhale a cloud of poisonous gas that fills a 30-foot diameter sphere.
A variation on the common [[smokestick]], this
object pours forth extremely foul-smelling smoke when it
is ignited.
The Nulakesh Empire dominated central [[Sarlona]] for centuries before the [[Sundering]]. Nulakesh lacked the magical or philosophical sophistication of many of the smaller kingdoms, but it had a large, dedicated population and extensive natural resources, along with a superbly disciplined army. Nulakesh went through many periods of expansion
and decline over the centuries, and it was fading when the [[quori]] came to [[Sarlona]]. Dream manipulation helped inspire the Nulakesh war leaders to reclaim their ancestral glory and, later, to convert the disgruntled populace
to the [[Path of Inspiration]]. The strong martial tradition
continues to the present day, and much of the [[Harmonious Shield]] is recruited from this province.

The Nulakeshi despise nonhumans; as a result,
[[shifter]]s and [[ogre]]s are rarely deployed in this province.
The Nulakeshi are deeply devoted to the [[Inspired]], and
the daily exercises of the peasants often have a martial
theme. Many people who would be commoners in other
provinces are trained as warriors. 
One of the largest [[layer]]s of [[Shavarath]], Nullius Terram is a battlefield the
size of a small nation. It's divided by several deep, heavily
fortified trenches, which are separated by blasted regions of
scorched earth, blast craters, and bones. Nullius Terram's
multiple trench lines twist and curve throughout the region,
and in the lands between the trenches lie strategic outposts.
The region is marked by constant barrages and terrible
tools of mass destruction—widescale [[cloudkill]], curses that
transform conscripts into killers, and worse.

[[Tyranny]], [[Cruelty]], and [[Justice]] are the three active [[legion|legion of Shavarath]]s in this region. Justice has a difficult position in Nullius Terram, but
has been slowly gaining strength. Periodically, the commanders
send troops to clash in the fields between the lines, either in
simple skirmishes or full offensives. Ultimately, the theme of this layer is that of slow, agonizing stalemate, and the suffering war can inflict on both the land and the soldiers.

Nullius Terram is noteworthy for its flowing time; for every
10 minutes that pass in this layer, only 1 minute passes
in [[Eberron]]. So it's a long, slow struggle—you could spend
months here and only miss a week in Eberron.
! The Crown

''Color:'' Yellow-gold<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Hospitality|Mark of Hospitality]]<br/>
''Associated Plane:'' [[Daanvi]]

The golden disk of Nymm is most typically associated with royalty. Those born when Nymm is ascendant are said to be sociable and charismatic, gifted orators and con artists. The [[halfling]]s of House [[Ghallanda]] frequently offer discounted rates at their hostelries on nights when "King Nymm" is in its ascendant phase.
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (244), average
residences (36)<br/>
''First Impression:'' The smooth lines of [[elven|elf]] architecture can be seen throughout this district, and
most of the towers are formed of polished densewood. Manors and palatial estates line the wide
avenues, and private gardens can be seen stretching
out on walled balconies.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Shae Lias]] (northwest); [[Crystal Bridge]] (southeast); [[Platinum Heights]] (bridge, southwest); [[Korranath]] (Korran-Thiven) (bridge, south); [[Oakbridge]] (below)

Like [[Crystal Bridge]], Oak Towers is a peaceful
neighborhood that is home to many of [[Sharn]]'s
wealthiest citizens. The elven influence of [[Shae Lias]]
is clearly visible in the architecture of the district,
and much of the population is made up of [[elves|elf]] and
[[half-elves|half-elf]]. Between the [[Sharn City Watch|Sharn Watch]], private
guards, and the magical wards employed by many
of the households, Oak Towers remains a quiet and
peaceful district. 

!! Noteworthy Locations

* [[Stormwind Keep]]. The private estate of [[Dantian d'Lyrandar]]. 
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Towers and houses of polished
[[densewood]] fill this district. While simple in design,
the buildings are comfortable and well designed,
and the district has been carefully maintained. The
streets are quiet and the people are friendly, and
after a few minutes, it feels like home.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[High Hope]] (northwest); [[Holdfast]] (southeast); [[Tradefair]] (bridge, southwest); [[Sovereign Towers]] (bridge, south); [[Stoneyard]] (below); [[Oak Towers]] (above)

While the majority of the townhouses and apartments
in Oakbridge fall into the “average” category, they
are of the highest quality within that category. The
district is not ostentatious and an Oakbridge address
conveys no status on its owner, but the buildings are
large, well constructed, and very safe, and the inhabitants are friendly and always keep an eye out for one
another. If someone purchases a home in Oakbridge,
within a week he has dozens of new friends. 

!! Noteworthy Locations

* [[Bright Wind]]. A comfortable townhouse, home to the Milana family, which could serve as a possible launching point for adventures.
Known as one of the finest restaurants in the city, the Oaks rests on one of the vast
balconies of the Nowen Tower. Patrons dine in an
elaborate, two-story open-air pavilion, surrounded
by the living trees from which the restaurant takes
its name. The Oaks specializes in exotic [[Aerenal]]
cuisine, but also serves a variety of traditional
[[Brelish|Breland]] dishes, including pepper cider and spiced
daggertrout. The owner, [[Maza Thadian]], has served as head chef for over
300 years, and is respected throughout the district
for her wisdom and common sense. Six years ago,
Maza assumed the position of [[Councilor|Sharn Council]] for [[Upper Northedge]], and today she leaves most of the restaurant work to her sons, Meryn and Malys; however, she can still be coaxed to perform her culinary
miracles for special patrons. 
Great Druid Oalian, ruler of the [[Eldeen Reaches]], is like no other creature in [[Eberron]]. Some claim he was once a tree, [[awaken]]ed by powerful magic wielded by the original [[Gatekeepers]]. Others say he is the first tree, as old as the world. If Oalian knows the truth of his origin, he does not share it.

At the center of [[Greenheart]] stands the Great Druid's grove. Trees and [[treant]]s form a ring around a pool of mirror-still water where the Great Druid channels the primal power that enriches the land.
Prince Oargev ir'Wynarn, son of Queen [[Dannel|Dannel ir'Wynarn]], is the last scion of [[Cyre]]’s ruling family. He was serving as an ambassador to [[Breland]]
when the mysterious [[Mourning]] befell his nation and has
since become the unofficial leader of the Cyran refugees
scattered throughout the other domains. He hopes to one
day gather all of Cyre’s homeless children to [[New Cyre]], his refuge
in Breland. His other desire revolves around discovering
the truth behind the destruction of his kin and country,
and exacting revenge on the guilty parties. Until then, he
graciously accepts the hospitality of Breland (even if the
Brelish have given him unwanted land in the middle of
nowhere) and works to rebuild the confidence and honor
of his subjects. He serves as mayor of New Cyre while also
playing the role of a king in exile.

Prince Oargev regularly seeks out news and information
from those foolish or brave enough to venture into the
[[Mournland]]. He has been known to fund expeditions into the blasted, wasted remains of his once-proud nation,
hoping to discover some hint or clue that points to the
cause of [[Cyre]]’s demise. In the meantime, Oargev works to
improve the plight of his people and dreams of rebuilding Cyre—either in a restored Mournland or someplace
else entirely.
When you nock an arrow on this longbow and choose a target you can see, you can speak the bow's command phrase. The target of your attack becomes your sworn enemy until it dies or until dawn seven days later. You can have only one such sworn enemy at a time. When your sworn enemy dies, you can choose a new one after the next dawn.

You have a large advantage when attacking your target, and deal extra damage on a hit. You do not suffer disadvantage for the target hiding behind cover. 

While your sworn enemy lives, you have disadvantage on attack rolls with all other weapons.
These earrings can only be removed by the person who put them in. The wearer must obey and follow the orders of anyone who speaks the command word.
A vast expanse of psychic space surrounds [[il-Lashtavar]], home to
millions of mortal dreams. The islands in the Ocean of Dreams
range from the complex dreamscapes of sentient creatures,
humans and dragons alike, to the simple dream of a dog that's
imagining chasing a ball. From the outside, these islands appear
as glittering bubbles, each with an image of its dreamer within
it. They're loosely arranged based on the physical location of
the dreamer, so there's a stretch of the ocean that contains
dreamers near [[Breland]], another for [[Thrane]], and so on—including regions for any dreamers currently on other planes.
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The towers of Ocean View are
among the highest in the city, allowing a beautiful
view of the water to the south. The central spires are
surrounded by luxurious mansions and well-kept
gardens. Private guards stand at the gates of most of
the manors, and strangers are watched carefully.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Sunrise]] (west); [[Dalan's Refuge]] (northeast); [[Platinate]] (bridge, north); [[Little Barrington]] (below)

The manors of Ocean View are the most luxurious on
the east side of [[Sharn]], and they are extremely exclusive. Gold alone cannot purchase a mansion in Ocean View; by the laws of the ward, at least 30 current
residents must sign a petition allowing the newcomer
to purchase property. In addition to the beautiful
homes, there are a number of pleasant parks and public gardens. The most notable of these is ''Lavalla Park'', which provides the best view of the ocean.

!! Noteworthy Locations

* The [[Gray House]]. One of the oldest manors in the district, the Gray House has no windows.
Ochre jellies are yellowish blobs that can slide under doors and through narrow cracks in pursuit of creatures to devour. They have enough bestial cunning to avoid large groups of enemies.

An ochre jelly follows at a safe distance as it pursues its meal. Its digestive enzymes dissolve flesh quickly but have no effect on other substances such as bone, wood, and metal.
The Odakyr Rites are a set of magical rituals that produce [[Karrnathi undead]]. The Rites work only when performed on the remains of a soldier slain in battle, and only in [[manifest zone]]s tied to the [[plane]] of [[Mabar]]. They were developed during the [[Last War]] after years of research at [[Fort Bones]] by the [[necromancer|necromancy]] Gyrnar Shult and the [[Vol|Blood of Vol]] high priest [[Malevanor]], when he was still a living person. 

The [[Karrnathi undead]] these rituals create are tremendously efficient
solders, imbued with a malign intelligence and purpose. A normal [[zombie]] requires some sort of necromancer to sustain and command it, but the sentient Karrnathi undead can integrate with any unit. One of the few limitations of the undead derives
from their utter lack of mercy or compassion. Left on
its own, a Karrnathi skeleton will slaughter all opposing
forces—soldiers, civilians, even children. A commander
must exercise close control if he wants his undead to
leave anyone alive.

Gyrnar Shult believed that the [[Karrnathi undead]]
were animated by the martial spirit of Karrnath
itself. This is why they can be produced only from
the corpses of elite Karrnathi soldiers: an enemy
corpse lacks the connection to Karrnath, while a
fallen farmer has no bond to war. However, the [[Kind|Corpse Collectors]]
fears that the undead aren't animated by the soul of
Karrnath, but rather by an aspect of [[Mabar]] itself—that
the combat styles of the undead might be those of
the [[dark fiend|yugoloth]]s of Mabar. Over the years, he has felt
a certain malevolence in his skeletal creations that he
can't explain, not to mention their love of slaughter.
He has also considered the possibility that they are
touched by the spirits of the [[Qabalrin]] [[elves|elf]] of ancient [[Xen'drik]]. The Kind hasn't found any proof for these
theories, but they haunt his dreams.
Ogres are as lazy of mind as they are strong of body. They live by raiding, scavenging, and killing for food and pleasure. The average adult specimen stands between 9 and 10 feet tall and weighs close to a thousand pounds.

!! Ogres in Droaam

Physically powerful but somewhat dimwitted, ogres pursue simple pleasures: food, drink,
and crushing small creatures that annoy them. The warlords of [[Droaam]] charm them with [[harpy]] song and fill them with [[grist]], then set
them to work lifting heavy things and smashing things that need
to be smashed. They're often recruited in local “brute squads”
and serve as basic shock troopers in the armies of Droaam.

Ogres fall well below human standards on intelligence and wisdom; not only do they struggle with rational thought, they're impulsive and relatively weak-willed, and in many ways can be treated as mighty children. While physically powerful,
they're easily swayed by strong personalities and compelling
stories. They are very emotional—though they can shift between
emotions rapidly—and love stories and songs, even if stories
need to be kept simple. It's not uncommon for an ogre to develop
a deep attachment to its favorite [[harpy]] or [[changeling]] storyteller.

The skullcrusher ogres of [[Maenya's Fist]] ([[creature tier]] ''3'') are a different
subspecies from common ogres. They are devoted to their
duties and don't socialize with other creatures. They are shrewd and proficient, and
typically wear plate armor and wield sophisticated weapons. Skullcrushers are well trained and act with military discipline.

!! Ogres of Sarlona

[[Sarlona]] might be known as the cradle of [[human]]ity, but
it is also the birthplace of the ogre race. The ogres of
[[Khorvaire]] are the descendants of settlers who crossed the
[[Barren Sea]] long ago, though this knowledge lives on only
in the tales of [[oni]]. Once, the ogres of [[Borunan]]
were a proud warrior culture, and their [[oni]] were
mighty creatures spoken of in song and story. Had the
ogres ever sought to conquer humanity, the history of
Sarlona might have been quite different. But the ogres
considered humans unworthy foes. This overconfidence
was their undoing, and in the last days of the [[Sundering]],
the [[Inspired]] unified the human kingdoms against this
army of monsters.

Today the ogres are a subdued populace. Most are
not allowed to even touch weapons; they are miners and
laborers, and their immense strength is used to haul
stone and metal for the [[hanbalani alta]]s. Not the brightest of
creatures, most ogres have accepted the philosophy of the
Inspired, and they live lives of happy slavery, dreaming
of attaining humanity in the next life. 

The majority of the ogres on Sarlona
are concentrated in the province of [[Borunan]] in Riedra.
However, ogres can be found throughout Riedra, serving
as laborers and occasionally as soldiers. A few ogres can
be found in [[Syrkarn]], but they are rarely seen in [[Adar]] or
the [[Tashana Tundra]]. 

Beyond [[Riedra]], most of the ogres of Sarlona are
simple folk, more interested in solitude and survival than
in war. However, there is a movement within Riedra that
seeks to rekindle the martial spirit of old. This force is
known as the [[Horned Shadow]].
[[Riedra]] built its empire on the foundation of a dozen shattered nations following a period known as the [[Sundering]]. Scholars consider the loss of these nations to be a tragedy... except for Ohr Kaluun. The lords of this ancient kingdom were driven by deep paranoia and an all-consuming thirst for power. The sages of Ohr Kaluun studied the darkest paths of magic and bargained with [[fiend]]s and other foul creatures. They warped their bodies through mystical rituals and pacts, creating the first [[skulk]]s and [[tiefling]] bloodlines, and perhaps even the first [[changeling]]s. Ohr Kaluun was ultimately consumed by the feuds of its paranoid mage-lords and the crusading legions of its neighbors, fueled by the dream manipulation of the [[quori]]. Today, it is a shunned region, haunted and cursed. Dark secrets and great treasures remain in the vast war labyrinths of Ohr Kaluun, but [[fiend]]s, [[ward|abjuration]]s, and far deadlier threats linger in this fallen kingdom. 

The [[Inspired]] wield considerable influence on Ohr Kel, the largest island of the chain, while many of the smaller islands are uncivilized by the standards of the
Inspired. These places are home to smugglers, monsters, and the dissident group known as the [[Heirs of Ohr Kaluun]]. Adventurers seeking to enter Riedra by stealth
might be able to find assistance at a smuggler's port. However, the Riedran military is always hunting for these criminals, and safe havens frequently move about.

!! War Mazes

The people of Ohr Kaluun were obsessed with protecting their dark secrets from the world. Engaged in endless struggles within and outside Ohr Kaluun, the
Kaluunite [[wizard]]s devoted vast material and magical
resources to their labyrinthine fortresses. Although the
mazes couldn't save the Kaluunites from the cunning of
the [[Inspired]], many of these wondrous edifices remain,
testaments to the power and skill of their builders. Ancient
treasures and hideous dangers, all created by human
magicians, still wait within the remaining war mazes.

For someone who knows its keys, a war maze is a
sanctuary, but to others, all war mazes are deathtraps.
Walls and doors are reinforced with magical hardening, and most
war mazes are shielded against [[scrying]] and teleportation.
Ancient restless spirits and constructs roam many war
mazes. Today, [[skulk]]s, smugglers, and other rebels have
taken shelter in these crumbling wonders. 
This sticky black unguent is thick and heavy in the container, but it flows quickly when poured. It is extremely slippery, a magically-enhanced property that persists for up to eight hours. There is enough oil to cover a 10-foot-diameter circle on the ground, or cover a human-sized creature.
A creature that makes physical contact with this poison and can't resist its effects falls unconscious for up to 24 hours. The creature wakes up if it takes damage.

Grim specters of death, oinoloths bring pestilence wherever they go. They have a hunched humanoid body with a head resembling that of a ram. Their skin is covered with patches of wool surrounding foaming boils and blisters. 
! The Sentinel

''Color:'' Pale orange<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Sentinel|Mark of Sentinel]]<br/>
''Associated Plane:'' [[Lamannia]]

To the naked eye, the orange disk of Olarune seems to have a slight fringe that vaguely resembles the rim of a shield. The [[druid]]s say that those born when Olarune is ascendant have a strong bond to community and to order, and a natural desire to protect others; superstition holds that more paladins are born in this month than any other. Scattered [[lycanthrope]]s, especially weretigers, revere Olarune as a sort of demigoddess-protector.
[[Sharn]] was built on the foundations of an older city,
which was itself built atop [[goblin|goblinoid]] ruins. This old city was
destroyed by dark magic, courtesy of the elemental powers of the infamous [[Halas Tarkanan]] and his consort, the
[[Lady of the Plague]]. It is said that vile powers still linger
in these ruins, and for this reason King [[Galifar I|Galifar ir'Wynarn]] had all
the passages to this undercity sealed with gates of metal
and magic. These portals remain sealed today, and it's
illegal to tamper with them. But it's generally assumed
that many treasures are hidden in the ruins of Old
Sharn, along with untold secrets of the past.

No one knows exactly what lurks in Old Sharn. The
ruins could contain ghosts or other [[undead]], the vengeful
spirits of the [[aberrant-marked|aberrant dragonmark]] people who took refuge
in the fallen city. In olden times, the Lady of the Plague
had power over vermin and disease, and a fanciful
tale says that even today the undercity is inhabited by
swarms of sentient rats and beetles. 
''District Type: ''Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor residences
(220), upscale trades (2), average trades (3), poor
trades (5)<br/>
''First Impression: ''Over the course of centuries, old
fortresses and garrison halls have been converted into
apartment buildings and shelters for the poor.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Malleon's Gate]] (northeast); [[Gate of Gold]] (east); [[Precarious]] (southwest); [[Callestan]] (south); [[Broken Arch]] (above)

Once, [[Sharn]]'s [[City Watch|Sharn Watch]] operated out of a great set
of towers and buildings known as the Keep, located
in [[Lower Dura]]. When the City Watch spread out to
[[Daggerwatch]] and the new garrisons springing up
in other, higher-level districts, a number of land
barons bought up the old property and converted
it into housing. Now the place is called Oldkeep, in
memory of its more glorious occupants.

Most of the residents of Oldkeep work in [[Precarious]], the [[Stores]], or in [[Middle Dura]]. Many work for businesses with ties to the [[Boromar Clan]].
Recently, bands of monsters with ties to [[Droaam]]
have begun making surgical strikes in the district—thugs or burglars appear, hit a target with ties to the
Boromars, and vanish into the [[Cogs]]. The Boromar
Clan has hired [[Deneith]] mercenaries to patrol the
district, but these guards can't be everywhere at
once. While they can handle a few [[gnoll]]s or even an
[[ogre]], these mercenaries have a difficult time dealing
with [[medusa]]s or [[troll]]s.

All trades available in this district are illegal
in nature. While most criminals do business in
other districts, it may be possible to find a fence, a
burglar, or a source for [[dreamlily]] or [[dragon's blood]]
in Oldkeep.
Olladra is the Sovereign of Feast and Fortune. She is the giver of joy and the granter of luck, patron to entertainers, gamblers, and anyone who takes a chance. Her symbols include a domino or a [[black dragon]].
This restaurant, one of the
brightest spots in [[Dura]], is considered to be one of
the finest restaurants in the [[city|Sharn]]. In addition to a few
private rooms, it features a vast central hall suitable
for enormous parties or feasts. The menu consists
of traditional [[Brelish|Breland]] cuisine, but choices are limited. The master chef, Halean Doss, chooses a single menu each night.
However, quantities are generous and the quality of
the food is outstanding.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Olladra]]), average lodging (44),
poor lodging (50), average food (45), poor food
(80), poor trades (40), poor services (40), poor
residences (80)<br/>
''First Impression:'' Conversation wafts from the
open doors of a half-dozen taverns and restaurants,
and the tantalizing aroma of food fills the air.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[Boldrei's Hearth]] (northeast); [[Vallia Towers]] (northwest); [[Granite Halls]] (southwest); [[Torchfire]] (bridge, south); [[Sword Point]] (above)

The restaurants and taverns of Olladra's Kitchen
are neither the dens of drunken revelry common in
other lower wards nor the high-class, high-priced
eateries of [[Upper Central]] or [[Skyway]]. They are generally subdued, specialty restaurants and taverns that
serve as meeting places for artists and ideologues. 

!! Noteworthy Locations

* [[Ellfate's Eatery]]. A small restaurant specializing in omelets with a bohemian clientele.
Onatar is the Sovereign of Fire and Forge. He guides both mundane smiths and [[artificer]]s, inspiring anyone who performs an act of creation. His symbols include a crossed hammer and tongs or a [[brass dragon]].
Light emitted from this lantern can only been seen by the attuned creature.
Oni look like demonic [[ogre]]s with blue or green skin, dark hair, and a pair of short ivory horns protruding from their foreheads. Their eyes are dark with strikingly white pupils, and their teeth and claws are jet black. 

Oni are sometimes called "ogre mages" because of their innate magical ability, but are at most distantly related to true [[ogre]]s. By the light of day, an oni hides its true form with shapeshifting magic, gaining the trust of those it intends to betray when darkness descends. These creatures can change their size as well as their shape, appearing as [[humanoid]]s as they pass through towns, pretending to be travelers, woodcutters, or frontier folk. In such a form, an oni takes stock of the selection of humanoids in a settlement and devises ways to abduct and devour some of them.

The origins of the oni are a mystery. Some people
believe oni are the offspring of [[hag]]s and [[giant]]s, and that some
are children or grandchildren of the [[Daughters of Sora Kell]] themselves.
Other stories claim there's a kingdom of oni in [[Khyber]],
likely a demiplane, and that the oni of the surface world are
criminals banished from this wondrous realm. While rare, their
intelligence and power make them valuable to the Daughters in [[Droaam]]. The oni [[Tzaryen Rrac]] is a trusted warlord, while other oni serve as commanders in [[Maenya's Fist]], inquisitors in [[Katra's Voice]], or administrators throughout the realm.

Oni are cunning and curious. Some serve the Daughters in
exchange for treasure, others for arcane lore, while some are
simply content with the power they hold as agents of the hags.
You could tie their broader goals to their true origin—if the
oni are exiles from a hidden kingdom, they might be building
power to reclaim that kingdom. If they are the children of
the Daughters, they could be competing with one another to
impress their parent, and generally engaging in sibling rivalry. 

!! Oni of Sarlona

The [[Path of Inspiration]] teaches that the oniis a vessel for a lesser //altavar//. That fact
explains the oni's mystical powers and fiendish appearance. According to the doctrine, the ogre mage has been crafted as a prison for the [[fiend]] within; if the oni lives a noble life of service to the [[Inspired]], they can actually redeem the evil spirit trapped within them. Such a tremendous victory surely earns the ogre mage great
advancement in their next life. Of course, the evil spirit
tempts the oni, encouraging them to use their power
for personal gain or even trying to get them to turn against
the [[Inspired]]. To do so might bring power in this life, but
it forever dooms the soul. Regardless of conditioning,
oni are constantly watched by the [[Thousand Eyes]],
the [[Inspired]], and by their own kind.

The people of [[Sarlona]] consider [[oni]] and [[ogre]]s to be of one race, despite the fact that they cannot interbreed. The majority of oni and ogres in Sarlona are concentrated in the [[Riedra]]n province of [[Borunan]]. They make up a small percentage of the population, but are more common in Borunan than they are anywhere in [[Khorvaire]]. Young oni undergo intense indoctrination to ensure they become weapons of the [[Inspired]], and they usually serve in Riedra's [[Horned Guard]] or [[Savage Legion|Taskaan Legion]]. Dissident oni who have overcome this indoctrination can be found among the [[Horned Shadow]].
Oozes are gelatinous creatures that rarely have a fixed shape. They are mostly subterranean, dwelling in caves and dungeons and feeding on refuse, carrion, or creatures unlucky enough to get in their way. [[Black pudding|black pudding]]s and [[gelatinous cube]]s are among the most recognizable oozes.

Oozes thrive in the dark, shunning areas of bright light and extreme temperatures. They flow through the damp underground, feeding on any creature or object that can be dissolved, slinking along the ground, dripping from walls and ceilings, spreading across the edges of underground pools, and squeezing through cracks.

The first warning an adventurer receives of an ooze's presence is often the searing pain of its acidic touch. Oozes are drawn to movement and warmth. Organic material nourishes them, and when prey is scarce they feed on grime, fungus, and offal. Veteran explorers know that an immaculately clean passageway is a likely sign that an ooze lairs nearby.

An ooze kills its prey slowly. Some varieties, such as black puddings and gelatinous cubes, engulf creatures to prevent escape. The only upside of this torturous death is that a victim's comrades can come to the rescue before it is too late.

Since not every ooze digests every type of substance, some have coins, metal gear, bones, and other debris suspended within their quivering bodies. A slain ooze can be a rich source of treasure for its killers.

Oozes are thought to be the creation of the [[daelkyr]] [[Kyrzin]].

!! Types of Ooze

<<list-links-article "[tag{!!title}sort[title]]">>
The Open Sky is the vast blue expanse from which the Azure
Sky of [[Syrania]] takes its name. The clear, bright, sunless sky shows no
signs of passing time; the moon [[Therendor]] can be seen, but it
doesn't move or have phases. Despite the Open Sky's seemingly
infinite space, it wraps around on itself, effectively making it
a 300-mile cube. So while it takes a significant time to travel
between the farthest points, it is possible. There are no native
threats in the Open Sky, and all visitors to Syrania have the
ability to fly; the catch is knowing where to go, as there are
hundreds of spires.
The local commander of the [[Harmonious Shield]] in [[Dar Myan]] is
in direct control of any response to unwanted visitors. A
large number of officers serve under Orakhun, and his
death could cause some disarray. 
This item is a hollow, 5-inch-diameter orb that weighs 5 pounds. Its outer shell is composed of notched bronze rings, which can be turned so that the notches line up. Aligning the notches causes the orb to gong loudly until the notches are no longer aligned. The sounds are spaced 6 seconds apart and can be heard out to a range of 600 feet.
An //orb of shielding// is a polished, spherical chunk of crystal or stone aligned to one of the [[plane]]s of existence. Often the stone will have been quarried from within a [[manifest zone]]. Spellcasters can use this orb as a spellcasting focus. While holding the orb, one can withstand the destructive effects associated with that plane. [[Fernia]]n basalt makes one more resistant to fire; [[Mabar]]an obsidian allows one to withstand necrotic energy; [[Xorian|Xoriat]] marble makes one more psychically resilient; and so on.
This orb of granite is about the size of an adult human's fist. The [[giant]] rune for "stone" appears on it in the form of crystalline veins that run across the surface. The orb has the following properties, which work only while it's on your person.

* You can channel the orb's magic to hold your ground. For the next minute or until you move any distance, you have advantage on all attempts to resist effects that force you to move.
* You can't be petrified.
* Once every few hours, you can cast [[meld into stone]].
Thousands of years before [[human]]s came to [[Khorvaire]],
the land was dominated by wild orcs and [[goblinoid]]s of
the [[Dhakaan]]i Empire. The goblin empire scattered the
orc tribes and forced them into harsh and unwanted
lands: the swamps of the [[Shadow Marches]], the [[Demon Wastes]], and the depths of the [[Ironroot Mountains]]. But
in the Shadow Marches, the orcs learned the secrets
of [[druidic magic|primal magic]] from the [[dragon]] [[Vvaraak]], becoming
the first of the [[Gatekeepers]]. With the invasion of the
alien [[daelkyr]] from [[Xoriat]], the Gatekeepers put the
dragon's teaching to the test, creating magical seals
that bound the daelkyr in the depths of [[Khyber]] and protected [[Eberron]] against further incursion from the plane of madness.

Three prominent groups of orcs have survived into the
present age:

* The [[Ghaash'kala]] are servants of the [[Silver Flame]] (which they call Kalok Shash, the "binding flame"), who devote their lives to battling the [[fiend]]s of the [[Demon Wastes]]. [[Humans|human]] from the [[Carrion Tribes]] of the wastes sometimes hear the call of Kalok Shash and join the Ghaash'kala, leading to a significant population of [[half-orc]]s there. 
* The [[Jhorash'tar]] orcs are a perpetual threat in and around the [[Ironroot Mountains]], shaped by their resentment of the [[Mror|Mror Holds]] [[dwarves|dwarf]] who drove them underground. These orcs are isolated from humans, so [[half-orc]]s here are rare.
* The [[Shadow Marches]] holds the largest numbers of orcs and the most significant population of [[half-orc]]s. 

!! Appearance and Longevity

Orcs typically resemble broad, well-built humans with stooped postures, low foreheads, and piggish faces with prominent lower canines that resemble tusks. Their skin tones range from green to dark gray.

Orcs reach adulthood at age 12 and live up to 50 years. 

!! Orcs of the Shadow Marches

The orc [[Gatekeepers]] played a crucial role in defeating
the [[daelkyr]] and binding their evil in [[Khyber]], and their
descendants continue to maintain the ancient seals and
fight [[aberration]]s spawned by the daelkyr's corruption.
However, many orcs succumbed to that same corruption
and embraced the madness of the [[Cults of the Dragon Below]]. Orcs who follow both of these paths continue to
live in the [[Shadow Marches]], and centuries of battles between them have diminished both sides.

[[Humans|human]] settled in the Shadow Marches long ago, and
the first [[half-orc]]s helped to cement the bond between
these outsiders and the native orcs. Certain Marcher
clans contain humans, orcs, and half-orcs in roughly
equal numbers.

When playing an orc or half-orc character from the
[[Shadow Marches]], consider what circumstances brought
you into the wider world. The table below offers some inspiration.

| !<<dr d8>> |!Reason for Leaving |
| 1 |You're associated with the [[Gatekeepers]], and you're on a quest to combat a [[daelkyr]]-related threat beyond the bounds of the Shadow Marches. |
| 2 |House [[Tharashk]] recruited you from the Marches to serve as a mercenary in the [[Last War]]. |
| 3 |You're a simple hunter, but you've decided to seek your fortune or a real challenge in the world beyond the Marches. |
| 4 |Your village was destroyed by monsters from [[Droaam]], so you're looking for a new place in the world. |
| 5 |As a [[cultist of the Dragon Below|Cults of the Dragon Below]], you believe that slaying powerful foes is the only way to earn your passage to the paradise that lies deep within the hollow world. You've ventured beyond the Marches in search of worthy enemies. |
| 6 |Your clan works with House [[Tharashk]], and you've been recruited as a bounty hunter or investigator even though you're not a member of the house. |
| 7 |The leader of your clan committed a great wrong against another clan , which has now sworn to exterminate every last member of your clan. What better time to see the world? |
| 8 |Your work as an investigator has set you upon a trail of mysteries that leads far beyond the Marches. |

!! Orcs of Droaam

Over countless generations of life in the Barrens (now the nation of [[Droaam]]), the
orcs of the region developed two distinct cultures. The larger
of the two are the //Gaa'aram//—Children of Wrath. The Gaa'aram
embraced the chaotic, raiding lifestyle of the Barrens. Where
the [[goblin]]s and [[kobold]]s were often forced into service by more
powerful creatures, the Gaa'aram voluntarily rallied around the
most powerful leaders and served as fierce warriors. To an orc
of the Gaa'aram, who you fight for is less important than the
fact that you fight and fight well. As such, Gaa'aram orcs were
often encountered as raiders; they're the reason for the name of
the [[Orcbone]] fortress that guards the [[Gap of Graywall|Graywall Mountains]]. Gaa'aram orcs can be found in all of the diverse cities of [[Droaam]], and they're usually
passionate supporters both of the [[Daughters of Sora Kell]] and their local warlords.

In the days before Droaam, few people of the [[Five Nations]] had even heard of the smaller of the two cultures, the //Gaa'ran//—Children of Sacrifice. The Gaa'ran orcs are pacifists and farmers—one of the only cultures to farm in the open Barrens. They believe that violence stains the soul—that those whose souls are pure pass beyond [[Dolurrh]], but that killing another forever destroys a piece of your soul. The Gaa'ran held firm
to their beliefs even in the face of torture and death, and over
time it became common for the Barrens chibs (chieftains) to allow Gaa'ran
settlements to stand—with the understanding that the local
raiders would regularly show up and take their produce. While
this was a harsh life, the Gaa'ran have prospered under the
[[Daughters of Sora Kell]]. Though [[grist]] is the primary source of
sustenance in Droaam, the Daughters recognize the value of
agriculture, and Gaa'ran tribes have been given resources and
placed in charge of a number of agricultural projects.

The Gaa'aram and Gaa'ran are both local cultures with no
direct ties to other orcs of [[Eberron]]. Gaa'aram orcs are among
those monstrous mercenaries House [[Tharashk]] has recruited
in [[Droaam]]. The Gaa'ran have a talent for primal magic
that suggests they were once tied to the [[Gatekeepers]] of the
Shadow Marches, but they are not Gatekeepers and don't fight
[[aberration]]s; their interest lies solely in cultivation.
Orcbone Fort in [[Breland]] valiantly attempts to secure the gap
between the [[Graywall Mountains]] and [[Silver Lake]].
Raised to prevent [[Droaam]] raiders from breaching the
borders, Orcbone is a grim fortress with steep walls,
surrounded by churned earth littered with bones.
Since its founding, Orcbone has known little peace.
[[Gaa'aram orc|orc]]s, [[goblin]]s, [[troll]]s, [[ogre]]s, and others spill through the
gap from Droaam and fling themselves at Orcbone’s
walls, repulsed each time by its doughty defenders.
Orcbone holds fast, but soldiers dread assignments
here since there is little respite from the fighting.

See also [[Droaamish History]].
Clan Orgaal is a branch of the ambitious ruling
Clan [[Velderan]] of House [[Tharashk]]. These clans seek to increase [[Tharashk]]’s influence across [[Khorvaire]] and to ensure Velderan’s ultimate dominance within the house. Velderan has no interest in the [[Gatekeepers]] or the [[Cults of the Dragon Below]],
and the clan exploits their squabbles to weaken its
rivals. The ruling clans pay little attention to the small,
[[orc]]-dominated Orgaal, which allows Velderan to use it
for covert activities. Orgaal could employ adventurers
to sow discord among other clans or embark on missions that aid Velderan at the expense of its rivals.

Clan Orgaal has a camp north of [[Zarash'ak]], and they bring goods into the city on the wings of [[wyvern]]s.
Orgalos is an island in the [[Lhazaar Principalities]]. The people of Orgalos have held on to their [[Sarlona]]n heritage from the time of [[Lhazaar]], and speak a unique dialect of the ancient [[Rhiavhaar]] language. Much trade with the nation of Sarlonan nation of [[Riedra]] passes through Orgalos's small port town of [[Piritar]].
In order to attune to this magic item, you must possess the [[Mark of Passage]].

While you wear these boots, you can click the boots' heels together. If you do, the boots double your walking and running speed. If you click your heels together again, you end the effect.

When the boots' property has been used for a total of 10 minutes, the magic ceases to function until they are allowed to recharge overnight.
Orichalcum is a lightweight, strong metal alloy made in [[Xen'drik]] by the [[Sulatar]] [[drow]]. It is very similar to [[mithral]] in many of its material properties, but it is a golden-bronze color rather than silvery. It is also called “firebrass” to the inhabitants of [[Stormreach]].
''Leader:'' [[Kwanti d'Orien]] <br/>
''Headquarters:'' [[Journey's Home]] ([[Passage]], [[Aundair]]) <br/>
''Dragonmark:'' [[Mark of Passage]]

//We get things where they need to go. It doesn't matter if it's a letter, a person, or a hundred tons of steel. Whether we have to cross mountains, rivers, or the [[Mourn­land]] itself, Orien finds a way.//

<div align="right">—Bali d'Orien, veteran courier</div>

The House of Passage manages land transportation.
The [[lightning rail]] is the house's most dramatic tool, but
Orien also runs caravans and coaches across the length
of [[Khorvaire]]. [[Dragonshard|dragonshard]] focus items ensure that
the fastest vehicles are those driven by heirs with the
[[Mark of Passage]], but the house also licenses unmarked
teamsters. The Courier's Guild of House Orien delivers
mail and packages and has a branch that handles more
covert and dangerous deliveries.

Orien has dominated transportation for centuries,
but now the house is facing challenges. The [[Mournland]]
is a dramatic obstacle for ground transportation, and
Baron [[Kwanti d'Orien]] has had tremendous difficulty securing funds to rebuild the lightning rail line across the blasted landscape. Indeed, he spends most of his time
away from his headquarters in [[Aundair]], trying to raise
funds for the project while keeping an eye on house
operations. He travels across western [[Khorvaire]] in his
personal lightning rail coach, the Silver Unicorn—a reference to the house's [[unicorn]] emblem.

House Orien's problems don't end with the Mournland, though. The expanding role of [[Lyrandar]] [[airship]]s threatens the house's business. Baron Kwanti would
like to be able to offer more instantaneous transportation, but long-distance teleportation is a service only the strongest Orien dragonmarks can provide. So the house
is working with House [[Cannith]] in an effort to unlock
and enhance this gift of the Mark of Passage. Orien
heirs might be caught up in these experiments or in the
rivalry with House Lyrandar. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
//Stone is immortal. It listens. It remembers. It chooses to be still, but anyone who's seen a gargoyle knows it can move whenever it chooses. So respect the stone, for it'll still be here long after you've turned to dust.//
<div align="right">—A cultist of Orlassk</div>

The [[daelkyr]] Orlassk is the master of stone. Orlassk's traditional
cults say that it is the Still Lord who carves out caverns, and
that it is the Voice in the Stone that guides the miner to the ore.
Orlassk can breathe life into stone, as seen in the [[gargoyle]]; but
it can also turn living creatures into stone, and it's thought that
most creatures with this power—[[medusa]]s, [[gorgon]]s, [[basilisk]]s,
[[cockatrice]]s—are its creations. Cults may associate with such
creatures, but they can also venerate stone itself. Orlassk's
cultists could venerate a sacred stone that whispers when
it's fed fresh blood, or maintain a deep chamber where all
the secret knowledge of the cult is engraved into the walls.

Orlassk is one of the lesser known daelkyr. Its cults are
found where people live around stone, in high mountains and
deep caves. Orlassk's cults often form around those
who work with stone: masons, sculptors, stone [[giant]]s, or even
just people who dwell in stone towers. When the walls start
whispering to you, Orlassk has found you.

Orlassk is thought to have feuds with other daelkyr. Orlassk
and [[Kyrzin]] are fundamentally opposed: solid against liquid,
static against change. Some scholars suggest that Orlassk's
creation of medusas and basilisks is a blow against [[Belashyrra]],
as seeing these creatures is what triggers their deadly power.

Orlassk's citadel is carved into the body of a gargantuan gargoyle that roams the chasms of [[Khyber]].
The icy island of Orthoss in the [[Lhazaar Principalities]] is a haven for the [[Khoravar|half-elf]], and half-elves from across [[Khorvaire]] have found their way to the town of [[Blackrock]]. Notably, the Lhazaar lifestyle has attracted a number of members of House [[Medani]] and House [[Lyrandar]] over the centuries—young rebels seeking an escape from the smothering traditions of their [[houses|dragonmarked house]]. Their blood has been spread across the island, and it has been spread quite thin—but occasionally a child of Orthoss develops a [[dragonmark]].

The town of [[Blackrock]] is the seat of power of the [[Wind Whisperers]].
Ostavar is an island in the [[Lhazaar Principalities]].
''District Type:'' Apartment townhomes<br/>
''Buildings:'' Shrine ([[Path of Light]]), exotic trades
(4), average food (3), average services (1), average
residences (80), poor residences (440)<br/>
''First Impression:'' The spires of over a dozen identical towers rise to the sky. While the towers are drab
gray granite, bits of color are scattered about—an
occasional window of stained glass, a small hanging
garden, a tapestry of [[Riedran|Riedra]] design.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Highwater]] (northeast); [[Redstone]] (east); [[Daggerwatch]] (south); [[Underlook]] (below)

Built with the fortune of the [[ir'Tain family]], Overlook
is one of the largest residential districts in [[Sharn]].
The remarkably bland stonework creates a vast, gray
vista that can be disconcerting. The ir'Tains were
interested in getting the most for their gold, however,
and aesthetics were not a concern. While the townhouse apartments in Overlook are not as pleasant as
those in [[Lower Northedge]], they are inexpensive and
far safer than the wards that lie below. Plus, the area
offers breathtaking views of the [[Dagger River]] and the
surrounding countryside.

Over the centuries, Overlook has developed a
significant [[Adaran|Adarans]] and [[kalashtar]] community, and
the district draws most of the kalashtar who come to
[[Sharn]]. A variety of businesses catering to the Adarans hide in the depths of Overlook: a crystalworker,
a school of meditation and martial arts, a tailor
specializing in Adaran fashions, and a few restaurants serving Adaran cuisine. Few people outside
the community know about these places, and unless
a character is recommended to one of these businesses by an Adaran, they must do some work to find one of them.

There are no inns in Overlook, but the [[Adarans]]
take care of their own. [[Kalashtar|kalashtar]] or Adarans who
come to Overlook can usually find shelter with one
of the local families, although they are expected to
behave graciously and in some way to repay the generosity of the host; however, the Adarans value news
or wisdom as much as gold.

While the Adarans add exotic color to Overlook, they only account for a third of the population
of the district. Most of the other inhabitants are
[[human]]s, [[halfling]]s, and [[dwarves|dwarf]] who work in [[Upper|Upper Dura]] or [[Middle Dura]]. 

!! Noteworthy Locations

* The [[Gathering Light]]. A community center for [[Adar]]an immigrants.
* [[Hilatashka]]. A restaurant specializing in Adaran vegetarian cuisine.
* The [[Shrine of il-Yannah]]. A shrine of the [[Path of Light]].
In the first days of the world, the children of [[Khyber]] rose from the darkness to reign over [[Eberron]]. The greatest among them were the overlords, who held dominion over a world of fear, war, and death until the children of Eberron and Siberys rose up against them. Armies of [[dragon]]s fought against the [[fiend]]s of Khyber. And though the overlords couldn't be destroyed, the [[couatl]] sacrificed their lives to build a prison of celestial light: a silver flame that bound the overlords in Khyber once more. These bonds have held for countless generations, but the overlords still yearn to break free and reclaim the world above.

As long as the overlords are bound by the [[Silver Flame]], they can't physically manifest in the world. But each overlord embodies a particular aspect of evil, which grows in strength as their servants—the fiends known as the [[Lords of Dust]]—scheme to unleash their ancient masters. The overlords gain strength when mortals embrace the dark paths laid down for them. And as they grow stronger, they gain more influence.

Some thirty overlords are bound in Khyber, including [[Rak Tulkhesh]] and [[Sul Khatesh]], both of whom remain imprisoned and can't take physical form.

!! Known Overlords

<<list-links-article "[tag{!!title}sort[title]]">>
An owlbear's screech echoes through dark valleys and benighted forests, piercing the quiet night to announce the death of its prey. Feathers cover the thick, shaggy coat of its bearlike body, and the limpid pupils of its great round eyes stare furiously from its owlish head.

The owlbear's reputation for ferocity, aggression, stubbornness, and sheer ill temper makes it one of the most feared predators of the wild. There is little, if anything, that a hungry owlbear fears. Even monsters that outmatch an owlbear in size and strength avoid tangling with it, for this creature cares nothing about a foe's superior strength as it attacks without provocation.

An owlbear emerges from its den around sunset and hunts into the darkest hours of the night, hooting or screeching to declare its territory, to search for a mate, or to flush prey into its hunting grounds. These are typically forests familiar to the owlbear, and dense enough to limit its quarry's escape routes.

An owlbear makes its den in a cave or ruin littered with the bones of its prey. It drags partially devoured kills back to its den, storing portions of the carcass among the surrounding rocks, bushes, and trees. The scent of blood and rotting flesh hangs heavy near an owlbear's lair, attracting scavengers and thus luring more prey.

Owlbears hunt alone or in mated pairs. If quarry is plentiful, a family of owlbears might remain together for longer than is required to rear offspring. Otherwise, they part ways as soon as the young are ready to hunt.

!! Owlbears as Companions

Although they are more intelligent than most animals, owlbears are difficult to tame. However, with enough time, food, and luck, an intelligent creature can train an owlbear to recognize it as a master, making it an unflinching guard or a fast and hardy mount. People of remote frontier settlements have even succeeded at racing owlbears, but spectators bet as often on which owlbear will attack its handler as they do on which will reach the finish line first.

!! Owlbear Origins

The origins of the owlbear are contested by scholars. Some say the creature is simply a magebreeding experiment gone wrong by House [[Vadalis]], a theory which the [[dragonmarked house]] denies. Others point out its proximity to areas of [[fey]] influence, such as [[Thelanis]] [[manifest zone]]s, suggesting perhaps this vicious creature originated in the [[Endless Weald]]. Another possible origin is the influence of [[Kythri]], the Churning Chaos, which is thought to have spawned other similar [[monstrosities|monstrosity]] such as the [[chimera]].
[[Dyrrn]]'s prison [[demiplane]] is the Palace of Sinew, a horrid site shaped from the leftover flesh and bones of the [[daelkyr]]'s sculpting. The walls of the palace undulate as air flows through them, as if the space were breathing. Dyrrn can invoke the ambient magic in this place to corrupt creatures native to Eberron, or drain their intellect until their brain shuts down.
The grandest city in the [[Moonlit Vale]] of [[Thelanis]] is the Palace of the
Moon. Its towers are built into the trunks of four vast trees,
each one reflecting the influence of a particular season.
The Summer Tree is in full bloom, while the Winter Tree
is withered and bare. The four seasons are factions among
the [[fey]] of the [[Moon Court]], and those who dwell within the
palace live within the tree of their season. The palace is
full of endless intrigues, and envoys negotiate alliances
with the [[feyspire]]s and the [[anchor barons|archfey]]. To mortals, many
of these intrigues would seem trivial and strange, but for
the [[fey]], they determine the ruling season, which sets the
tone for the layer. At the apex of each season—perhaps a
strangely arbitrary declaration in a realm with such a casual
relationship to time—the fey of the ruling season host a
grand revel, which draws [[archfey]] from all throughout the
[[plane]]; this is a moment when intrigues bloom and stories are
shaped, a time for duels and grand declarations.
Paladins are holy warriors and casters of [[divine magic]] who are called to uphold justice and righteousness, as interpreted through the lens of their particular [[faith|religion]]. They do not need to perform religious rituals to perform miraculous deeds like the [[cleric]]; their power is rooted in their convictions and commitment to their divine cause. 

Paladins wield the power to heal the sick and injured, to smite
the wicked and the [[undead]], and to protect the innocent
and those who join them in the fight for justice. 
A creature that ingests this poison and can't resist its effects takes a small amount of poison damage and is poisoned for 1-3 weeks, suffering this poison damage each day, which can't be healed until the affliction ends.
This ancient [[Dhakaan]]i city was one
of the centers of imperial [[goblin]] power before it was
destroyed by the [[daelkyr]]. Over the centuries, [[gnome]]s
and [[kobold]]s have explored the ruins, but some believe
that its greatest secrets still lie hidden within. A powerful priest of the [[Dragon Below|Cults of the Dragon Below]] has recently returned to Paluur Draal, and whispered rumors speak of the vile relic he plans to seize from the darkness there.
A city with
hundreds of thousands of residents
keeps its healers busy, and House
[[Jorasco]] has several hospitals scattered
throughout the [[City of Towers|Sharn]]. The
grandest of all is in the [[Dragon Towers]]
district. Those in need can find accomplished
ritual healers there, including those
capable of raising the dead and
removing grievous afflictions. Healers at the
Panaceum are also familiar with many
of the exotic diseases and poisons brought back
from [[Xen'drik]].
In the grand tower of the Panopticon, a host of [[immortal]]s
monitor events occurring across [[Eberron]]'s [[plane]]s. Countless
[[modron]]s observe [[crystal ball]]s. There are chambers in which
[[angel]]s and [[devil]]s stand around wide scrying pools, replaying
recent events. And in the highest chamber of the Panopticon,
twelve [[solar]]s—with one seat empty—contemplate the events
occurring in the planes they are bound to and wait to be
summoned by the authorities of those planes.

The Panopticon is larger than the entire city of [[Sharn]].
Different sections are devoted to each of the planes, and
some immortals have spent countless years monitoring a
particular location or creature. It holds the most powerful
and sophisticated scrying network in existence, dwarfing the
capabilities of even the [[dragon]]s of [[Argonnessen]]. However, this
system is not intended to benefit mortals. Adventurers must
have an exceptional reason to secure a travel pass allowing
admittance to the Panopticon, and the immortals who work
there are not inclined to answer questions.
While you wear these bedraggled brown cotton pants, you can cast the [[levitate]] spell on yourself at will, even if it is a bit uncomfortable.

<<<
{{levitate}}
<<<
After you write a message of fifty words or fewer on this magic sheet of parchment and speak a creature's name, the parchment magically folds into a tiny paper bird and flies to the recipient whose name you uttered. The recipient must be on the same [[plane]] of existence as you, otherwise the bird turns into ash as it takes flight.

It travels to within 5 feet of its intended recipient by the most direct route, whereupon it turns into a nonmagical and inanimate sheet of parchment that can be unfolded only by the intended recipient. If the bird is damaged or immobilized, it turns into ash.

Paper birds usually come in small, flat boxes containing <<dr "1d6 + 3">> sheets of the parchment.
The Paqaa Mountains in [[Sarlona]] stretch from the [[Tashana Tundra]] south through the [[Riedra]]n provinces of [[Dor Maleer]] and [[Nulakesh]]. The [[Riedrans]] call these mountains the ''Frostblades''; Paqaa is the [[Akiak]] name, and the [[Inspired]] intend on wiping every trace of the [[dwarves|dwarf]] from their ancestral home, including the mountains' indigenous name.
This cloak is lightweight and billowy, made of white silk woven with dove feathers. The hem is embroidered with silver wind imagery.

The user can slip their arms into loops inside the cloak and leap from high places, gliding efficiently to safety. If the user is skilled, they can catch updrafts and glide for huge distances. If the user takes an accidental fall, this cloak will parachute out and deliver them gently to the ground (as a [[ring of feather falling]]).
This item is a sheet of parchment with a magical sigil in
the center. You can press it against another sheet of parchment and speak a command word to cause it to become an identical copy of that parchment. It copies any writing and stains but doesn't duplicate magical effects. Once you have used this property, the parchment of facsimile becomes nonmagical. 
Parliament Hall dominates
[[Wroat]]’s southern banks. The building serves the [[legislature|Breland Parliament]], providing accommodations, offices, and
meeting halls for members of both chambers. The
wall dividing the two chambers can be removed
when both chambers must vote on state issues of
highest import.
After rolling dice, if your highest die is a 4 or 5, that's a partial success; you do what you were trying to do, but there are [[consequence]]s, such as [[stress]], reduced effect, or a complication.
[[Aundair]]’s population has always been more heavily concentrated in the east, but Passage is a notable
exception. Situated on [[Lake Galifar]]’s shores, it is the
last major city before Aundair gives way to the [[Eldeen Reaches]]. Passage owes its booming growth and prosperity to House [[Orien]], which has a great [[enclave]] in
the city. Indeed, the [[dragonmark]]ed members control
the city’s government. 

People arrive in the city from
all over the continent thanks to the [[lightning rail]]
repair depot, which maintains most rail carts in service throughout the [[Five Nations]]. Passage is also the
door to the Eldeen Reaches—through the city flow produce and grain from the rich farmland to the
west, while finished materials are shipped out from
[[Fairhaven]] and elsewhere to the east.
A passage appears at a point of your choice that you can see on a wooden, plaster, or stone surface (such as a wall, a ceiling, or a floor) within 30 feet, and lasts for up to 1 hour. You choose the opening's dimensions: up to 5 feet wide, 8 feet tall, and 20 feet deep. The passage creates no instability in a structure surrounding it.

When the opening disappears, any creatures or objects still in the passage created by the spell are safely ejected to an unoccupied space nearest to the surface on which you cast the spell.
The Path of Inspiration is the prescribed faith of the
[[Riedra]]n people, and the [[Inspired]] form the pinnacle of
that faith's mortal hierarchy. However, in contrast to the
half-whispered rumors that circulate around Riedran
outposts in [[Khorvaire]], the Inspired are only the emissaries of this faith, not its focus. Instead, the lords of [[Riedra]] are seen as vessels of the great spirits, known as
//il-altas// in the [[quori]] tongue. These are mortals ascended
to a higher state of being—a state to which all who follow
the Path of Inspiration aspire.

To Khorvairian worshipers of the [[Sovereign Host]],
the Path of Inspiration and its tight control of social
order might bear more than a passing resemblance to
the Church of the [[Silver Flame]], though followers of that
latter religion find little cause for comparison. For followers of the Path of Inspiration, the Silver Flame and the Sovereign Host are nearly the same. [[Riedrans]] believe
the faiths of other cultures all worship dark spirits, or
//altavars//—[[fiend]]s that corrupt all about them for the sake
of power, be it material, arcane, or divine.

The massive monoliths ([[hanbalani alta]]s, or "sanctuaries for the soul") that dot the [[Sarlona]]n landscape are the most overt symbols of the Path of Inspiration. To the
[[Riedrans]] who build the monoliths, they are temporary resting places for the souls of the dead—tombs that prepare the dead for movement into the next life. Those who
know the [[Inspired]] understand a much darker truth.

!! Social Hierarchy of Humanoids

Under the precepts of the Path of Inspiration, the races of [[Sarlona]] are each seen
to occupy a specific niche. At the top of the social order
are the [[Inspired]]—beings blessed by grace and as close to
enlightenment as mortals can be. Beneath them are the
[[Chosen]], with Riedran [[human]]s below them. The Path of
Inspiration marks all nonhuman races by their degree
of spiritual evolution, and [[Riedrans]] accept this. Thus,
[[ogre]]s and [[shifter]]s are subhuman, while [[changeling]]s are
acknowledged as superior and singularly blessed.

!! The Path and the Quori

No [[Inspired]] views the Path of Inspiration as a true religion; it is merely a
tool. [[Cleric|cleric]]s among the [[quori]] worship [[il-Lashtavar]].
Aside from the quori, only the shadow
lines—those [[Chosen]] specifically
raised to serve as vessels for the
agents of the [[Dreaming Dark]]—know
of this faith. 

Although the Path of Inspiration was created as a tool to manipulate the masses,
nothing is inherently evil about the faith.
The divine power of the path is ultimately independent of the Inspired or
the Dreaming Dark. Perhaps spells of
the [[Riedran|Riedrans]] [[cleric]] are drawn from the
magical energy of the [[Dragon Above|Siberys]].
Maybe the power flows from the raw
faith of millions of Riedrans. It could
be that the //il-altas// truly exist, unbeknownst to the Inspired. For most
[[Riedrans]], the Path of Inspiration
is inseparable from their country as
a whole, and the source of its power
is [[Riedra]]. 
* We live in an age of darkness. We must find the path that leads to the light.
* Act with compassion and courage. Each noble act is a step on the path.
* Hone your body and your mind. You are the tool you will use to change reality.

Practiced by many [[kalashtar]], the Path of Light seeks to change reality by first bringing change within, using meditation to focus the mind and athletic discipline to improve the body. The next step brings light into the world, using courage and compassion to banish the darkness in the people around you. Mediate disputes. Extinguish hatred by guiding people out of darkness. Inspire people to be better than they are. Even the smallest change is a victory, yet lightbringers—the followers of this path—hope that this is merely a step on a greater journey.

The Path of Light teaches that this age is dominated
by [[il-Lashtavar]], "the great [[darkness that dreams|Dreaming Dark]]." This
force poisons the world and promotes darkness. But all
things change. If enough light can enter the world, it will
lead to a tidal shift: the age of il-Lashtavar will end and
usher in the time of il-Yannah, the great light.

Some followers of this faith believe that meditation
alone is sufficient to change the path of the world, that
merely contemplating the light is sufficient to bring
about the change. Most believe that it is necessary to
take action, but that darkness must fought with light.
Violence is never the answer, and the only way to defeat
evil is to redeem it. Lightbringers seek to inspire those
who live in fear and enlighten those whose evil is driven
by ignorance. The faith has followed this path for over
a thousand years, but now a splinter sect advocates
greater action. These shadow watchers believe that evil
must be fought, that sources of darkness that poison
communities can and should be ruthlessly eliminated.

The Path of Light is taught to the [[kalashtar]] by the
spirits bound to their bloodlines. It is widespread in the
nation of [[Adar]] in distant [[Sarlona]], but in [[Khorvaire]], it is
largely unknown outside kalashtar communities. The
shadow watchers champion a sect born in Khorvaire,
and the elders of Adar have condemned its methods.

If you follow the Path of Light, you must choose your
side. As a lightbringer, you seek to spread hope and
goodwill. As a shadow watcher, you hunt down and eliminate sources of darkness. Which path will you follow? 

!! Symbol

The symbol of the Path of Light is a shard of brilliant
crystal, carried or worn as an amulet. This crystal may
be used as a holy symbol; if it's worn as a necklace, the
priest must place one hand on it to use it as a focus. The
formal garb of a priest includes a headdress with curving horns and points made from a Sarlonan shell-like material called [[sentira]]. 

!! Rites

Physical and mental discipline are important virtues of
the Path of Light. Martial arts and guided meditation become a form of devotion and prayer. A [[kalashtar]] priest
conducts services telepathically, using shrines designed
to amplify psychic abilities and allowing them to share
thoughts and images directly with the congregation. To
an outsider, a service can appear silent and tranquil despite being an ecstatic experience for the faithful. 

!! Temples

The nation of [[Adar]] in [[Sarlona]] is home to vast fortress
monasteries devoted to the Path of Light. In [[Khorvaire]],
a mere handful of shrines appear in cities with large
kalashtar communities. These shrines are calm and
peaceful, the air scented with Sarlonan incense. The
chambers are open, providing space for martial arts.
Labyrinthine patterns engraved on the floors serve as
an aid to meditation, while the walls hold crystals that
focus and amplify the psychic abilities of the priests. 
The largest temple complex devoted to the [[Sovereign Host]] in [[Sharn]], the
Pavilion of the Host consists of a grand open tower
ringed by temples dedicated to each of the nine deities in the pantheon. In the central pavilion, sacrifices offered in major festivals and on important holy
days honor the pantheon as a whole. The ranking
priest in Sharn, High Priest [[Phthaso Mogan]], leads most of these rituals and
sacrifices. Homes for the many clergy working here
occupy several tower levels below the Pavilion. 
This small bead is filled with swirling, purple smoke. You
can throw the bead at a point you can see within 30 feet of you. When it hits a surface, you create the image of an object that is no larger than a 5-foot cube, centered on the pearl. The image can't create any sensory effects. Physical interaction with the image reveals it to be an illusion. If a creature discerns the illusion for what it is, the illusion becomes
faint to it.

The image lasts for 1 hour, until you move more than 30
feet away from the pearl, or until the pearl is picked up.

Once you have used the pearl, it can't be used again until
the next dawn.
While this pearl is on your person, you can speak its command word and recover stress you recently expended on a common- or rare-tier [[spell]]. Once you use the pearl, it can't be used again until the next dawn.
Despite its name, the peasants’ market in [[Taer Valaestas]] is a good source of quality wares from [[Aerenal]] and across [[Khorvaire]]. The market is so named because of the fact that few [[Valenar]] [[elves|elf]] can be bothered to undertake tasks as mundane as shopping, entrusting such jobs to the [[Cyran|Cyre]] peasants and laborers who take responsibility for the elves’ land.
The white winged horses known as pegasi soar through the skies, a vision of grace and majesty. When they touch down on solid ground, they linger only for a moment, drinking from mountain springs and pristine lakes. Any sound or sign of another creature startles them, sending them off to fly once more among the clouds.

Pegasi are native to the plane of [[Syrania]], the Azure Sky.
While House [[Vadalis]] conducts
most of its business in [[Dragon Towers]], the head
of the household has always resided in the Pegasus
Spire in [[Highwater]]. The [[Sharn]] Vadalis have always
enjoyed participating in the [[Race of Eight Winds]]
and the Highwater Wind Guard has always included
members of the family. In addition to serving as the manor for the Vadalis family, Pegasus Spire provides
the stable and training facilities for the [[pegasi|pegasus]] used
in the race. 
This pendant is shaped like a large feline claw, and is etched with geometric designs. It allows the wearer to communicate fluently with all feline creatures. Cats, panthers, lions, and other such felines will behave amicably towards the wearer, and are more likely to aid the wearer when called upon.
This tiny vial contains magic perfume, enough for one use. You can apply the perfume to yourself, and its effect lasts 1 hour. For the duration, you have advantage on charming or persuading affected [[humanoid]]s. Those subjected to the perfume's effect are not aware that they've been influenced by magic.
You are immune to contracting any disease while you wear this pendant. If you are already infected with a disease, the effects of the disease are suppressed while you wear the pendant.
You craft an illusion that takes root in the mind of a creature that you can see within 60 feet. If the target cannot resist the illusion, you create a phantasmal object, creature, or other visible phenomenon of your choice that is no larger than a 10-foot cube and that is perceivable only to the target for up to 1 minute. This spell has no effect on [[undead]] or [[construct]]s.

The phantasm includes sound, temperature, and other stimuli, also evident only to the creature. If the target realizes that the phantasm is an illusion, the spell ends.

While a target is affected by the spell, the target treats the phantasm as if it were real. The target rationalizes any illogical outcomes from interacting with the phantasm. For example, a target attempting to walk across a phantasmal bridge that spans a chasm falls once it steps onto the bridge. If the target survives the fall, it still believes that the bridge exists and comes up with some other explanation for its fall—it was pushed, it slipped, or a strong wind might have knocked it off.

An affected target is so convinced of the phantasm's reality that it can even take damage from the illusion. A phantasm created to appear as a creature can attack the target. Similarly, a phantasm created to appear as fire, a pool of acid, or lava can burn the target. Any damage taken is psychic in nature, but the target perceives the damage as a type appropriate to the illusion.
(requires a missing limb)

This item takes the form of a simple bracelet made from shining black stone, etched with golden runes. When worn just above the cut-off point of a missing limb, the bracelet creates a fully-functioning phantom replacement for the limb. The ghostly appendage functions as normal and feels fully solid (though a bit icy to the touch), even though it appears faintly pale and transparent. 

You can make the limb incorporeal at will, allowing it to pass through solid objects. You can switch it back to solid form at will as well, but not while it is currently occupying the space of a solid object.
''Leader:'' [[Elvinor Elorrenthi d'Phiarlan]] <br/>
''Headquarters:'' the [[Demesnes]] (various)<br/>
''Dragonmark:'' [[Mark of Shadow]]

//We are the shadow—the border between light and darkness. We are not simply spies or assassins. We are agents of balance, and through our dance, we shape the future.//

<div align="right">—Kaleth Shol d'Phiarlan, ghost of the Serpentine Table</div>

[[Elves|elf]] have carried the [[Mark of Shadow]] for thousands of
years. The mark's bearers left [[Aerenal]] after the conflict
that wiped out the [[Mark of Death]] and established House
Phiarlan in [[Khorvaire]]. These elves are expert entertainers, giving them access to all manner of places and secrets. Known to few, there has always been an elite force
of spies and assassins within House Phiarlan. Only special clients—nobles, merchant lords, and the like—have
access to these spies.

Toward the end of the [[Last War]], a bitter feud broke
out between the major families of the house. Known
as the Shadow Schism, it resulted in a split within
Phiarlan—and the foundation of House [[Thuranni]].
House Phiarlan continues to offer entertainment and
espionage in the lands west of the [[Mournland]], while
[[Thuranni]] operates in the eastern lands. As a rule,
Phiarlan elves are the better spies and Thuranni agents
are superior assassins. Thuranni and Phiarlan maintain a peaceful relationship, but rivalries run deep.

The lands of House Phiarlan, known as the [[Demesnes]], are the foremost centers of the arts in the [[Five Nations]], each focusing on a specific artistic tradition:
the written word, movement arts, music, material arts,
and the arts of illusion, puppetry, oratory, and acting.
Baron [[Elvinor Elorrenthi|Elvinor Elorrenthi d'Phiarlan]] leads the house from the last
of those, the [[Demesne of Shadow]], which is located in
[[Sharn]]. The [[hydra]] serves as House Phiarlan's emblem. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
This item functions only for a wielder of the [[Mark of Shadow]]. 

The image projector can be used to record and play back a short scene or illusion. A Shadow mark wielder can either record a 1-minute illusion (as the spell [[lesser illusion]]), or all activity within 10 feet of the projector for 1 minute. When played back, the projector replicates the scene stored within it, replaying the events as a [[lesser illusion]] spell. Though some sound is replicated during playback, it is usually not clear enough to decipher speech.

The projector consists of a Siberys [[dragonshard]] suspended by metal wires inside a 1-foot diameter hoop of silver. The hoop floats in mid-air when activated, with barely perceptible lines of light expanding outward to create the recording stored within the shard.
The Phoenix Basin is a body of water that lies between mainland [[Xen'drik]] and [[Kapaerian Island]], and connects to the [[Barren Sea]]. Before the cataclysmic destruction of the civilization of the [[giant]]s during the [[Age of Giants]], this basin was once solid ground.
This enchanted lock appears no different than its mundane equivalent. Each time anyone attempts to pick the lock and fails, the lock suddenly absorbs the lockpick and incorporates the material into its mechanism.
This small pigeon figurine can balance perfectly on its
beak. While the pigeon is balanced on your finger, you can
speak its command word to cause it to point
north until it is removed from your finger. 
''District Type:'' Temple district<br/>
''Buildings:'' Temples ([[Sovereign Host]], [[Silver Flame]],
[[Aureon]], [[Balinor]]), shrines ([[Boldrei]], [[Kol Korran]]),
upscale lodging (5), average lodging (15), upscale food (15), average food (30), exotic trades (23),
upscale trades (26), average trades (40), upscale services (40), average services (100), upscale residences
(20), average residences (80)<br/>
''First Impression:'' While not quite as impressive as
the grand temples at Sovereign Towers, the churches
and shrines of Pinnacle are dripping with precious
metals and jewels. Appearance and opulence may
be more important than faith to the congregations
of Pinnacle.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Silvergate]] (west); [[Twelve Pillars]] (south); [[Crystal Bridge]] (bridge, northwest); [[Cornerstone]] (below)

The temples of Pinnacle serve more of a social function than a religious one. The primary duties of a Pinnacle priest are managing donations, ensuring that the people who pay the most get prominent seating during services, and performing formal (if ultimately meaningless) blessings at the parties and
galas of the wealthy. The one exception is the Temple
of [[Balinor]]; while it happens to have been built in
Pinnacle, its priests are dedicated and its services
draw the faithful from across [[Sharn]]. 
While smoking this pipe, you can exhale a puff of smoke that takes the form of a single creature, such as a [[dragon]], a [[pixie]], or a [[slaad]]. The form must be small enough to fit in a 1-foot cube and loses its shape after a few seconds, becoming an ordinary puff of smoke.
If you are proficient with wind instruments, you can play these magical pipes to summon and control swarms of rats.
This small port town in [[Orgalos]] receives much trade with the nation of [[Riedra]] across the [[Lhazaar Sea]].
A pit fiend is a hulking monster with a whip-like tail and enormous wings that it wraps around itself like a cloak. Armored scales cover its body, and its fanged maw drips a venom that can lay the mightiest mortal creatures low. Fearless on the fields of [[Shavarath]], a pit fiend takes on the most powerful foes in single combat, demonstrating its supremacy and an arrogance that prevents it from acknowledging any chance of defeat.

With an inflated sense of superiority and entitlement, pit fiends form a grotesque aristocracy in whichever [[plane]] they inhabit. In [[Daanvi]], these domineering and manipulative tyrants conspire to eliminate anything that stands between them and their desires, even as they negotiate the convoluted and dangerous politics of the [[Iron Ward]].
Pitchwall is a small prospecting town [[Hope]], [[Q'barra]], located near the [[Stormhorn Clanhold]].
Standing barely a foot tall, pixies resemble diminutive [[elves|elf]] with gossamer wings like those of dragonflies or butterflies, bright as the clear dawn and as luminous as the full moonrise. Curious as cats and shy as deer, pixies go where they please. They like to spy on other creatures and can barely contain their excitement around them. The urge to introduce themselves and strike up a friendship is almost overwhelming; only a pixie's fear of being captured or attacked stays its hand. Those who wander through a pixie's glade might never see the creatures, yet hear the occasional giggle, gasp, or sigh.

Pixies array themselves like princes and princesses of the [[fey]], wearing flowing gowns and doublets of silk that sparkle like moonlight on a pond. Some dress in acorns, leaves, bark, and the pelts of tiny woodland beasts. They take great pride in their regalia and beam with joy when they are complimented on their ensembles.

//''Magical Faerie Folk.''// With their innate power of invisibility, pixies rarely appear unless they wish to be seen. In [[Thelanis]] and on the Material Plane, pixies etch patterns of frost on winter ponds and rouse the buds in springtime. They cause flowers to sparkle with summer dew, and color the leaves with the blazing hues of autumn.

//''Pixie Dust.''// When pixies fly visibly, a shower of sparkling dust follows in their wake like the glittering tail of a shooting star. A mere sprinkle of pixie dust is said to be able to grant the power of flight, confuse a creature hopelessly, or send foes into a magical slumber.
Only pixies can use their dust to its full potential, but these fey are constantly sought out by mages and monsters seeking to study or master their power.

//''Tiny Tricksters.''// While the arrival of visitors piques their curiosity, pixies are too shy to reveal themselves at first. They study the visitors from afar to gauge their temperament or play harmless tricks on them to measure their reactions. For example, pixies might tie a [[dwarf]]'s boots together, create illusions of strange creatures or treasures, or use dancing lights to lead interlopers astray. If the visitors respond with hostility, the pixies give them a wide berth. If the visitors are good natured, the pixies are likely to be emboldened and more friendly. The fey might even emerge and offer to guide their "guests" along a safe route or invite them to a tiny yet satisfying feast prepared in their honor.
This [[Carrion Tribe|Carrion Tribes]] reveres an
imprisoned [[overlord]] of filth and pestilence. Its members seek
to turn the power of their lord against their enemies. Plaguebearers smear their weapons with filth; a victim struck with a coated weapon may be subjected to fever-inducing contagion. Plaguebearers are typically covered with weeping open sores and angry welts
from various infections, but they are remarkably resistant to the effects of diseases and poisons. 

In battle, the Plaguebearers become wild berserkers;
they close ranks as quickly as possible and fight to the
death, praying that infection will claim the lives of any
enemies who survive the battle. ''Fulgrun Bloodboil'' ([[tiefling]] barbarian), a hideous individual surrounded by a horrible stench of pus and rot, leads the clan. 
You beseech an otherworldly entity for aid. The being must be known to you, some being of cosmic power associated with your [[religion]]. That entity sends a [[celestial]], [[fiend]], or other associated [[immortal]] being, making the creature appear in an unoccupied space within 60 feet. If you know a specific creature's name, you can speak that name when you cast this spell to request that creature, though you might get a different creature anyway (DM's choice).

When the creature appears, it is under no compulsion to behave in any particular way. You can ask the creature to perform a service in exchange for payment, but it isn't obliged to do so. The requested task could range from simple (fly us across the chasm, or help us fight a battle) to complex (spy on our enemies, or protect us during our foray into the dungeon). You must be able to communicate with the creature to bargain for its services.

Payment can take a variety of forms. A celestial might require a sizable donation of gold or magic items to an allied temple, while a fiend might demand a living sacrifice or a gift of treasure. Some creatures might exchange their service for a quest undertaken by you.

As a rule of thumb, a task that can be measured in minutes requires a payment worth 10 c per minute. A task measured in hours requires 1000 c per hour. And a task measured in days (up to 10 days) requires 1000 c per day. The DM can adjust these payments based on the circumstances under which you cast the spell. If the task is aligned with the creature's ethos, the payment might be halved or even waived. Nonhazardous tasks typically require only half the suggested payment, while especially dangerous tasks might require a greater gift. Creatures rarely accept tasks that seem suicidal.

After the creature completes the task, or when the agreed-upon duration of service expires, the creature returns to its home plane after reporting back to you, if appropriate to the task and if possible. If you are unable to agree on a price for the creature's service, the creature immediately returns to its home plane.
A planar observatory is a structure at the heart of the [[Chamber]]'s efforts to divine the meaning of the [[Draconic Prophecy]]. The observatory consists of great chambers
of crystal and metal, lined with huge orreries that track
and align with the planes and the Ring of [[Siberys]]. 

These immense locations are constructed by and
for [[dragon]]s. The orreries that surround the central
space track the courses of the planes as they shift toward and away from Eberron. All about the observatory
are enormous [[dragonshard]]s of all three kinds (Eberron,
Khyber, and Siberys).

Each observatory must be built in a location that is
balanced between [[Siberys]] and [[Khyber]]; finding such a
site might take years of careful study and surveying, and
these places are typically remote. Several are located
in [[Argonnessen]]; those in [[Khorvaire]] are usually found
in mountain ranges and hidden forest clearings. Many
have crystal roofs, or domes that open with the aid of
great mechanisms to allow an unobstructed view of
the night sky, since the movements of Eberron's moons
are thought to correspond to the shifting relationships
among the planes. 
The Material Plane is enfolded by thirteen planes of existence. All of them overlap with [[Eberron]] in some way, and they influence and are influenced by the Material Plane. The intensity of this influence waxes and wanes; scholars often depict the planes as orbiting Eberron—sometimes coming close, other times
far away—though this manner of expression is merely
a metaphor for their shifting influence. When another
plane's influence on the Material Plane is especially
strong, the plane is said to be coterminous. When its
influence is weak, a plane is remote. The state of a plane can be important for performing epic rituals, creating of [[eldritch machine]]s, or interacting with extraplanar entities. Whether or not a plane is remote or coterminous at
a given time depends entirely on the needs of your story. 

!! Universal Properties

If adventurers visit one of the planes, they'll find it has certain
unnatural properties that can be felt consistently throughout
the entire plane of existence. A plane's universal properties
can often be felt on Eberron itself; one of the most common
effects of [[manifest zone]]s is to extend one or more of that
plane's universal properties into the Material Plane, sometimes
reliably, other times unpredictably. The page for each plane
presents a list of universal effects that affect that entire plane;
these generally apply to all creatures within that plane.

Time doesn't pass at the same rate on every plane; it could
move faster, slower, or even unpredictably. 

!! Planar Denizens

Every plane's inhabitants are unique, but each creature can generally be classified in one of the following categories.

* [[manifestation]]s
* [[immortal]]s
* mortals (either native to the plane or to Eberron)

The same type of creature can appear in different planes—[[demon]]s can be found in [[Fernia]], [[Dolurrh]], [[Shavarath]], and more. They might use the same statistics, but
their appearance and motivations vary dramatically based on
their planes, and they have no sense that being “demons” makes
them all allies. The [[balor]] of Shavarath embodies the savagery
of war; its wings are of steel, and blood drips from its notched
sword. The balor of Fernia represents the terrifying destructive
power of fire; its wings and sword are made of pure flame. With
any planar creature—especially [[immortal]]s—consider the idea it
represents and how that can be uniquely embodied.

!! Coterminous and Remote

The planes of Eberron are often
depicted as orbiting the Material Plane, reflecting the fact that
they move into and out of alignment with it. When a plane is
coterminous, it's aligned; the plane's influence grows over the
entire world, and it amplifies the effects of existing [[manifest zone]]s. On the other hand, when a plane is remote, its power
fades; since the planes are always influencing the Material in
subtle ways, their absence impacts the world as strongly as
their presence does. Multiple planes can be coterminous at the
same time; these planar conjunctions are often related to the
interactions of the [[moon]]s, and characters knowledgable in arcane lore
can usually work out upcoming conjunctions.

These planar cycles are intended as plot devices, so DMs
don't need to run them on strict calendar cycles. Instead, use
them to suit the story. They can add an interesting mechanical
twist to an adventure: because [[Mabar]] is coterminous, all
[[undead]] are stronger! They can drive a villain's plot: //[[Lady Illmarrow]] must be stopped from activating the device in three days' time, when both [[Mabar]] and [[Dolurrh]] are coterminous—a conjunction that won't happen again for another century!//

It's ultimately up to the DM to decide when planes are
coterminous or remote. If it suits the story for Dolurrh to be
remote for the next three days, make it so—just be sure to
inform the arcane scholars among the adventurers, who'd
likely know such a thing in advance. Other DMs might prefer
to have concretely established cycles, which can add their
own interesting flavor to an adventure. For example, Mabar
is always coterminous on the nights of the new moon closest
to the winter solstice, a time known as [[Long Shadows]]. On
these nights, friends and family gather together and keep lights
burning through the night.

!! The Planes

<<list-links-article "[tag{!!title}sort[title]]">>
You and up to eight willing creatures who link hands in a circle are transported to a different [[plane]] of existence (except [[Dal Quor]]). You can specify a target destination in general terms, such as the City of Brass in [[Fernia]] or the storefront of Bor'ob the slaad in the [[Immeasurable Market]] in [[Syrania]], and you appear in or near that destination. If you are trying to reach the City of Brass, for example, you might arrive in its Street of Steel, before its Gate of Ashes, or looking at the city from across the Sea of Fire, at the DM's discretion.

Alternatively, if you know the sigil sequence of a teleportation circle on another plane of existence, this spell can take you to that circle. If the teleportation circle is too small to hold all the creatures you transported, they appear in the closest unoccupied spaces next to the circle.

You can use this spell to banish an unwilling creature to another plane. If you are touching a creature, you can attempt this spell; if the creature fails to resist, it is transported to a random location on the plane of existence you specify. A creature so transported must find its own way back to your current plane of existence.
Planetars act as the weapons of the [[planar|plane]] force they serve, presenting a tangible representation of one of their plane's aspects. A planetar can call down rain to relieve a drought, or can loose an insect plague to devour crops. A planetar's celestial ears detect every falsehood, and its radiant eyes see through every deception.

Most planetars are muscular and hairless and have opalescent green skin and white-feathered wings. They tower over most humanoids, brandishing immense swords with grace. 
Plants in this context are vegetable creatures, not ordinary flora. Most of them are ambulatory, and some are carnivorous. The quintessential plants are the [[shambling mound]] and the [[treant]]. Fungal creatures such as the [[gas spore]] and the [[myconid]] also fall into this category.

<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The townhomes in this district
are large and well kept, clearly displaying the wealth
of their occupants. Servants move about on the
business of their employers, and guards can be seen
posted at many of the doors.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Den'iyas]] (north); [[University District]] (northwest); [[Dalan's Refuge]] (bridge, southeast); [[Ocean View]] (bridge, south); [[Little Plains]] (below)

Platinate, among [[Sharn]]'s most desirable residential districts, isn't as exclusive as [[Mithral Tower]]
in [[Upper Central]], but certainly compares to [[Oak Towers]] and [[Crystal Bridge]] in [[Upper Northedge]].
[[Morgrave University]] produces few scholars wealthy
enough to live in Platinate, but some retired
explorers who struck it rich selling artifacts from
[[Xen'drik]] settled in this district to remain close to
the University. There are just enough eccentric
collectors of antiquities and retired adventurers to
give Platinate a quirky character that distinguishes
it from similar districts.
''District Type:'' Fine shops<br/>
''Buildings:'' Upscale lodging (15), upscale food (25),
exotic trades (40), upscale trades (120), upscale
residences (80)<br/>
''First Impression:'' Stores, restaurants, hotels, and a
few homes in this prosperous neighborhood are all
high-priced and lavish.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Korranath]] (south); [[Oak Towers]] (bridge, northeast); [[Tradefair]] (below)

Platinum Heights is the finest commercial district
in [[Sharn]], home of the most exclusive businesses,
from restaurants to [[magic item]] dealers.

!! Noteworthy Locations

* [[Aurora Gallery]]. The most prestigious auction house in Sharn, Aurora deals in magic items, exotic finds from [[Xen'drik]], and other wonders. 
* [[Gray Dragon Inn]]. This inn provides aristocratic and wealthy lodging for those who can afford it. 
* [[Sannid's]]. One of Sharn's most celebrated restaurants, Sannid's serves Brelish cuisine of wealthy quality and has a legendary wine cellar. 
This four-faceted lead weight is hung on a long leather strip, which can be wound around the haft or handle of any melee weapon. You may remove the plumb and transfer it to another weapon whenever you wish. Weapons with the plumb attached to it deal additional force damage. You may activate the plumb to change this additional damage type to fire, cold, lightning, or back to force.
This pair of purple leather gauntlets are studded with colorful gems and strange runes. The [[artificer]] who designed them intended to create powerful, spell-enhancing gauntlets, but he didn't really know what he was doing and made these instead.

Three times per day, the wearer can cast a completely random spell (cantrip, common, or rare [[tier|spell tier]]) on a chosen target. If the range of that spell is less than 30 feet, it becomes 30 feet. Any [[consequence]] also triggers a [[random magical effect]], as does any "dud" spell (such as casting [[awaken]] on a beast).

<$button>
<$action-chooserandom $filter="[category[spell]!tier[4]!tier[5]]" $field="spell"/>Random Spell
</$button>

<<<
<$link to={{!!spell}}/>
<<<

{{random magical effect}}
Given their insidious and deadly nature, poisons are illegal in most societies but are a favorite tool among assassins, the [[drow]] of [[Xen'drik]], and other unscrupulous characters.

<<list-links-article "[tag{!!title}sort[title]]">>
This thin, black oil tastes strongly of burnt almonds. When you drink this potion, your saliva and blood becomes incredibly poisonous to other creatures for up to four hours. After the effect passes, you suffer extreme nausea for up to an hour.

The settlers of [[Q'barra]] have never truly understood
the Poison Dusk. The majority of settlers still believe
that the Poison Dusk is one of the tribes of the [[Cold Sun Federation]] and that the different species comprising it are all just different forms of [[lizardfolk]]—that the
[[kobold]], [[troglodyte]], and [[lizardfolk]] share
the same relationship as a [[goblin]], [[hobgoblin]], and
[[bugbear]].

Those who have studied the Dusk more closely
recognize that it is an alliance of different species
but have still drawn flawed conclusions. The most
common among these is that the Poison Dusk are a
cult that worship the [[dragon]] [[Rhashaak]]. It is true that
[[Haka'torvhak]] is the stronghold of the Poison Dusk,
and that they pay homage to the corrupted dragon,
but this is because Rhashaak is the voice of the [[overlord]] [[Masvirik]]. ''The Poison Dusk is the harbinger of the Cold Sun.''

Where do they come from? If the Poison Dusk is
hated by both [[lizardfolk]] and [[dragonborn]], how have
they managed to survive?

[[Masvirik]] is immortal, and his essence pervades
[[Q'barra]]. He has influence over all reptilian creatures.
The web of [[dawn shard]]s scattered across the land
reduces his power but doesn’t block it completely.
Touched by the [[Silver Flame]], the [[Masvirik’Uala|Cold Sun Federation]] [[lizardfolk]] are the most resistant to his power, while the [[kobold]]s of the region are the most easily corrupted. Beneath the surface of Q’barra, he is served by a host
of [[troglodyte]]s. New [[dragonborn]] are drawn to his
service with every generation. His power is strongest
in [[Haka'torvhak]] itself. This is why the dragonborn
have never been able to completely cleanse Masvirik’s
stronghold. For generations they would raid the
Haka’torvhak and slaughter all of [[Rhashaak]]’s soldiers,
but in time, new servants are drawn to the city. All too
often, these new agents of the Poison Dusk include
the [[dragonborn]] assigned to watch over it. 

The Poison Dusk are fanatically devoted to [[Rhashaak]] and [[Masvirik]]. They serve with the fervor of the [[demon]]ically possessed—and some of them are. The majority of Rhashaak’s fiendish servants were bound along with the [[overlord]]s. The [[dusk shard]]s found across Q’barra hold fragments of these demonic
beings, and this power can be transferred to agents of
the Poison Dusk.

As a result, the Poison Dusk and [[lizardfolk]] have
been battling over [[dragonshard]]s for thousands of
years. The Poison Dusk seeks to gather the [[dusk shard]]s for their own purposes while reducing the areas covered by dawn shards. The [[lizardfolk]] wish
to keep the dusk shards out of the hands of their
enemies.

The arrival of House [[Tharashk]] has destroyed this
balance of power. Thanks to the [[Mark of Finding]], the
[[dragonmarked house]] has recovered more [[dusk shard]]s
in the last ten years than the Poison Dusk has in the
last thousand.

Thus, both the [[Masvirik'Uala|Cold Sun Federation]] and Poison Dusk
attack [[Tharashk]] holdings. Where the [[lizardfolk]] do
their best to cripple mining operations, the Poison
Dusk take shards while otherwise leaving an
operation intact. The Poison Dusk is happy to have
Tharashk doing the work of prospecting and mining;
they just want the shards.

[[Masvirik]] has no servants among the [[Lords of Dust]].
His fiendish agents are bound in [[dusk shard]]s, and
[[Rhashaak]] is his voice. He is a hateful being, filled
with malice for all. For centuries he has simply sought
to slaughter all those who will not serve him. It is only
now, with the potential value he sees in House [[Tharashk]], that Masvirik is trying more subtle schemes to attain his goals. One possible arc for a campaign
would be to introduce [[yuan-ti]] to [[Q'barra]], as [[human]]s
newly transformed by the power of the Cold Sun. The
Poison Dusk has never managed to destroy [[New Galifar]] by force... can it be corrupted from within?

!! The Poison Dusk in Battle

The Poison Dusk is comprised of [[kobold]]s, [[troglodyte]]s, [[dragonborn]], and a small number of [[lizardfolk]]. These come in three varieties.

''Corrupted'' members of the Poison Dusk are
driven by savage instinct. They are brutal and aggressive but rarely employ complex tactics unless under the leadership of a [[dusk shard]] cultist or fiendish
vessel. Any existing creature of the appropriate race
can be used with the Poison Dusk, though spellcasters are rarely found among them.

''Dusk shard'' creatures can be identified by the
sliver of [[dusk dragonshard|dusk shard]] embedded in their torso
or forehead. The tiny shard strengthens their bond to
[[Masvirik]], and this in turn changes them in mind and
body. Dusk shard creatures are innately more intelligent than lesser servants of the Poison Dusk, and any spellcasters serving the Poison Dusk will have dusk
shards; their mystical knowledge is imparted through the shard. Dusk shard soldiers are better equipped than the base, corrupted masses, and they have the skill to use fine weapons and armor. Many are physically transformed so that they possess serpentine or draconic traits and specifically resemble a [[black dragon]]. 

''Fiendish vessels'' are the most powerful agents
of the Poison Dusk. These bear larger shards and are
hosts for the trapped servants of [[Masvirik]]. The vessel
is completely dominated by the [[fiend]] and speaks with
the voice of the ancient spirit. The power of the vessel
depends on the size and purity of its embedded shard.
A vessel with a smaller shard is sometimes referred to as a
"Slithering Idol", and may have the power to hypnotize with their eyes, resist all poisons, or a variety of serpentine abilities. A vessel with a larger shard is actually transformed
into an avatar of the imprisoned spirit, and while it
maintains the general appearance of the original host
creature, you can use the statistics of the [[fiend]] or [[rakshasa]] associated with the shard. When the creature is slain, its body reverts to its original, natural shape.

The shards of a fiendish vessel or dusk shard cultist retain their power after the death of the bearer. This is the source of the shard pits in [[lizardfolk]] villages; shards are collected from fallen foes to keep them from being used again.

Normally it takes time for a shard to transform
its bearer, but at the DM’s discretion, the [[shard|dusk shard]] of a
fiendish vessel could be so strong that an ally could
pluck it from the chest of the fallen vessel and become
a new host. Only a handful of shards with this
level of power exist, but they are virtually impossible
to destroy. The Poison Dusk will go to great lengths to
regain such a shard if it is lost. 
The spellcaster extends their hand toward a creature they can see within 10 feet and projects a puff of noxious gas from their palm.
While holding this 10-foot pole, you can speak a command word and transform it into a fishing pole with a hook, a line, and a reel. Speaking the command word again changes the fishing pole back into a normal 10-foot pole.
While holding this 10-foot pole, you can speak a command word and cause it to collapse into a 1-foot-long rod, for ease of storage. The pole's weight doesn't change. You can speak a different command word and cause the rod to revert to a pole; however, the rod will elongate only as far as the surrounding space allows.

This item has other variations, such as ladders, planks, and hoops.
This spell transforms a creature that you can see within 60 feet into a new form. An unwilling creature can try to resist the effect. The spell has no effect on a shapechanger (such as a [[changeling]] or [[rakshasa]]) or an incapacitated creature.

The transformation lasts for up to 1 hour, or until the target is incapacitated or dies. The new form can be any beast, the type of which is contingent on the power of the target. The target's physical and mental capabilities are replaced by those of the chosen beast, but it retains its ethics and personality.

The creature is limited in the actions it can perform by the nature of its new form, and it can't speak, cast spells, or take any other action that requires hands or speech.

The target's gear melds into the new form. The creature can't activate, use, wield, or otherwise benefit from any of its equipment.
This long, red tassel can be attached to the pommel of a sword (or other weapon).
When you unsheathe the sword, the tassel wraps around
your forearm and you can't be disarmed. When the sword
is sheathed, the tassel falls limp and releases your arm. 
The mainstay of the [[Riedran|Riedrans]] diet is the pomow plant. This fruit was developed by the [[Bountiful Horn]] during the first few centuries of the [[Riedra]]n unification. Its origin remains a mystery, but common belief is that it involved metacreation techniques and [[wild zone]]s bound to [[Lamannia]].

Pomow is a hardy crop that can
grow in a range of climates, and every part of the plant
has a use. The meat, root, and seeds can all be eaten, and
are remarkably high in protein; the core is filled with
juice; the bushy fibers around the stalk can be worked
into thread, much like cotton; and strips of the tough
rind are sharp enough to shave with. 

A pomow is a dark
purple spheroid, ranging from one foot to two feet across.
Pomow plants are remarkably fecund, and a stalk begins
growing new fruit as soon as the sphere is plucked.
North of the [[Glum River]] lies a misty pool of black water. It is said that creatures who look into this pool can see visions of the past, present, and future, and that the waters are
attuned to the most significant events in [[Eberron]].

Nobles, merchants, and ambitious
adventurers have sought out the Pond of Shadows,
and the PCs might be hired on as guides for such an
expedition. Alternatively, the pond might reveal a
secret important to one of the PCs—or show a possible
future that must be prevented at any cost.
When the engineers were building [[Blackbones]], they discovered a bizarre
phenomenon—a small pool of cool, crystal-clear water
surrounded by a larger pool of blazing lava. In addition to surviving the heat, the water actually seemed to be replenished by an unseen source. Curious, a [[dwarf]] priest ordered a forge set up near the pool. A skilled smith, he found that if he used the heat of the lava and then tempered his work in the cool water, his work
was far better than what he was used to producing. He
declared the site to be the work of the sovereign lord
[[Onatar]]. Today, smiths and metalworkers from across
[[Khorvaire]] come to [[Sharn]] to be blessed at the pool. A
temple has been built around the pool, and services
to Onatar are held within. Those who seek a special
blessing are allowed to dip their hands into the water,
which is said to enhance their own talents.

The powers of the pool may be largely legendary, but they are not completely false. Anyone who tempers a metal item using water from the pool receives an advantage on the attempt,
though the priest rarely allows anyone to take water from the pool. And if a cleric or paladin casts a spell from the Artifice domain within 10 feet of the pool, he has advantage on that roll.

The current caretaker of the pool is actually a
[[warforged]]—one of the few warforged priests on [[Khorvaire]]. Smith served in the [[Last War]]; along the way he developed a deep faith in [[Onatar]], who he believes guided [[human]]ity to create the warforged race. Smith believes that the god has a plan for the warforged, and he has done his best to get other members of the warforged community to embrace his vision. Smith is deeply opposed the violent ideology of the [[Lord of Blades]], and firmly believes that the warforged and the creatures of flesh are meant to live together. 
This object appears as a tightly rolled bundle of canvas
that measures 1 foot long and 6 inches in diameter. You
can speak its command word to cause the
bundle to unroll and assemble into a tent that sleeps up to
two human-sized creatures. 

Speaking the command word again causes the tent to
roll back into a bundle, provided that no creatures are
inside. Any objects inside the tent when it collapses are
ejected and remain outside the tent as it folds.
This set of dark brown leather armor is painted with lines that resemble woodgrain. If the wearer can channel [[primal magic]], they can cause a layer of sharp quills to sprout from the armor's surface, damaging anyone who touches the wearer.
Port Cairn lies on the southern coast of [[Farlnen]], on the coasts of the [[Straits of Orthoss]]. It is the home port of the ships of the [[Bloodsails]], which are built using a type of [[soarwood]] that allows even their largest vessels to safely navigate the shallow harbor.

The population of Port Cairn is almost entirely [[elves|elf]]. A small number of [[eladrin]] also make their home here.
Port Krez is the easternmost town in the [[Lhazaar Principalities]], situated on the island of [[Krag]] and looking out on endless miles of empty [[sea|Lhazaar Sea]]. Home to
Prince [[Mika|Mika Rockface]] and her [[Cloudreavers]], Port Krez is the
antithesis of [[Regalport]]—everything one pictures when
imagining a town run exclusively by and for the pleasure of pirates. Any vice can be indulged here, and
the only regulations recognized in town are the laws
of the sea. Mika’s folk take what they can and hold it
as long as they can defend it.

From Port Krez, the Cloudreavers launch attacks
on seagoing trading vessels, unprotected towns along
the [[Khorvaire]] coast, and any ship unlucky enough to
come out on the wrong side of the gray waters of [[Lastpoint]].
Port Verge is the royal port of the [[Diresharks]] Principality. Prince [[Kolberkon]] yearns to expand Verge and
overshadow [[Regalport]], and he is always looking for
capable adventurers and allies. The [[Blood of Vol]] has a
strong presence in Port Verge, and Kolberkon recently
allowed House [[Lyrandar]] to establish an [[enclave]] there.
But Kolberkon's thirst for glory may lead him to foolish bargains. 
This fine black cloth, soft as silk, is folded up to the dimensions of a handkerchief. It unfolds into a circular sheet 6 feet in diameter.

You can unfold a portable hole and place it on or against a solid surface, whereupon the portable hole creates an extradimensional hole 10 feet deep. The cylindrical space within the hole exists on a different plane, so it can't be used to create open passages. Any creature inside an open portable hole can exit the hole by climbing out of it.

You can close a portable hole by taking hold of the edges of the cloth and folding it up. Folding the cloth closes the hole, and any creatures or objects within remain in the extradimensional space. No matter what's in it, the hole weighs next to nothing.

If the hole is folded up, a creature within the hole's extradimensional space can attempt to force its way out. On a successful check, the creature appears within 5 feet of the portable hole or the creature carrying it. A breathing creature within a closed portable hole can survive for up to 10 minutes, after which time it begins to suffocate.

Placing a portable hole inside an extradimensional space created by a [[bag of holding]], [[handy haversack]], or similar item instantly destroys both items.
Sealed inside this small amethyst and silver earring is the soul of an infamous burglar. A sarcastic and bitingly witty [[gnome]], this thief was blown to smithereens and her soul trapped in this earring by a vindictive [[wizard]] who had been robbed one too many times.

While wearing this earring, the soul inside can provide advice on fencing, lockpicking, robbery, and other such clandestine objectives.
This dainty band of silver etched with flowering vines is possessed by the spirit of a wizard, accidentally sealed into this ring in a failed immortality experiment.

The wizard, though resigned and somewhat depressed, is capable of identifying nearly any [[magic item]] or other magical artifact as long as the user can accurately describe it.
If you plant an ordinary shrub in this 10-pound clay pot and let it grow for 30 days, the shrub magically [[awaken]]s at the end of that time. When the shrub awakens, its roots break the pot, destroying it.

The awakened shrub is friendly toward you. Absent commands from you, it does nothing.
<<list-links-article "[tag{!!title}sort[title]]">>
When you drink this potion, you gain the effect of the [[clairvoyance]] spell. An eyeball bobs in this yellowish liquid but vanishes when the potion is opened.
Also known as "treefrog tincture", this potion is pale yellow and sticky, and tastes of bile. When you drink this potion, a thin layer of foul, sticky slime oozes from your hands and feet. You can climb walls and grip surfaces with ease for 1 hour.
When you drink this potion, you gain the effect of a [[comprehend languages]] spell for 1 hour. This liquid is a clear concoction with bits of salt and soot swirling in it.

<<<
{{comprehend languages}}
<<<
When you drink this potion, your size halves in all dimensions, and your weight is divided by eight. The effect lasts for 1 minute. Higher-rarity versions of this potion extend the duration.

The red in the potion's liquid continuously contracts to a tiny bead and then expands to color the clear liquid around it. Shaking the bottle fails to interrupt this process.
After drinking this potion, you can exhale a 30-foot-cone of fire. The effect ends after you exhale the fire three times or when 1 hour has passed.

This potion's orange liquid flickers, and smoke fills the top of the container and wafts out whenever it is opened.
When you drink this potion, you can fly as fast as you can run for 1 hour and can hover. If you're in the air when the potion wears off, you fall unless you have some other means of staying aloft. This potion's clear liquid floats at the top of its container and has cloudy white impurities drifting in it.
When you drink this potion, you gain the effect of the [[gaseous form]] spell for 1 hour or until you choose to end the effect. This potion's container seems to hold fog that moves and pours like water.

<<<
{{gaseous form}}
<<<
When you drink this potion, your physical strength matches that of a [[hill giant]]. Higher-rarity and higher-potency versions of this potion exist.
When you drink this potion, your size doubles in all dimensions, and your weight is multiplied by eight. The effect lasts for 1 minute. Higher-rarity versions of this potion extend the duration.

The red in the potion's liquid continuously expands from a tiny bead to color the clear liquid around it and then contracts. Shaking the bottle fails to interrupt this process.
When you drink this potion, your body's natural healing is rapidly accelerated. The potion's red liquid glimmers when agitated.

Higher-rarity versions of this potion accelerate healing even faster.
This potion's container looks empty but feels as though it holds liquid. When you drink it, you become invisible for 1 hour. Anything you wear or carry is invisible with you. The effect ends early if you attack or cast a spell.
For 1 minute after you drink this potion, you have resistance to all damage. The potion's syrupy liquid looks like liquified iron.
When you drink this potion, you gain resistance to one type of damage (e.g. fire, lightning, necrotic) for 1 hour. The DM chooses the type or determines it randomly.
When you drink this potion, your mind and body can move twice as fast for one minute. When the effect ends, you can't move for about ten seconds as a wave of lethargy sweeps over you.

 The potion's yellow fluid is streaked with black and swirls on its own.
When you drink this potion, you don't need to blink for eight hours.
When you drink this potion, you gain the following benefits for the next 8 hours: magic can't put you to sleep, and you can remain awake during a long rest and still gain its benefits. This sweet, amber-colored brew has no effect on creatures that don't require sleep, such as [[elves|elf]].
You can breathe underwater for 1 hour after drinking this potion. Its cloudy green fluid smells of the sea and has a jellyfish-like bubble floating in it.
This magical pouch appears as a normal belt pouch. A creature holding the pouch can speak or make a sound no longer than six seconds into the pouch and then seal it.

When the pouch is unsealed, squeezed, or otherwise opened, the sound that it was holding emerges at exactly the volume that it was originally made into the pouch. Once the sound escapes, it must be refilled.
''District Type:'' Warehouse district<br/>
''Buildings:'' Warehouses (70), poor food (4), exotic
trades (2, see [[Dar San]]), poor trades (35), poor services (70), average residence (1), poor residences (500), shrine (the
Inspired), other (5)<br/>
''First Impression: ''This district, dominated by massive warehouses that hold the cargo of the merchant
ships that ply the Dagger River, consists of storage
towers surrounded by tenements, flophouses, and an assortment of workhouses and businesses of
questionable trade practices.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Callestan]] (east); [[Gate of Gold]] (northeast); [[Oldkeep]] (north); the [[Stores]] (south); [[Sharn's Welcome]]/[[Grayflood]] (below and west); [[Underlook]] (above)

The skydocks of Precarious lean out into the air
high above the [[Dagger River]]. Vast mystical cranes
and magic lifts use levitation and the power of [[Syrania]]
to haul loads of cargo and people to and from the
waterfront districts of [[Cliffside]]. An army of laborers transports goods between the docks and the
warehouses in the district—both the massive storage
towers and the smaller warehouses. While sailors
generally find entertainment in [[Cliffside]], Precarious houses a variety of crafts and services. Mills
and workhouses make immediate use of the raw
materials brought up from the Dagger River, while
a few dingy taverns, gambling dens, and [[dreamlily]]
dealers provide the workers with a chance to leave
their cares—and their silver—behind. A variety of
criminal trades are practiced in Precarious; the
[[Boromar Clan]] has a hand in many of the businesses
in the area due to their considerable investments in
smuggling and shipping.

Precarious plays an important part in the economy of [[Sharn]], and as a result the [[City Watch|Sharn Watch]] maintains an active presence in the district. The Watch
maintains a small garrison in the area to watch for
smugglers—or at least to ensure that the proper
bribes are paid. The Watch also protects the tariff
office, the large customs agency on the skydocks that
handles taxation of goods. The Watch protects trade;
petty crimes are not their concern, and Precarious is
definitely a dangerous place for average citizens and
visitors. Tourists and important visitors arriving by
ship generally hire a [[Deneith]] escort at [[Grayflood]]
to ensure safe passage through [[Lower Dura]] to the
higher levels of the city.

House [[Kundarak]] maintains five high-security warehouses in this district. These warehouses are especially secure, combining a variety of magical [[abjuration]]s with mundane traps. These warehouses cost twice as much to use as other warehouses in Precarious, but merchants with a serious interest in security readily pay the price.

!! Noteworthy Locations

* [[Dar San]]. A small [[Riedra]]n community has carved out a neighborhood for themselves amongst the warehouses of Precarious.
This small capsule is made of beeswax blended with sand and a variety of enchanted water plants. A creature who consumes a pressure capsule ignores the effects of swimming at depths greater than 100 feet.
This spell is a minor magical trick that novice [[wizard]]s and [[artificer]]s use for practice. You create one of the following magical effects within 10 feet:

* You create an instantaneous, harmless sensory effect, such as a shower of sparks, a puff of wind, faint musical notes, or an odd odor.
* You instantaneously light or snuff out a candle, a torch, or a small campfire.
* You instantaneously clean or soil an object no larger than 1 cubic foot.
* You chill, warm, or flavor up to 1 cubic foot of nonliving material for 1 hour.
* You make a color, a small mark, or a symbol appear on an object or a surface for 1 hour.
* You create a nonmagical trinket or an illusory image that can fit in your hand and that lasts until the end of your next turn.
Primal magic draws on the ambient power of the natural world, and is commonly used by [[druid]]s and rangers. Despite some similarities to both [[arcane magic]] and [[divine magic]], primal magic stands apart from these forms of spellcasting in that it draws from the latent energy of [[Eberron]] itself, rather than purely from the Ring of [[Siberys]].

The druids of [[Eberron]] hold animistic beliefs completely unconnected to any of the other [[religion]]s of the world. They believe that every living thing and every natural phenomenon—sun, moon, wind, fire, and the world itself—has a spirit. Their spells, then, are a means to communicate with and command these spirits. Some arcane scholars agree with this principle, but attribute it to the magical essence of [[Lamannia]], the [[plane]] of primordial nature, and claim it is this essence which druids manipulate when they use primal magic.

!!! <<showspells-school {{!!title}}>>
Imagine [[Terminus Station]] in [[Sharn]], but instead of [[skycoach]]es
and rail tickets, portals lead to different [[layer]]s. Hundreds of
subjects and [[modron]]s mill about, standing in orderly queues
as they wait to pass through a portal. By Daanvian law, all
travelers must pass through the Prime Gate, where [[plane shift]]
and astral travel deposit adventurers. If people enter Daanvi
through some other means, they're in violation of the law—never a good idea.

While the Prime Gate's bustling appearance suggests Daanvi
is as welcoming to travelers as [[Syrania]], most traffic consists of
local commuters moving between layers. Extraplanar visitors
must acquire travel passes from the Passage Authority; how
difficult this is depends on the tone of the Authority when you
arrive... and this shifts from day to day. If the Authority is
just, the [[angel]]s keep it moving quickly and smoothly; as long as you truly have a valid reason for your travel, you should be
able to pass. If the Authority is even-handed, it's managed by
[[modron]]s; it's possible to get through, but there are immense
lines and a lot of redundant paperwork. In addition to having
a clearly stated reason for travel, modrons might only provide
access to specific layers, or impose restrictions—“You'll have
to drink that potion now or throw it away.” And if the Authority
is oppressive that day, the [[devil]]s on duty make it a living hell;
the question is whether they're more interested in extortion or
tormenting travelers with bureaucratic burdens. Do they want
a bribe? Do you need to perform a service for them? This is an
archetypal abuse of power; what makes a good story?
The [[archfey]] known as the Prince of Frost was once the Prince of Summer,
but his heart froze when his beloved fled with a mortal
hero. The escaping lovers cast their spirits forward in
time, and the Prince waits in his castle of frozen tears (the [[feyspire]] [[Taer Syraen]]) for
their return and his revenge. Until then, he torments all
virtuous heroes who cross his path, reflecting the story
of a good person turned cruel by loss.
This lipstick takes 1 minute to apply and lasts 24 hours.
While wearing it, your lips change color once every hour. 
You perform a 10-minute ritual that makes an area within 120 feet magically secure. The area is a sphere with a radius as small as 2 feet to as large as 50 feet. The spell lasts for 24 hours or until you choose to dismiss it.

When you cast the spell, you decide what sort of security the spell provides, choosing any or all of the following properties:

* Sound can't pass through the barrier at the edge of the warded area.
* The barrier of the warded area appears dark and foggy, preventing vision (including darkvision) through it.
* Sensors created by [[divination]] spells can't appear inside the protected area or pass through the barrier at its perimeter.
* Creatures in the area can't be targeted by divination spells.
* Nothing can teleport into or out of the warded area.
* [[Planar|plane]] travel is blocked within the warded area.

Casting this spell on the same spot every day for a year makes this effect permanent.

If you are able to cast [[legendary-tier|spell tier]] spells, you can cast this as such to increase the maximum radius of the warded area to 200 feet.
Every child knows the story of the Progenitor Dragons:
[[Siberys]], [[Eberron]], and [[Khyber]]. In the dawn of time,
these three cosmic beings created thirteen [[plane]]s of
existence, each embodying a concept. Their final work
was the Material Plane, where all ideas would become
manifest: a realm that could know war and peace, life
and death, order and chaos. But cruel Khyber sought
ultimate dominion over this new reality. She struck Siberys without warning and tore him apart. Eberron wrestled with Khyber and bound the traitor in her coils but
could not defeat her. So Eberron became a living prison,
a world that would forever contain Khyber's evil.

Almost every culture in the world shares this story as
a myth that explains the world. Shattered Siberys became the ring of golden [[dragonshard]]s wrapped around
the planet, said to be the source of magic. Eberron is
the world, the source of all natural life. And Khyber is
the Underdark and the source of [[aberration]]s and [[fiend]]s,
forever struggling against her bonds and yearning to destroy the world above.
This Y-shaped wand, bearing the emblem of the [[Mark of Finding]], has stored magical power that can be expended to enhance the power of someone wielding that [[dragonmark]]. The wand can be used 3-8 times before it needs to be recharged overnight.

You can expend this power instead of your own energy in order to:

* Sense the direction a specific object familiar to you, as long as it is within 1000 feet of you.
* As above, but for a specific creature. This counts as two uses of the wand.
* Sense the direction and distance of a specific beast, plant, or mineral within five miles. When you cast this spell, you can specify the minimum quantity of that beast, plant, or mineral that you wish the spell to find within a 30-foot-radius sphere, such as “at least 3 pounds of Eberron [[dragonshard]]s” or “at least five deer.” You learn the direction and distance to the closest occurrence in that concentration, if any are present.
For up to 1 hour, or until you break your concentration, the willing creature you touch gains magical resistance to one of the following: acid, cold, fire, lightning, or force.
Sovereign nations in Eberron are sometimes broken up into provinces, or distinct territories within that nation that act as administrative units. At one point, each of the [[Five Nations]] were considered provinces of united [[Galifar]]. Today, in [[Sarlona]], the [[provinces|Sarlonan province]] of [[Riedra]] and [[Syrkarn]] are named after twelve kingdoms that fell during the [[Sundering]].

!! Provinces

<<list-links-article "[tag{!!title}sort[title]]">>
Awake to the [[psionic|psionics]] power within, a psi warrior
is a fighter who augments their physical might
with psi-infused weapon strikes, telekinetic lashes, and barriers of mental force. Many [[githyanki|gith]] train to become such warriors, as do [[Inspired]] of the [[Harmonious Shield]] in [[Riedra]]. Psi warriors are sometimes referred to as "battleminds".

As a psi warrior, you might have honed your
psionic abilities through solo discipline, unlocked
it under the tutelage of a master, or refined it at an
academy dedicated to wielding the mind's power as
both weapon and shield. 
Psions are the quintessential manifesters of [[psionic power|psionics]]. Psions unleash the potential locked within every conscious mind, move objects with just a thought, and assume command of even the least desire of their foes. Psions make manifest their secret wishes when others can only dream.

These masters of mental manipulation might come by their psionics through meditation or careful study of the [[plane]] of [[Dal Quor]], or perhaps their power manifested as a [[wilder]], a sudden aberrant mental mutation sparked by a planar flare from [[Xoriat]]. 
Psions can most commonly be found among the [[Inspired]] and [[kalashtar]] of [[Sarlona]].

Most psions have basic telepathy and short-range telekinesis, but at least three specializations of psion exist:

* ''Telepaths'' are able to link their mind to those of other conscious creatures. While this can be a useful tool for fostering communication and fellowship, a psion that focuses on this discipline can wield their telepathy like a weapon. Through mesmerism and manipulation, powerful telepaths called dominators mold weaker minds like clay.

* ''Kineticists'' are experts in the mental manipulation of energy. They wield precise, powerful, and long-range telekinetic control, but also use their psionic discipline to control flames, ice, lightning, or even sound.

* ''Shapers'' are masters of metacreativity, the ability to form solid and semisolid objects such as tools, weapons, and even [[construct]]s out of psionic ectoplasm. These objects only last a limited time, but the creative possibilities are limitless. Master shapers can even manifest their thoughts into sapient constructs.
The [[Inspired]] have long shielded their realm from prying eyes. Although the [[monoliths|hanbalani alta]] are not as powerful as the [[Shroud]] of [[Adar]], each one blocks all attempts to scry into [[Riedra]]. The Riedran shield blocks scrying only
from outside sources; once someone penetrates the borders, all powers and spells function normally. Disrupting this field would require the destruction of a substantial
number of monoliths, and even doing this would only drop a segment of the shield. 
Psionics is the power of the mind, whether honed by rigorous training or inspired by wild and uncontrollable impulse. Psionic characters unlock the unexpected power of their consciousness, bringing it to bear in the fighting techniques they master or the magical effects they create. Those who study the psionics traditions passed down through generations can transcend the body's limits, eventually apprehending the whole of creation with a single thought.

Distinct from [[arcane|arcane magic]] and [[divine magic]], a person wielding psionic power can merely exert their will on their surroundings and evoke phenomena such as telekinesis, telepathy, domination of weaker minds, opening dimensional doorways, phasing through solid objects, or even creating solid objects from nothing but thought.

Psionic power manifests in Eberron either through a link to [[Dal Quor]], the Region of Dreams ([[kalashtar]] and the [[Inspired]] have innate psionic power) or through [[Xoriat]], the Realm of Madness.

See also [[psion]], [[ardent]], [[wilder]], [[dreamtouched]], [[psi warrior]], and [[soulknife]].

!!! <<showspells-school {{!!title}}>>
An extremist branch of the Church of the [[Silver Flame]], the Pure
Flame rose in the aftermath of the [[Silver Crusade]]. [[Aundair]]ians
whose families had suffered through decades of [[lycanthropic|lycanthrope]]
terror embraced the Flame as the weapon of their liberation,
but as a faith born in battle, they have a distorted view of its
principles. The core principle of the Silver Flame is to defend
the innocent, but those who follow the Pure Flame see it as a
tool to punish the wicked. They see no room for compassion;
while they accept the idea that the [[overlord]]s and the [[Shadow in the Flame|Bel Shalor]] drive people to do evil, they focus not on treating them with compassion, but on burning the evil out of them.

The primary defining traits of the Pure Flame are this harsh
violence and uncompromising sense of justice. There must be
no compromise with the wicked, and there is no hierarchy of
evil; //no// evil deed can be tolerated. Most followers of the Pure
Flame are exceptionally loyal to the [[Voice of the Flame|Tira Miron]] and
believe the [[Keeper|Keeper of the Flame]] to be a divine being. However, many also
distrust the cardinals of [[Thrane]], and should the Keeper make
a proclamation that goes against their beliefs, they're quick to
attribute it to the corrupt cardinals putting words in her mouth.
A movement in [[Thaliost]] urges Archbishop [[Solgar Dariznu]] to rally
forces and seize [[Flamekeep]] in order to “liberate the Keeper,”
though the Pure Flame doesn't have the forces, resources, or
training to pull off something like this.

Members of the Pure Flame are intolerant, bigoted, and
violent, rejecting the compassionate principles of the faith and
denying that all are equal in the light of the Flame. However,
because of their fanatical devotion to the fight against evil, they
might offer adventurers assistance against a real supernatural
threat. Purists are generally NPCs, not player characters, as
their uncompromising and intolerant nature will likely cause
clashes with other adventurers. That being said, a player
character might be a former Purist seeking redemption for
their vile behavior, or perhaps a young Aundarian rebelling
against a Purist upbringing and broadening their horizons.
The second largest city in [[Valenar]], Pylas Maradal is
a port on the southern coast. House [[Lyrandar]] has invested in the city and built shipyards and a large house [[enclave]]. The port sees traffic from [[Q'barra]], [[Sarlona]], and
[[Aerenal]]. When the region was part of [[Cyre]], this city was
known as Southport, a haven for smugglers and pirates. 
Known as the Gate of Joy, Pylas Pyrial is a glittering [[feyspire]] of alabaster and gold, celebrated for its [[bard]]s and revels. Its population includes more [[gnome]]s than [[eladrin]], and it is widely thought that the first [[Zil|Zilargo]] were settlers from the Gate of Joy. Over the centuries, the Zil have maintained a close relationship with Pylas Pyrial when it appears.

Pylas Pyrial is home to artisans and [[artificer]]s of great skill, and adventurers interested in purchasing fey goods or negotiating with [[eladrin]] lords will find this to be the most accessible of the feyspires. An ancient rivalry undercuts the relationship between Pylas Pyrial and [[Shae Loralyndar]].

Pylas Pyrial is ruled by the [[Summer Council]], which includes [[gnome]]s and [[eladrin]].
The gateway to [[Aerenal]], this port city is the primary
point of contact between Aerenal and the outside world.
In this city driven by commerce, almost all the [[dragonmarked house]]s have outposts here, and it includes vast
markets, warehouses, and lumber yards. 
Worship of the [[Sovereign Host]] takes many forms in
different cultures, but the religion as practiced by most
of the humans of [[Khorvaire]] can be traced back to the
kingdom of Pyrine; Vassals today recite the [[Pyrinean Creed]], often without knowing anything about the ancient kingdom. The Pyrineans placed great value
on wisdom and philosophy, and Pyrinean tutors and
priests served in courts across [[Sarlona]]. However, faith
failed to protect the Pyrineans from the [[quori]]. During
the [[Sundering]], the Pyrinean church was torn apart by
schisms and heresies, and Pyrine was crushed by the
forces of [[Nulakesh]] and [[Ohr Kaluun]]. Although most of the libraries and churches have been destroyed, explorers might be able to find hidden vaults of knowledge or
ancient shrines providing new insight into the worship
of the [[Sovereign Host]]. 

The Pyrinean love of philosophy has made them devoted to the [[Path of Inspiration]]—although not as aggressively fanatical to the doctrine as the people of [[Corvagura]]
or [[Nulakesh]]. Many [[Riedran|Riedrans]] [[cleric]]s come from this
province. Pyrine is one of the most peaceful provinces
of [[Riedra]], and the [[Thousand Eyes]] and the [[Harmonious Shield]] have a reduced presence in this region. Even though they are dedicated to the [[Inspired]], Pyrineans are not as hostile toward foreigners as other [[Riedrans]] are; many
Pyrineans enjoy having the opportunity to proselytize and
discuss their faith with outlanders.
The standard names and attributes of the [[Sovereigns|Sovereign Host]] and [[Six|Dark Six]]—[[Aureon]], [[Balinor]], the [[Shadow]]—are drawn from the Pyrinean Creed, the
dominant tradition within the [[Five Nations]]. This is the source of
the Octogram symbol, the division of Nine and Six, and holy days
like [[Boldrei's Feast]]. If you follow the Pyrinean Creed, you believe
in the faith as it's presented in the core Eberron sourcebooks.

You recognize all of the Sovereigns and Six, even if you may feel
that one in particular is especially influential in your life.
While the common faithful know the term “Pyrinean Creed,”
its history is largely only of interest to scholars and priests.
A typical Vassal might know that they believe in the Pyrinean
Creed, but if you asked five of them what [[Pyrine]] was, you'd get
five different answers—“He was a legendary missionary!” “It
was an old town in [[Daskara|Thrane]] where there was a council!” In
reality, these beliefs were codified thousands of years ago in the
[[Sarlona]]n nation of [[Pyrine]], then carried to [[Khorvaire]] by [[human]]
settlers. While Pyrine was assimilated by the Empire of [[Riedra]]
over a thousand years ago and its people no longer worship
the [[Sovereign Host]], their legacy lives on in Khorvaire.
A pyroconverger is a magical flamethrower made by a mad [[artificer]]. It can project fire in a 10-foot cone, but carries a risk of malfunction each time you use it.
''Capital:'' [[Newthrone]]<br/>
''Hallmarks:'' Eberron [[dragonshard]]s, [[lizardfolk]], rare herbs

Q'barra is a young nation on the edge of [[Khorvaire]], an
untamed frontier filled with danger and opportunity.
During the golden age of [[Galifar]], few humans bothered
to cross the [[Endworld Mountains]] to explore the vast
jungle beyond. When the [[Last War]] broke out, a fleet of
settlers came to Q'barra in search of a new home far
from the war. As this settlement expanded, the settlers
discovered massive deposits of Eberron [[dragonshard]]s. Over the past decade, a wave of prospectors, wandslingers, refugees, and fortune-seekers
have descended on Q'barra, along with brigands, deserters from the war, and all manner of criminals and opportunists.

To their surprise, Q'barra was already home to a number of ancient civilizations [[human]]s know nothing about:
the [[lizardfolk]] of the [[Cold Sun Federation]], the [[dragonborn]] of [[Ka'rhashan]], and the confederacy of the [[Poison Dusk]]. Most settlers refer to them collectively
as "[[scales]]." King [[Sebastes ir'Kesslan]] of [[Newthrone]] has
established a treaty with the [[Cold Sun Federation]], but
communication has been difficult and prospectors rarely
abide by the terms of the treaty. 

!! Interesting Things About {{!!article}}{{!!title}}

* Q'barra is one of the richest sources of Eberron [[dragonshard]]s in [[Khorvaire]], drawing waves of settlers and prospectors to this young and growing nation on the edge of civilization.
* Certain ruins in Q'barra appear connected to the [[Age of Demons]]. The settlers know little of the history of this region, but the [[Poison Dusk]] [[lizardfolk]] have ties to [[fiend]]ish powers.
* House [[Tharashk]] has a strong presence in Q'barra. Tharashk is the primary buyer of Eberron dragonshards and also runs large-scale mining operations here. 

!! Q'barran Characters

Q'barra tempts explorers from the west with the prospects of wealth and new lands to conquer—mostly humans but including members of all races found in [[Khorvaire]]. Settlers, [[dragonborn]], and [[lizardfolk]] characters
who originate here should consider the following:

* ''Settlers.'' Q'barra is an excellent place to explore the traditional archetypes of the classic Western. As a [[paladin]], you could be a lone sheriff seeking to protect your newly formed mining village. Your [[cleric]] could be the town preacher. As a [[sorcerer]] or [[bard]] with a criminal background, you could be a dashing wandslinger looking for trouble and gold.
* ''Renegades and Regrets.'' Q'barra promises a land of opportunity and a place where you can leave your past behind. Are you a deserter? Were you convicted of a crime you didn't commit? Are you fleeing from a broken heart? Q'barra has also drawn [[Cyran|Cyre]] refugees and newly freed [[warforged]], both seeking a home in the wild east.
* ''Lizardfolk.'' The [[lizardfolk]]'s primitive culture blends [[druid]]ic traditions with the beliefs of the [[Silver Flame]]. You might have been sent to study the softskins—to learn about them and potentially serve as an envoy for your people. Alternatively, you could be following a spiritual vision.
* ''Dragonborn.'' The [[dragonborn]] live amid the remnants of ancient glory. They have a proud martial tradition, and a number of dragonborn venture west in search of worthy challenges. If you follow this path, you might have served as a mercenary in the [[Last War]]. 

!! Cities and Sites

Q'barra is split into three main regions. [[New Galifar]] is
the original colony; it has a feudal structure and holds
to the laws of the [[Treaty of Thronehold]]. To the north,
[[Hope]] is a collection of small mining towns. In Hope, the
law goes only as far as the people willing to enforce it.
Beyond these human regions lie the unexplored lands of
the [[scales]]. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

The influx of [[Cyran|Cyre]] refugees promises to reshape Q'barra. Most of the settlers are peaceful people searching for a homes and opportunities, but some among them chose Q'barra over refugee camps because they refused to accept charity from former enemies. These "Mourners" rob and kill settlers from the nations that fought against [[Cyre]]. Hope also has its share of brigands and criminals, bandits who prey on House [[Tharashk]] convoys and settlers alike.

The relationship between the settlers and the natives
is another source of tension. Although King [[Sebastes|Sebastes ir'Kesslan]]
forged a treaty with the [[Cold Sun Federation]], the prospectors of [[Hope]] regularly violate this treaty. The [[Poison Dusk]] [[lizardfolk]] are hostile to both the settlers and the Cold Sun Federation. Conflicts between settlers and
[[scales]] have escalated over the last four years, and many
fear that worse is yet to come. 
The jungles of [[Q'barra]] are teeming with [[reptilian natives|scales]], mysterious ruins from the [[Age of Demons]], and valuable [[dragonshard]]s. See [[Q'barra]] for more information.
The [[shifter]] tribes of the Qiku nation in [[Sarlona]] roam
all inland regions west of the [[Tiiki River]] and south to the
border of [[Riedra]]. Several Qiku villages, while designed
to be movable on short notice, have persisted for decades
now and are essentially permanent. Most of these villages
are built in, on top of, and around the sprawling boulder
mounds of the central [[Tundra|Tashana Tundra]], and feature tents, tunnels and semipermanent structures of earth and stone.
The Qiku currently share much of the far southern
lands and resources with the refugee [[Akiak]] [[dwarves|dwarf]] of
the [[Paqaa Mountains]]. 

Previous to the rise of the [[Inspired]] in [[Riedra]],
a branch of the Qiku nation roamed far south into
the lands that are now the [[Dor Maleer]] region. As the
Inspired came to power, they enslaved these southern
tribes, who have since evolved into an elite warrior caste
serving in Riedra's [[Savage Legion|Taskaan Legion]]. 

See also [[Culture of the Tashana shifters]].

The Qiku Sky Teller for the Summit Council is [[Naar-Esqa]].
The Qitha River in [[Syrkarn]] flows from the [[Tese Hills]] into the [[Jathara Sound]]. It forms part of the border between the provinces of [[Khunan]] and [[Lamecha]].
The Qonama River in the [[Tashana Tundra]] flows past the village of [[Winterstead]] into the [[Winter Bay]]. 
The Queen of All Tears, a [[Dark Power]] of [[Mabar]], is an embodiment of misery,
and her subjects are largely incorporeal [[undead]], [[shadow]]s and
[[wraith]]s from the barren sand. Meanwhile, cruel [[specter]]s and [[banshee]]s attend the Queen, along with [[succubi and incubi|incubus/succubus]] who
bask in the delicious misery that suffuses the region. The Queen
herself takes the form of a mummified corpse, enshrouded by a
spectral image of a beautiful [[elf]] woman. The suffering of others
is her mead, and her only pleasure is the slow torment of the
hostages in her [[Hinterland|Hinterlands]] fragments.

The Queen of All Tears is one of the youngest of the Dark
Powers. She was once a mortal who dreamed of mastering life
and death, but her pursuit of these goals resulted in the deaths
of everyone she ever loved and everyone who shared her blood.
Her kingdom was razed, and she killed her own daughter
and transformed her into a [[lich]], so at least one piece of her
legacy might survive. Her name was Minara Vol, and she was
the mother of [[Erandis Vol|Lady Illmarrow]]. In the process of becoming a [[Dark Power]], she's lost much of her own identity and sense of her
past. She despises both [[elves|elf]] and [[dragon]]s, but has forgotten
even her own daughter. If the Queen were to somehow regain
her memories, she might seek to strike at the [[Undying Court]]
and [[Argonnessen]], or to aid Erandis—or it may be that she
continues to dwell in her despair and ignore her past.
The [[medusa]]s of [[Cazhaak Draal]] are a powerful force in spite of their
limited numbers. Sheshka, their hereditary Queen of Stone,
is a skilled hunter and cunning strategist. Less cruel
than her fellow warlords, Sheska is driven to secure
the well-being of her people, and she has earned
their devotion and fealty. She could be a potential
ally for PCs—or a deadly enemy if she considers them
a threat.

A medusa named ''Carash'' serves as the queen's ambassador in the court of the [[Great Crag]].
The Queen of the Dead, the most powerful being in [[Dolurrh]],
dwells in the great spire that rises up above the [[Vault of Memories]]. Little is known about her motives or her origins; curiously, she focuses on the Material Plane far more than most great planar powers do. Though she existed long before the [[elves|elf]], the Queen appears as an elf woman, her face hidden by a cracked alabaster mask, her robes of black feathers trimmed with silver. She can pluck [[shade]]s from the cycle of entrapment, and even grant them new life, creating [[shadar-kai]] by housing them in new bodies. Other souls, she saves but doesn't restore, preserving them in the Vault of Memories.
She collects secrets and memories, plucking her favorites
from those gathered by the [[Librarian|Vault of Memories]] and keeping them in her
personal collection. Sometimes she directly opposes mortal
[[necromancers|necromancy]], especially [[Lady Illmarrow]]. At other times, she
seems interested in killing specific people, perhaps so she can
preserve their spirits or their memories. But such direct action
is extremely rare, remarkable if it occurs more than once in
a century; most of the time, she remains silent in Dolurrh,
unknown and unknowable.

Rarely, the bravest (and most foolish) of adventurers venture
into the Queen of the Dead's realm, hoping to reclaim a lost
spirit from Dolurrh. And rarely, they succeed, for she doesn't
care if a shade or two are stolen every century, or even every
decade. However, in the [[Age of Giants]], the [[Cul'sir]] Dominion
sent an army into Dolurrh to recover the spirits of a family lost
in the [[Quori|quori]] Conflict—none of them returned. The Queen's
power cannot be contested in Dolurrh, and thieves who attract
her personal attention find their shades torn from their bodies
in the blink of an eye.
Questor is a large island in the [[Lhazaar Principalities]], home of [[Port Verge]], the seat of power of the [[Direshark Principality|Diresharks]]. The northern reaches of the island are defined by windswept, icy mountains that provide little in the way of natural resources.
The {{!!title}} is a [[Sharn]] street gang of 
[[goblin]]s who live in the sewers below [[Tavick's Landing]] and avoid violence, using
stealth and knowledge of the sewers to
pull off their thievery.
This item appears and functions as an ordinary writing quill. When the command word is spoken, the quill transforms into a longsword until the command word is spoken again. There is no way to detect that this item is out of the ordinary except through magical means.
Quintessence is the solidified energy of [[Mabar]]an [[shadow]]s. It is crafted by [[yugoloth]] gardeners that enhance its power by leading mortals associated with specific shadows down dark paths. 

This matte black substance can be used in a similar way to wood, metal, or cloth. Quintessence items are powerful conduits for [[necromancy]] and necrotic energy. Items
that create [[undead]] or consume light might also be crafted from
quintessence; such items drain joy and empathy from those
that carry them, and those who wield such items often become
cold and cruel. 
Each of the quiver's three compartments connects to an extradimensional space that allows the quiver to hold numerous items while never weighing more than 2 pounds. The shortest compartment can hold up to sixty arrows, bolts, or similar objects. The midsize compartment holds up to eighteen javelins or similar objects. The longest compartment holds up to six long objects, such as bows, quarterstaffs, or spears.

You can draw any item the quiver contains as if doing so from a regular quiver or scabbard.
Though the energy of the Region of Dreams pervades
[[Sarlona]], the creatures of [[Dal Quor]] cannot cross over
to the material realm—their [[plane]] is forever remote.
Even so, the [[Inspired]] have devised methods to augment
[[beast]]s with a hint of [[psionics]], and these quorbound creatures serve as guard
animals, mounts, and spies. Quorbound creatures breed true, however, and those that escape captivity and mate with mundane members of their species
sometimes pass their otherworldly abilities onto their
offspring. 

Those who fear the [[Inspired]] are quick to see the taint
of evil in the quorbound. However, those aware of the
legend of the turning of the age know that the potential for good
still lingers in the dark heart of [[Dal Quor]]. 
The [[quori]] had three millennia in [[Dal Quor]] to plan
their domination of [[Sarlona]], and so they devised the
[[Chosen]] and the [[quorbound|quorbound beast]]. But the quori's success
with these breeds came along with failures. They tried
many experiments, some offering more physical prowess than humanlike forms had and others intended to
create reliable slaves. Individuals descended from these
castoff experiments are still born intermittently among
Sarlona's natives. Most are indistinguishable from their
kin, but a few show severe psycho-spiritual backlash
against the quori's meddling. These creatures have traits
that make them antithetical to [[psionic|psionics]] beings. Scholars
note them as quorbred creatures; the quori and [[Inspired]]
arrogantly call them "failed vessels." 

A quorbred creature starts as any [[beast]], [[humanoid]], [[giant]], [[monstrosity]], or [[dragon]]. The creature is resistant to any [[psionic|psionics]] power cast on them, and emits a pulse of psychic disruption whenever they make physical contact with a psionic creature. Quorbred creatures also do not dream.
[[Dal Quor]] is the plane of dreams and is currently dominated by a dark power known as [[il-Lashtavar]], or the [[Dreaming Dark]]. Il-Lashtavar is served by a host of [[fiend]]s that are the embodiments of dreams and nightmares—the quori. Because it is difficult for anything to physically travel to or from Dal Quor, quori in [[Eberron]] are typically encountered while possessing a host body. The [[Inspired]] are the most common type of willing host for the quori.

!! Types of Quori

<<list-links-article "[tag{!!title}sort[title]]">>
Raadu Xeel was a member of the [[Keepers of the Word]], and a respected teacher and [[arcanist|arcane magic]] in [[Kasshta Keep]]. His body was honed and his mind sharp. He had waited years, aiding Speaker Geetru in every manner possible,
hoping to become the next Speaker. But temporal ambition is unseemly to the ascetics, and Raadu was known to have delved into lore thought better left alone. Geetru
couldn't have placed Xeel as Speaker if she had wanted
to—the elders wouldn't have allowed it.

Under false pretenses, a sect of magicians offered Xeel
aid—actually [[Endseekers]] hoping to gain control of Kasshta's resources. Raadu saw an alliance with these mages as a way to expand the [[Keepers|Keepers of the Word]]' knowledge in the future. Finding an inroad with dark philosophies that Raadu had
already assimilated, the Endseekers slowly corrupted Xeel,
even as he ingratiated himself to others in [[Kasshta Keep]]
and the [[new Speaker|Chanaakar]] alike. He hoped that his behavior
would place him in a controlling position when all was
done. The Endseekers convinced him he should become
Speaker, and that they could help. All Xeel had to do was
open the gate door at the right time.

Ultimately, the [[Endseekers]] and their dark minions
tried to assassinate Speaker [[Chanaakar]] after gaining access to
[[Kasshta Keep]] with Xeel's aid. But they failed, thanks to
[[Luunkashtai]], Kaala, and the monks. When the truth of the
plot was uncovered, the elders had Xeel executed and his
family banished from Kasshta Keep, despite Chanaakar's
request for mercy. 
''Date: '' [[23 Lharvion|Khorvaire calendar]]

[[Dura]], one of the oldest and poorest quarters of [[Sharn]],
contains inhabitants swept in from all corners of
[[Khorvaire]]. They may not have gold, but the people of
Dura have the Race of Eight Winds. Part race, part aerial battle, this stunning spectacle has shaped the culture of the Dura Ward—and this event can present many opportunities for adventurers.

The Race of Eight Winds is primarily a test of
speed and skill through a course that weaves around
and through the spires of the city. While the beasts
may use any natural weapons that they possess, the
riders may not use any magical powers or weapons beyond a non-lethal sporting crossbow. Anyone who breaks these rules is immediately disqualified
and probably torn apart by an angry mob. 

The Race of Eight Winds brings spectators, tourists, and gamblers from across [[Khorvaire]], and it also presents a host of opportunities for adventurers.
The victorious rider receives a 100 crown purse at the end of the race, as well as a grant of land elsewhere in [[Breland]], donated by one of [[Sharn]]'s noble families. 

!! History and Structure

According to the commonly accepted—if somewhat unlikely—legend, King Galifar II was fascinated by the use of aerial scouts and cavalry. Some say that he used [[Sharn]] as a testing ground to judge the merits of different flying beasts, granting land and gold to exceptional cavaliers. Over the centuries, this evolved into an exotic race involving different sorts of magical and fantastic beasts. For purposes of the race, [[Dura]] is divided into eight regions, each of which is represented by a different creature. To this day, the name of the creature is often used as a slang term for the inhabitant of one of these areas; when someone talks about "that treacherous [[owl|giant owl]]," he's probably referring to a resident of [[Rattlestone]] or the [[Bazaar]].

The race itself is a test of speed and skill, challenging the reflexes and combat skills of both beast and rider. From the starting point in [[Hareth's Folly]], the race takes competitors on an intricate course that weaves in and around the towers of Sharn—and since contact is allowed between riders and beasts, the racers can always try to win by eliminating the competition.

The race is older than most of Sharn, which explains why much of [[Upper Dura]] is not represented; it literally didn't exist when the tradition began. [[Hareth's Folly]] and [[Callestan]] have always been neutral ground where people gather to watch the race.

While not everyone takes an interest, many of the inhabitants of [[Lower|Lower Dura]] and [[Middle Dura]] are avid followers of the Race of Eight Winds. It brings people of all races and professions together, and those directly involved with the race are the heroes of their districts. This includes the riders and handlers, along with the Wind Guard—a committee appointed to manage the interests of the beast's one- or two-district region. While this is a great honor, it carries considerable responsibility: there is far more to the Race of Eight Winds than just skill in the air. The Wind Guard has to raise funds to acquire, maintain, and train the exotic beasts used in the competition. Usually local merchants donate a share of their profits to support the race, but it is up to the Wind Guard to make up for any shortfall. In addition to finances, the members of the Wind Guard engage in a never-ending series of schemes and negotiations on behalf of their region. Alliances and networks of favors stretch back for centuries, making the race as much a match of politics as of speed. The [[owl|giant owl]] is one of the slowest creatures in the race, but the [[Bazaar]] has a powerful economic position and often uses bribery and graft to get ahead. The [[griffon]] rarely tries to win, instead using its physical power as a bargaining chip throughout the period between races; even if the griffon can't win, it can usually take another creature out of the race. Of course, it may be that the hawk owes a favor to the owl, and repays that favor by asking the griffon to cripple the [[pegasus]]—and this is a fairly simple example.

!! The Rules

Traditionally, each region enters a single beast and rider in the race. However, if a region makes a 50c donation (which goes into a general treasury to offset the cost of the land grant), it may enter a second contestant. While this is rarely done, it is the primary way for outsiders—such as player characters—to enter the race. A would-be contestant would need to negotiate with the Wind Guard and find a region that willingly lets them participate under their banner.

The race itself is a dangerous event. Full contact is allowed between beasts and riders, and beasts can use any natural weapons that they possess. Riders cannot use [[spell]]s, [[psionic disciplines|psionics]], [[dragonmark]]s, [[magic devices|magic item]], or [[alchemical item|alchemist]]s, and anyone who breaks these rules is immediately disqualified and exposed to mob violence. A rider is allowed to carry a non-lethal sporting crossbow and a dozen quarrels. This allows for entertaining conflict while preventing swift kills.

The victorious rider receives a 100c purse and a small parcel of land—while the Wind Guard of the winning region lays claim to the ''Rod of Eight Winds''. This mysterious item is an artifact recovered from the depths of the city long ago; some say it is linked to [[Syrania]] and projects the effects of a [[manifest zone]] within a short distance. However, few of the people of [[Dura]] have any interest in the rod's history or powers. What matters is its current role as the symbol of Dura's pride—and each district is desperate to claim it.

!! Using the Race of Eight Winds

The Race of Eight Winds is a massive sporting event that draws interest from across the continent. It could impact an adventure in a number of ways.

* ''Local Color:'' Each creature is associated with a particular region (one or two districts) within [[Dura]]. As the race draws near, visitors see banners displayed across Dura, and people dress in the colors of their beast. Passing adventurers may be invited to a meal and called upon to toast the health of the local beast, or an adventurer who coincidentally happens to be wearing the wrong colors may spark a brawl. This can provide a way to introduce new NPC enemies or allies, or simply add depth to the description of a scene.
* ''Participation:'' A skilled rider may want to enter the race himself. The character needs to gain the sponsorship of one of the regions; he is more likely to gain the acceptance of one of the slower beasts than the [[hippogriff]] or [[pegasus]], who win all the time and want to preserve the fame of their local riders. Winning the race makes the character a landowner, which could be interesting; it also makes them a local celebrity in [[Sharn]], which could open the door to many other opportunities.
* ''Troubleshooting:'' Someone has poisoned the local [[griffon]]s, and the Wind Guard of [[Precarious]] have only three weeks to find a replacement; can the party find a wild griffon in time? The race is in one week, but the Rod of Eight Winds has been stolen; can the adventurers recover the lost artifact? The PCs are asked to provide security for the pegasus—which seems like an easy task until [[Daask]] gets involved. A friend of the party loses a fortune gambling on the race, and the [[Boromar Clan]] is threatening her life: Can the PCs help? If the characters are unscrupulous enough, they may even be hired to cripple racing beasts to skew the odds!

!! The Beasts

Looking to add a little color to Dura? Here are the eight beasts traditionally used in the race, along with the districts they represent.

* ''The Eagle:'' The districts of [[Broken Arch]] and [[Stormhold]] support the giant eagle, whose colors are brown and gold. Stormholders are especially passionate about the race, even though the eagle rarely wins. Many Stormholders take pride in being fierce and noble like the eagle, and they rarely participate in the politics and intrigue that often affect the final outcome of the race. They are especially dismissive of the other birds of [[Middle Dura]]; the hawk is a lesser eagle, while the owl is treacherous and far too clever.
* ''The Gargoyle:'' [[Fallen]] and [[Malleon's Gate]] were originally represented by the [[dire|dire beast]] bat. As immigrants from [[Droaam]] came to [[Sharn]], most settled in the [[Cogs]] or Malleon's Gate. Twelve years ago, the region of the bat made an unprecedented change and shifted their regional beast to the [[gargoyle]], whose colors are black and gray. Currently, the region is represented by ''Carralag'', a remarkably clever gargoyle with the ability to use Sharn's [[manifest zone]] to enhance his speed and maneuverability.<br/>The people of Malleon's Gate are fiercely dedicated to the event. The violence appeals to the [[Darguuls|Darguun]], while the city [[goblin]]s love the chance to compete against the elitist folk of the upper levels. While the gargoyle has yet to win the race, it has had greater success than the bat, and this has brought increased support for [[Daask]] and the [[Droaam]]ites within the district.
* ''The Glidewing:'' This flying dinosaur represents the districts of [[Gate of Gold]] and the [[Stores]], and its colors are gray and green. The [[glidewing]] is extremely popular among the [[halfling]]s of Sharn, and some say that the [[Boromar Clan]] is the financial force behind the Glidewing Wind Guard.
* ''The Griffon:'' This powerful beast represents [[Precarious]] and [[Oldkeep]], and its colors are brown and red. During the race, red ribbons are usually tied to the forelegs of the [[griffon]], giving the impression of streams of blood coming from its claws. The people of Precarious are fanatically (and often violently) devoted to the race, although many don't care if they win or lose; as long as the griffon brings down one of the other beasts, they consider it to be a victory.
* ''The Hawk:'' [[Tumbledown]] and [[Underlook]] are represented by the dire hawk, whose colors are light brown and dark brown. The hawk rarely wins, but Underlook makes considerable profits off the tourist trade and most Tumbledowners are devoted followers of their underdog champion.
* ''The Hippogriff:'' [[Daggerwatch]] and [[Overlook]] are represented by the [[hippogriff]], whose colors are white and gold. The Goldwings (the aerial division of the [[Sharn Watch]]) are based in Daggerwatch, and a Goldwing officer typically represents the district in the race. The hippogriff has one of the best records in the race, rivaled only by the [[pegasus]].
* ''The Owl:'' The [[giant owl]] is the beast of [[Rattlestone]] and the [[Bazaar]], and its colors are brown and gray. While it is one of the slowest creatures in the race, the owl is famous for manipulating the outcome of the race with intrigue and diplomacy. While many of the inhabitants of [[Dura]] speak dismissively of "two-faced owls," the merchants, con artists, and pickpockets of the region take pride in their mascot's cunning, and a strong streak of carefree pragmatism runs through these districts. A few former racing owls are now merchants themselves, which can lead to unusual encounters in the Bazaar.
* ''The Pegasus:'' [[Highwater]] was the last district to join the Race of Eight Winds. Thanks to House [[Vadalis]], Highwater is represented by the [[pegasus]], whose colors are white and silver. The pegasus is the swiftest creature in the race, and it has brought Highwater to victory time and again. The people of Highwater are proud folk and are always willing to discuss the ways in which a pegasus is superior to the other beasts. However, success has its price. The other districts often team up to bring down the pegasus at the start of the race. And outside of the race, many of the inhabitants of the lower wards despise the people of Highwater; thieves and bullies will go out of their way to target a snooty pegasus supporter.
A radiant idol was an [[angel]] from the [[plane]] of [[Syrania]] that succumbed to the corruption of the Material Plane. One sin led to their fall: the desire to be worshiped by mortals. Now in the mortal realm, most radiant idols gather cults of devoted followers.

Syranian [[virtue]]s sometimes travel to the Material Plane to
conduct research for their [[dominion]], concealing their true
nature through magic or invisibility, and trying to minimize
their interactions with mortals. Occasionally, a dominion
wishes to experience the Material Plane for itself, perhaps
pursuing a lead or studying a particularly interesting group
of subjects. However, this venture can be quite dangerous,
for even angels fall.

Many sages believe that touching [[Eberron]]'s ground
makes angels vulnerable to the influence of [[Khyber]] and the
[[overlord]]s, while others theorize that mortal worship—the
positive energy that sustains the [[Undying Court]]—is like a
drug to the dominions. Whatever the cause, dominions who
interact with mortals run the risk of becoming corrupted.
Such [[immortal]]s crave mortal adoration and often seek to
dominate mortals by exercising the power of their sphere.

Not all dominions fall prey to this corruption, but once
one does, there seems to be no way to undo it. Even if the
angel is destroyed and reforms, the corruption remains. It's
unlikely that such an angel would be met in [[Syrania]] itself;
typically, these corrupted angels are forever stripped of the
power of flight and condemned to walk the Material Plane as
radiant idols.

!! Appearance

The insatiable hunger to be adored can transform a fallen angel, physically and mentally.
In its true form, a radiant idol appears to be a warped
angel. It might have bloody stumps in place of its wings,
or its wings could be weighted down with chains representing its pride. A radiant idol disguises itself to hide its corruption, presenting an image of celestial glory.

When a radiant idol achieves a sizable following through silvered words and demonstrations of power, its facade begins to crack, and a downward spiral ensues. As the radiant idol sinks deeper into the realm of material power, it begins twisting its followers, leading them ever deeper into ominous ritualism, hedonistic folly, and fanatical doom.
You strike the ground, creating a burst of divine energy that ripples outward from you. Each creature you choose within 30 feet of you is hit with a wave of force and searing radiance.
These earrings are a pair of large silver hoops. When needed, these earrings erect a translucent shield above the wearer that deflects precipitation, strong winds, or for more expensive models, extreme sun.

See also [[drybrooch]].
This spell requires a one-hour ritual and 50c worth of ritual components, which are expended.

You attempt to return a dead creature you touch to life, provided that it has been dead no longer than 10 days. If the creature's soul is both willing and at liberty to rejoin the body, the creature returns to life. 

This spell also neutralizes any poisons and cures nonmagical diseases that affected the creature at the time it died. This spell doesn't, however, remove magical diseases, curses, or similar effects; if these aren't first removed prior to casting the spell, they take effect when the creature returns to life. The spell can't return an [[undead]] creature to life.

This spell closes all mortal wounds, but it doesn't restore missing body parts. If the creature is lacking body parts or organs integral for its survival—its head, for instance—the spell automatically fails.

Coming back from the dead is an ordeal. The target must spend at least a week recovering before returning to their former strength.

Performing this spell is risky; drawing a spirit back from [[Dolurrh]] might catch the attention of a Dolurrhi [[marut]], or even bring back the wrong spirit, causing a ghost to manifest or ending up with a hostile personality in your friend's body. This is why [[Jorasco]] healers capable of resurrection typically cast [[augury]] first, and will refuse service if the result is "woe". For more information, see the "Concerning Resurrection" section of [[Dolurrh]].
//It is only in conflict that we find ourselves. We can only know our strength when we measure it against another. Laws are traps laid by the weak to control the stronger; anything you can take with fist or blade is yours by right.//
<div align="right">—A cultist of Rak Tulkhesh</div>

Called the Rage of War, Rak Tulkhesh is the incarnation of impulses that drives many mortals to battle. Fear, greed, hatred—these are seeds that the Rage of War sows in the hopes of producing a bloody harvest.

Rak Tulkhesh typically takes the form of a vaguely draconic creature twisted by demonic rage. Covered in iron spikes protruding from his bleeding flesh, this overlord looms fifteen feet high at the shoulders, and his wings span over forty feet. While in combat, Rak Tulkhesh roars in rage as new weapons are spawned from his body, called forth by the Rage of War to slaughter all who dare stand before him.

//''Khyber Shards.''// Rak Tulkhesh's soul is divided among a group of Khyber [[shard|dragonshard]]s spread through the underworld and is confined to those shards by the light of the [[Silver Flame]]. While shattered and bound, the Rage of War can't bring his full power to bear on the world. But he can influence events in the vicinity of any of his shards, drawing power from acts of violence.

The [[Last War]] was a boon that allowed Rak Tulkhesh to darken the hearts of soldiers and civilians alike, whose actions then weakened the overlord's bonds to give him even greater sway over the regions surrounding his shards. The violence seen in [[Thaliost]] and other occupied cities, the hatred against [[warforged]] and [[Cyran|Cyre]] refugees, the calls for a return to war—all these things bear the mark of Rak Tulkhesh's malign influence.

Rak Tulkhesh's heart [[demiplane]] is the [[Bitter Shield]].

//''Cults and Minions of Rak Tulkhesh.''// The cults of Rak Tulkhesh include brutal
raiders who embrace lives of endless violence, but it also
includes those who spread hate and strife—anything that could
stir up harsh conflict where there might otherwise be peace.

While most of the Orphan King's cults are driven by ruthless
aggression, they could also believe they are serving a greater
good. A cult might truly be determined to bring down bandits that are preying on innocents; they are simply driven by the delusion that there are no other alternatives to bloodshed.
Another common delusion is that the current world must be cleansed in bloody battle to clear the path for a peaceful world—these cultists are only fighting today so that their
children may know peace tomorrow.

The Rage of War has a particularly strong following among
the [[Carrion Tribes]] of the [[Demon Wastes]] who yearn to carry his bloody banner into the soft lands of the south. The [[minotaur]]s of [[Droaam]] revere the Horned Prince, an entity closely associated with Rak Tulkhesh. But he has drawn strength from the [[Last War]] and cults can be found anywhere in the [[Five Nations]], especially in communities that suffered serious losses during the war. Just as [[Katashka]] differs from
the [[Keeper]], Rak Tulkhesh is different from the [[Three Faces of War]]. Rak Tulkhesh isn't a god of war who guides the hands of each soldier; rather, he drives aggression and revels in the bloodshed, regardless of who wins or loses.

But the most powerful of the overlord's followers is the [[rakshasa]] [[Mordakhesh]] the Shadowsword—Rak Tulkhesh's exarch among the [[Lords of Dust]], who commands a host of [[fiend]]s exerting the overlord's will across [[Khorvaire]].
The rakshasa employs delicacy and misdirection in its pursuit of dominion over others. Few creatures ever see the fiend in its true form, for it can take on any guise it wants, although it prefers to masquerade as someone powerful or influential: a noble, cardinal, or rich merchant, for example. A rakshasa's true form combines the features of a human and a tiger, with one noteworthy deformity: its palms are where the backs of the hands would be on a human. Rakshasas have a host of other innate magical abilities, and an immunity to the effects all but the most powerful spells.

As the primary agents of the fiendish [[overlord]]s, rakshasas once dominated [[Khorvaire]] and [[Sarlona]]. When the overlords were defeated in the first
age of the world by the combined might of the [[dragon]]s
and the [[couatl]]s, the rakshasas largely disappeared into
[[Khyber]] as well. The [[Lords of Dust]] are made up largely
of rakshasas, scheming in the shadows—many trying to
free their imprisoned overlords, others looking for a way
to claim their masters' power for their own. 
Ran Iishiv, the Unmaker, is an [[overlord]] imprisoned within the mountain of [[Korrandar]] in [[Adar]], [[Sarlona]]. Its anger at being bound during the [[Age of Demons]] created the great volcanic core of the mountain. 

A secret known only to the [[Storm Guardians]], the [[dragon]]s who defend Korrandar—Ran Iishiv's fury is what fuels the supernatural storms that protect [[Adar]]. Its violent passion is channelled through the [[Teeth of the Three]] and causes hurricanes and thunderstorms to erupt wherever great violence is committed in the land of refuge.
<$button>
<$action-chooserandom $dataTiddler="RandomMagicEffect" $field="effect"/>
<$action-chooserandom $dataTiddler="RandomShortDuration" $field="s_duration"/>
<$action-chooserandom $dataTiddler="RandomDuration" $field="duration"/>
<$action-chooserandom $dataTiddler="RandomLongDuration" $field="l_duration"/>
<$action-chooserandom $filter="[range[4]]" $field="d4"/>
<$action-chooserandom $filter="[range[7]]" $field="d7"/>
<$action-chooserandom $filter="[range[10]]" $field="d10"/>
<$action-chooserandom $filter="2 3 3 4 4 4 5 5 5 5 6 6 6 7 7 8" $field="2d4"/>
<$action-chooserandom $filter="5 10 15 20" $field="d20"/>
<$action-chooserandom $filter="5 10 15 20 25 30 35" $field="d35"/>
<$action-chooserandom $filter="5 10 15 20 25 30 35 40 45 50" $field="d50"/>
Random Magical Effect
</$button>

<<<
{{!!effect}}
<<<
1: 30 seconds
2: 30 seconds
3: 45 seconds
4: 45 seconds
5: 1 minute
6: 1 minute
7: 2 minutes
8: 2 minutes
9: 3 minutes
10: 4 minutes
11: 5 minutes
12: 8 minutes
13: 10 minutes
14: 15 minutes
15: 20 minutes
16: 30 minutes
17: 45 minutes
18: 1 hour
1: Dead magic zone (similar to an [[antimagic field]])
2: Wild magic zone (random magical effect whenever a spell is cast within the zone)
3: Boulder carved with talking faces
4: Crystal cave that mystically answers questions
5: Ancient tree containing a trapped spirit
6: Battlefield where lingering fog occasionally assumes [[humanoid]] forms
7: A portal to another [[plane]] of existence
8: Wishing well
9: Giant crystal shard protruding from the ground
10: Wrecked ship, which might be nowhere near water
11: Haunted hill or barrow mound
12: River ferry guided by a skeletal captain
13: Field of petrified soldiers or other creatures
14: Forest of petrified or [[awaken]]ed trees
15: Canyon containing a dragons' graveyard
16: Floating earth mote with a tower on it
1: 1 hour
2: 1 hour
3: 1.5 hours
4: 2 hours
5: 2 hours
6: 3 hours
7: 4 hours
8: 5 hours
9: 6 hours
10: 8 hours
11: 10 hours
12: 12 hours
13: 18 hours
14: 24 hours
15: 2 days
16: 3 days
17: 4 days
18: 5 days
1: {{!!d10}} of the caster's fingers turn to stone for {{!!duration}}.
2: {{!!d10}}0 bees swarm harmlessly around the caster for several days.
3: {{!!d10}}0 sparkling motes of light dance about the caster's head until dawn.
4: {{!!d10}}0% of the caster's body turns to iron for {{!!duration}}.
5: {{!!d10}} ducklings identify the caster as their mother.
6: {{!!d4}} of the caster's fingers move from their left hand to their right hand for {{!!l_duration}}.
7: {{!!d4}} of the caster's limbs become as durable as steel for {{!!l_duration}}.
8: {{!!d4}} of the caster's limbs become covered in fish scales for {{!!l_duration}}.
9: {{!!d4}} of the caster's limbs become invisible for {{!!l_duration}}.
10: {{!!d7}} of the caster's primary orifices seal shut for {{!!duration}}.
11: {{!!d35}} harmless lumps as big as walnuts cover the caster's body for {{!!duration}}.
12: {{!!d35}} quarts of olive oil pour from the caster's ears.
13: {{!!d35}} non-functioning eyes appear on the caster's face and head for {{!!l_duration}}.
15: A {{!!d10}} foot radius around caster sinks as {{!!d10}} into the earth.
22: A foot-long steel bar appears and runs completely through the caster's thigh.
23: A geyser erupts from one of the caster's pockets for {{!!duration}}.
24: A glowing orb hovers over caster's head any time they turn invisible for the next {{!!l_duration}}.
25: A great wind blows the caster {{!!d10}}0 yards in a random direction.
28: A hen's egg tumbles out of each of the caster's ears.
29: A huge balloon shaped like the caster drifts past overhead. It blinks out of existence in {{!!l_duration}}.
31: A large haystack falls from the sky onto the caster.
32: A large oak sprouts from one of the caster's pockets.
33: A length of chain now runs completely through the caster's torso.
34: A life-sized statue of the caster appears nearby, made of cheese.
35: A magical blast detonates at caster's location, but they are unharmed.
36: A mound of snow falls onto the caster and buries them up to their chest.
38: A skeleton appears and mimics the caster, exactly duplicating their movements.
40: A strong net falls from the sky and entangles the caster.
41: A swirl of rainbows accompanies any spell cast by the caster for the next {{!!l_duration}}.
42: A tornado picks the caster up and deposits them atop the nearest building.
44: A lighted cigar appears in the caster's mouth. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
45: A pebble falls from each of the caster's ears. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
46: Illusory ants seem to course from the caster's eyes. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
47: The caster is compelled to accuse someone nearby of impropriety. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
48: The caster appears astonishingly ugly for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
49: The caster appears to be decomposing, an illusion that lasts for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
50: The caster appears to be made of pure ice for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
52: The caster is compelled to applaud themself. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
53: The caster is compelled to beg someone nearby not to kill them. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
54: The caster is compelled to berate someone standing nearby. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
56: The caster appears to be on fire for {{!!d7}} seconds. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
57: The caster briefly appears to bleed from their eyes. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
58: The caster briefly looks like a photo negative. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
60: The caster briefly sees fire all around them. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
61: The caster briefly thinks that they're choking. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
63: The caster can't be magically healed for one hour. This accumulates for every spell cast by the caster for the next {{!!l_duration}}. 
64: The caster can't traverse a doorway for {{!!duration}}. This accumulates for every spell cast by the caster for the next {{!!l_duration}}. 
65: The caster is compelled to dance like a honeybee. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
66: The caster experiences a burning sensation on a random body part. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
67: The caster feels ants crawling all over them for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
68: The caster feels compelled to wash their hands. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
69: The caster feels completely alone and isolated for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
70: The caster feels distractingly hungry for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
71: The caster feels overwhelmingly dizzy for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
72: The caster feels transcendent euphoria for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
73: The caster forgets everyone's name for one hour. This accumulates for every spell cast by the caster for the next {{!!l_duration}}. 
74: The caster forgets their name for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
75: The caster glows with infernal radiance for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
76: The caster is compelled to growl like a rabid dog. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
77: The caster has a brief vision of some distant land. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
78: The caster has a strong craving to chew on twigs and bark. The craving lasts for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
79: Every time the caster casts a spell for the next {{!!l_duration}}, the caster has a small chance of being stricken mute for {{!!duration}}.
80: Every time the caster casts a spell for the next {{!!l_duration}}, the caster has a small chance of turning invisible for {{!!duration}}.
81: Every time the caster casts a spell for the next {{!!l_duration}}, the caster loses their balance and trips.
82: Every time the caster casts a spell for the next {{!!l_duration}}, the caster is compelled to flap their arms.
83: The caster is afraid of their own name for the next {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
84: The caster grows hair like an ape all over their body that persists for one hour. This accumulates for every spell cast by the caster for the next {{!!l_duration}}. 
86: The caster is bathed in an otherworldly green light for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
87: The caster is blind in one eye for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
88: The caster is grief-stricken for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
89: The caster is hopelessly drunk for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
90: The caster is immune to bludgeons for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!duration}}. 
91: The caster is immune to missile fire for a few seconds. This repeats for every spell cast by the caster for the next {{!!duration}}. 
92: The caster is intensely magnetic for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
93: The caster turns matte black for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
94: The caster is suddenly facing true north. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
95: The caster is wracked by existential horror for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
96: The caster looks like a cadaver for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
97: The caster is compelled to make a few short, barking cries. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
98: The caster oozes sweet-smelling oil for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
100: The caster reeks of alcohol for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
101: The caster salivates copiously for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
102: The caster seems withdrawn and despondent for {{!!duration}}. 
103: The caster shakes like a rag doll for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
104: The caster shivers uncontrollably for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
105: The caster shrinks by {{!!d7}}0% for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
106: The caster shrinks by 50% for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
107: The caster smells strongly of turpentine for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
108: The caster suffers brief visions of carnage. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
109: The caster suffers disorienting vertigo. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
110: The caster thinks that they're drowning. This repeats for every spell cast by the caster for the next {{!!l_duration}}. 
111: The caster thinks that their clothes are on fire. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
112: The caster is compelled to trumpet like an elephant. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
113: The caster very briefly vanishes. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
114: The caster's clothes age {{!!d50}} years. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
115: The caster's clothes billow with green smoke. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
116: The caster's eyes briefly double in size. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
117: The caster's face looks 50 years older for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
118: The caster's feet are suddenly covered with ash. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
119: The caster's hair grows two inches. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
121: The caster's hands steam wildly for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
122: The caster's head turns 360° at the neck, unharmed. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
123: The caster's head turns invisible for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
124: The caster's heart pounds audibly. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
125: The caster's left arm turns to stone for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
127: The caster's physical strength is significantly weakened for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
128: Gravity briefly doubles for the caster. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
129: The caster is compelled to giggle for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
130: Light shines from the caster's mouth for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
131: Small lumps of ice fall from the caster's nostrils. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
132: Smoke hangs in the air about the caster for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
133: Stones near the caster glisten with slime. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
134: Sunlight is painful to caster for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
135: For {{!!l_duration}}, alcohol has no effect upon the caster, but cheese is intoxicating.
136: All holy symbols within 100 yards suddenly bear the caster's image.
137: All of the caster's clothing is colored safety orange.
138: All of the caster's clothing is permanently moist.
139: All of the caster's enemies with 100 yards vanish until dawn.
140: All of the caster's fingers are as long as their middle finger. This persists for {{!!duration}}.
141: All of the caster's fingers are clear like glass for {{!!duration}}.
142: All of the caster's fingers double in thickness for {{!!duration}}.
143: All of the caster's fingers migrate to one hand for {{!!duration}}.
147: All of thecaster's possessions are thrown {{!!duration}} into the future.
149: All trees within 100 yards form into a tight circle around the caster.
151: All [[undead]] within {{!!2d4}} miles are compelled to race to the caster's current location.
153: All vegetation within 100 yards is invisible to the caster for {{!!duration}}.
157: All within 10 yards of the caster are sprayed with viscous ectoplasm.
158: All within 10 yards of the caster are compelled to attack them for {{!!s_duration}}.
160: An accurate illusion of the caster copies their movements one mile away.
161: An illusory statue of the caster stands at this spot for {{!!l_duration}}.
162: An image of the caster's beating heart hovers in the nearest doorway for {{!!duration}}.
163: An image of the caster's head hovers over their actual head for {{!!duration}}.
164: An image of the caster's beating heart hovers over their head for {{!!duration}}.
165: Any [[abjuration]]s currently affecting the caster are dispelled.
166: Any armor that the caster is wearing right now shrinks by 80%. This effect is reverted after {{!!duration}}.
167: Any armor that the caster is wearing right now vanishes, reappearing in the same spot after {{!!l_duration}}.
168: Any arrow striking the caster in the next {{!!duration}} disintegrates in {{!!s_duration}}.
169: Any arrow striking the caster in the next {{!!duration}} inflicts equal damage on its archer. 
171: For the next {{!!l_duration}}, any spell cast by the caster is delayed {{!!s_duration}}.
172: Any attempt to change shape locks the caster into that new shape for {{!!l_duration}}.
175: Any attempt to change shape in the next {{!!l_duration}} will be only partially successful.
176: Any attempt to change shape in the next {{!!l_duration}} will cause the caster to be rooted in place.
177: Any attempt to change shape in the next {{!!l_duration}} will leave their feet unchanged.
178: Any attempt to change shape in the next {{!!l_duration}} will make the caster lose all their hair.
180: Any attempt to change shape in the next {{!!l_duration}} will shrink the caster by {{!!d4}}0%. This effect is reverted after {{!!duration}}.
181: Any attempt to change shape in the next {{!!l_duration}} will teleport the caster {{!!d50}} yards in a random direction.
182: Any attempt to change shape in the next {{!!l_duration}} will teleport the caster to this spot.
183: Any attempt to change shape in the next {{!!l_duration}} will turn them into {{!!d20}} ducklings.
185: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a geranium.
186: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a monkey.
187: Any attempt to change shape in the next {{!!l_duration}}  will turn the caster into a pelican.
188: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a penguin.
189: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a rabbit.
190: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a shrubbery.
191: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a [[cockatrice]].
192: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a [[goblin]] toddler.
193: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a [[troll]].
194: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a wax dummy.
198: Any attempt to use rope in the next {{!!l_duration}} leaves the caster hopelessly entangled
199: Any attempt to use rope in the next {{!!l_duration}} leaves hideous welts on the caster's body that last for {{!!duration}}.
200: Any blade that has drawn the caster's blood is invisible to them for {{!!duration}}.
201: Any bread that caster bakes in the next {{!!l_duration}} remains warm until it's eaten.
202: Any building that the caster enters in the next {{!!l_duration}} appears to catch fire.
203: Any building that the caster enters in the next {{!!l_duration}} ejects them forcefully.
204: Any clothing worn by the caster in the next {{!!l_duration}} is invisible to them while they wear it.
205: Any clothing worn by the caster in the next {{!!l_duration}} smells like carrion while they wear it.
206: Any coins in caster's possession are now gold-plated.
210: Any creature summoned by the caster in the next {{!!l_duration}} emerges from their mouth.
211: Any creatures summoned near the caster in the next {{!!l_duration}} are invisible to them.
212: Any creatures summoned near the caster in the next {{!!l_duration}} immediately befriend them.
215: Any electricity-based magic used by the caster in the next {{!!l_duration}} discharges on them.
216: Any electricity-based magic used by the caster in the next {{!!l_duration}} reeks of ozone.
217: Any fire extinguished by the caster rekindles itself {{!!s_duration}} later.
218: Any fire-based spell used by the caster in the next {{!!l_duration}} has only 25% of its normal range.
219: Any fires set by the caster are invisible for {{!!duration}}.
220: Any fires set by the caster in the next {{!!l_duration}} attract [[undead]] like moths to a candle.
221: Any fires set by the caster in the next {{!!l_duration}} jingle like wind chimes while they burn.
222: Any fires set by the caster in the next {{!!l_duration}} make those near it appear to be [[undead]].
223: Any fires set by the caster in the next {{!!l_duration}} produce no heat.
224: Any fires set by the caster in the next {{!!l_duration}}produce no smoke.
225: Any fires set by the caster in the next {{!!l_duration}} whisper vague threats against him.
226: Any food now carried by the caster combusts.
227: Any food now carried by the caster is 10 times as nutritious.
228: Any food now carried by the caster is fused into glass.
231: Any food now carried by the caster smells like carrion.
232: Any food now carried by the caster turns to ice.
233: Any food now carried by the caster turns to iron.
234: Any food now carried by the caster turns to spun sugar.
236: Any hammer thrown by the caster in the next {{!!l_duration}} returns to their hand one round later.
237: Any horse ridden by the caster in the next {{!!l_duration}} suffers no fatigue while they ride it.
240: Any magic currently affecting the caster is dispelled.
241: Any magic currently affecting the caster is suppressed until dawn.
242: Any magic items owned by the caster appear in a heap nearby.
243: Any magic items owned by the caster are non-functional for {{!!duration}}.
244: Any magical scrolls carried by the caster are now fireproof.
246: Any magical scrolls carried by the caster will now trigger random magical effects.
247: Any magical scrolls now carried by the caster discharge spontaneously.
248: Any magical scrolls now carried by the caster turn to steel.
249: Any metal object carried by the caster is 90% transparent for {{!!duration}}.
250: Any metal object carried by the caster seems 10 times its normal weight for {{!!duration}}.
251: Any metal that the caster is carrying turns to liquid like mercury. It reverts in {{!!duration}}.
254: Any missile fired by the caster in the next {{!!duration}} vanishes mid-flight.
255: Any missile fired by the caster in the next {{!! duration}} is destroyed by lightning mid-flight.
257: Any mountain more than one mile from the caster is invisible to them for the next {{!!l_duration}}.
258: Any ranged spell used by the caster in the next {{!!l_duration}} seems to issue from their eyes.
259: Any ranged spell used by the caster in the next {{!!l_duration}} seems to issue from someone else.
260: Any rope currently carried by the caster doubles in length.
261: Any rope currently carried by the caster turns to braided gold wire.
262: Any rope that the caster is now carrying becomes frictionless.
263: Any rope that the caster is now carrying is soaked with lamp oil.
264: Any shield held by the caster appears to be made of Swiss cheese. This reverts in {{!!duration}}.
265: Any shield held by the caster appears to weigh 100 pounds. This reverts in {{!!duration}}.
267: Any shield held by the caster is incorporeal in the presence of weapons. This reverts in {{!!duration}}.
269: Any spells cast by the caster in the next {{!!l_duration}} are accompanied by twinkling lights.
270: Any spells cast by the caster upon themself in the next {{!!l_duration}} make them extremely nauseous.
271: Any spells cast by the caster upon themself in the next {{!!l_duration}} lapse after {{!!s_duration}}.
272: Any spells cast by the caster within the last hour are negated.
273: The next spell the caster casts will instead be a harmless shower of sparks.
276: Any wood within 25 yards flies toward the caster for {{!!s_duration}}.
277: Any writing implement used by the caster suddenly breaks or runs dry.
279: Anyone drinking a potion near the caster looks like the caster until sunset.
280: Anyone drinking a potion within 25 yards of the caster in the next {{!!l_duration}} shrinks by 50% for its duration.
283: Anyone related to the caster by blood is invisible to them for {{!!l_duration}}.
284: Anyone slain by the caster in the next {{!!l_duration}} becomes invisible upon death for {{!!duration}}.
286: Anyone trying to scry the caster's whereabouts in the next {{!!l_duration}} sees this location.
287: Anyone voluntarily struck by the caster's magic in the next {{!!l_duration}} resents them for it.
288: Anyone who knows the caster's name within 25 yards feels compelled to give them an offensive nickname.
289: Anyone who looks deep into caster's mouth in the next {{!!l_duration}} risks insanity.
290: Anything caster drinks in the next {{!!l_duration}} is highly likely to fall from their mouth.
291: Anything written by the caster in the next {{!!l_duration}} appears as gibberish to everyone else.
338: Beneficial magic [[potion]]s have an opposite effect upon the caster for the next {{!!l_duration}}.
339: Bits of flesh fall from caster's body for the next {{!!duration}}.
340: Blades seem extraordinarily dull while the caster wields them for the next {{!!l_duration}}.
342: Caster is compelled to accuse their nearest ally of murdering them.
343: Caster acquires an exact copy of every non-magical thing they own.
344: Caster acquires [[lycanthropy|lycanthrope]], but only in their left leg. This persists for {{!!l_duration}}.
346: Caster addresses everyone they know by their own name for the next {{!!l_duration}}.
347: Caster adopts a habit of nightly self-flagellation for the next {{!!l_duration}}.
349: Caster adopts bizarre rituals concerning the preparation of food for the next {{!!l_duration}}.
350: Caster adopts fastidious standards of hygiene for the next {{!!l_duration}}.
352: Caster adopts some unlikely object as a kind of holy symbol for the next {{!!l_duration}}.
353: Caster adopts the next [[religion]] they encounter for the first time.
354: Caster ages {{!!d10}} years per hour until sunset tonight, then reverts to normal.
355: Caster ages {{!!2d4}} years per second for 5 seconds, then reverts to normal.
356: Caster ages backwards {{!!2d4}} years over {{!!d20}} seconds.
364: Caster sees their surroundings as misty and fog-shrouded for the next {{!!l_duration}}.
365: Caster thinks it's fifty degrees colder than it really is for the next {{!!l_duration}}.
366: Caster thinks that there's one more step in every staircase for the next {{!!l_duration}}.
369: Caster and one nearby ally teleport to the caster's home.
370: Caster is compelled to loudly insisting that they're ambidextrous.
371: Caster appears increasingly decrepit as the day wears on. The effect reverts at sundown.
372: Caster appears to be a bare skeleton from the waist down for the next {{!!l_duration}}.
373: Caster appears to be a bare skeleton from the waist up for the next {{!!l_duration}}.
374: Caster appears to be at peak health, no matter how badly injured, for the next {{!!l_duration}}.
375: Caster appears to be bleeding profusely whenever they're indoors for the next {{!!duration}}.
376: Caster appears to be composed of translucent quartz for the next {{!!duration}}.
377: Caster appears to be covered in ugly scales for one day each week for the next {{!!d7}} weeks.
378: Caster appears to be made of countless flesh-colored pebbles for the next {{!!duration}}.
379: Caster appears to be made out of bricks until sunset tomorrow.
380: Caster appears to be of a different species while sleeping for the next {{!!l_duration}}.
384: Caster appears to be [[undead]] for one hour after each meal for the next {{!!l_duration}}.
385: Caster appears to be [[undead]] while in the presence of undead for the next {{!!l_duration}}.
386: Caster appears to be weathered like an ancient statue for the next {{!!l_duration}}.
387: Caster appears to have a long metal spike jutting from their forehead for the next {{!!s_duration}}.
388: Caster appears to have been carved from wood with an axe for the next {{!!duration}}.
389: Caster appears to have been crafted out of clay by children for the next {{!!duration}}.
391: Caster appears to shrivel like a raisin each time they cast a spell in the next {{!!l_duration}}.
396: Caster feel compelled to drink every [[potion]] they see for the next {{!!l_duration}}.
398: Caster attracts zealous sycophants wherever they go for the next {{!!l_duration}}.
399: Caster automatically believes that their own [[illusion]]s are real for the next {{!!l_duration}}.
402: Caster becomes disturbingly frenetic until sunset.
403: Caster becomes flat as a sheet of parchment for {{!!s_duration}}.
408: Caster becomes powerfully addicted to [[necromantic|necromancy]] magic for the next {{!!l_duration}}.
409: Caster becomes powerfully addicted to random magical effects for the next {{!!l_duration}}.
410: Caster becomes tightly stuck to the next chair in which they sit.
411: Caster becomes unconscious whenever they become invisible for the next {{!!l_duration}}.
412: Caster becomes violently ill if they eat near a fire for the next {{!!l_duration}}.
413: Caster becomes visibly anxious at the sight of water for the next {{!!l_duration}}.
414: Caster begins aging backwards, one year per second, for the next 10-15 seconds. The effect reverts after {{!!s_duration}}.
415: Caster begins growing one inch per minute for the next {{!!d20}} minutes. The effect then reverts after {{!!s_duration}}.
416: Caster is compelled to begin their conversations with an insulting comment for the next {{!!l_duration}}.
417: Caster begins to resemble the next person who touches them. The effect reverts after {{!!duration}}.
418: Caster briefly turns translucent after casting any spell for the next {{!!l_duration}}.
419: Caster burns with homicidal rage whenever they're struck by magic for the next {{!!duration}}.
420: Caster can alter their weight by up to 50% at will for the next {{!!l_duration}}.
421: Caster can always sense their location relative to this location for the next {{!!d20}} years.
422: Caster can appraise gems by tasting them for the next {{!!l_duration}}.
423: Caster manifests the [[Mark of Detection]] for the next {{!!l_duration}}.
424: Caster manifests the [[Mark of Finding]] for the next {{!!l_duration}}.
425: Caster manifests the [[Mark of Handling]] for the next {{!!l_duration}}.
426: Caster manifests the [[Mark of Healing]] for the next {{!!l_duration}}.
427: Caster manifests the [[Mark of Hospitality]] for the next {{!!l_duration}}.
428: Caster manifests the [[Mark of Making]] for the next {{!!l_duration}}.
429: Caster manifests the [[Mark of Passage]] for the next {{!!l_duration}}.
430: Caster manifests the [[Mark of Scribing]] for the next {{!!l_duration}}.
431: Caster manifests the [[Mark of Sentinel]] for the next {{!!l_duration}}.
432: Caster manifests the [[Mark of Shadow]] for the next {{!!l_duration}}.
433: Caster manifests the [[Mark of Storm]] for the next {{!!l_duration}}.
434: Caster manifests the [[Mark of Warding]] for the next {{!!l_duration}}.
438: Caster can breathe underwater for the next {{!!l_duration}}, but they smell like a fish.
439: Caster can carry any weight of books but only in their bare hands for the next {{!!l_duration}}.
440: Caster can cause one creature near them to turn to iron for {{!!duration}}.
441: Caster can cause one nearby person to age {{!!d10}} years. The effect reverts in {{!!l_duration}}.
442: Caster can change the size of their ears at will. Any changes revert after {{!!duration}}.
443: Caster can conjure apples out of thin air, one at a time, for the next {{!!duration}}.
445: Caster can detach and reattach either of their hands at will for the next {{!!l_duration}}.
447: Caster can detect non-magical fire within 500 yards for the next {{!!l_duration}}.
448: Caster can detect the nearest potable water at will for the next {{!!l_duration}}.
450: Caster can detect true east at will for the next {{!!l_duration}}.
451: Caster can discern a person's age by touching them for the next {{!!l_duration}}.
452: Caster can discern a tree's age by touching it for the next {{!!l_duration}}.
453: Caster can discern whether people are really unconscious for the next {{!!l_duration}}.
454: Caster can discern which spells a magic user is capable of casting for the next {{!!l_duration}}.
455: Caster can disgorge a pound of sawdust once per day for the next {{!!d7}} days.
460: Caster can echolocate like a dolphin while naked and underwater for the next {{!!l_duration}}.
461: Caster is not burned by normal fire for the next {{!!l_duration}}.
462: Caster can extend their legs to twice their normal length at will, for the next {{!!l_duration}}.
464: Caster can handle red-hot metal with their bare hands for the next {{!!d35}} days.
465: Caster can hear what occurs at this location from up to 10 miles away, for the next {{!!d35}} days.
466: Caster can hear what's going on in their home, wherever they are, for the next {{!!l_duration}}.
469: Caster can identify any kind of fungus on sight for the next {{!!l_duration}}.
470: Caster can ignite twigs by sticking them in their mouth for the next {{!!l_duration}}.
472: Caster can induce ravenous hunger in others for the next {{!!l_duration}}.
473: Caster can inflate their left hand like a balloon for the next {{!!l_duration}}.
474: Caster can instantly count quantities of fewer than 1,000 items for the next {{!!l_duration}}.
478: Caster can make their ears resemble noses at will for the next {{!!l_duration}}.
481: Caster can move in total silence for the next {{!!s_duration}}.
482: Caster can move silently while holding a thumb in each nostril for the next {{!!l_duration}}.
484: Caster can not use charged magic items for the next {{!!duration}}.
487: Caster can only wear one shoe at a time for the next {{!!l_duration}}.
488: Caster can open their mouth as wide as they are tall for the next {{!!duration}}.
489: Caster can pass their right arm through up to six inches of wood for the next {{!!l_duration}}.
490: Caster can reattach their own limbs if they're severed for the next {{!!l_duration}}.
491: Caster can recall their own birth with perfect clarity.
492: Caster can remove their tongue and replace it at will for the next {{!!l_duration}}.
493: Caster can remove one eye and replace it at will for the next {{!!l_duration}}.
494: Caster can remove or negate one curse over the course of the next year.
495: Caster can resemble a decaying zombie at will for the next {{!!l_duration}}.
496: Caster can retract their feet into their ankles at will for the next {{!!l_duration}}.
497: Caster can retract their fingers into their palms at will for the next {{!!l_duration}}.
498: Caster can retract their nose into their face at will for the next {{!!l_duration}}.
499: Caster can effortlessly scale walls for the next {{!!l_duration}}.
500: Caster can see in total darkness if they have a piece of fruit in their pocket for the next {{!!l_duration}}.
501: Caster can see secret doors easily but can't see normal doors for the next {{!!l_duration}}.
503: Caster can see through their eyelids for the next {{!!duration}}.
504: Caster can see through up to 1 foot of stone if they have a pebble in their mouth for the next {{!!l_duration}}.
507: Caster can see in total darkness for {{!!2d4}} days.
511: Caster can speak in a whisper to anyone in their line of sight for the next {{!!l_duration}}.
512: Caster can speak in any of {{!!2d4}} voices at will
513: Caster can speak with ants for the next {{!!duration}} but can only ask yes/no questions.
522: Caster can stretch their left arm 2X the length of their body for the next {{!!l_duration}}.
524: {{!!2d4}} rabbits materialize and scatter in different directions. They vanish after {{!!s_duration}}.
525: Caster casts [[conjure elemental]] and immediately loses control of the elemental.
526: Caster casts [[infernal calling]].
527: Caster casts [[summon lesser demons]].
528: Caster summons {{!!2d4}} pigeons.
531: Caster can survive one fall of up to twenty miles for the next {{!!duration}}.
532: Caster can taste foods simply by touching them for the next {{!!l_duration}}.
533: Caster can teleport 10 feet straight up, once per day, for the next {{!!2d4}} days.
534: Caster can teleport up to {{!!d50}} feet 10 times at will, but loses a finger each time. When the last finger is lost, they all return.
536: Caster can teleport up to {{!!d50}}0 feet at will for the next {{!!d7}} day(s), but arrives unconscious for one hour.
538: Caster can teleport up to {{!!d20}}0 feet at will for the next {{!!d7}} day(s), but doesn't arrive for {{!!2d4}} days.
542: Caster can teleport up to {{!!d50}}0 feet at will for the next {{!!d7}} day(s), but only while naked and unencumbered
544: Caster can teleport at will to this exact spot {{!!2d4}} times in the next six months.
545: Caster can teleport into the nearest hollow tree, once, some time in the next six months.
546: Caster can teleport up to fifty feet once per day for the next {{!!d4}} week(s).
547: Caster can throw one baseball-sized item {{!!2d4}} days into the future, once, some time in the next six months.
548: Caster can throw one nearby person {{!!d20}} seconds into the future.
549: Caster can throw one nearby person {{!!d4}} days into the future.
552: Caster can turn 360° at the waist without harm for the next {{!!l_duration}}.
554: Caster can turn their arms to wood for up to {{!!d20}} seconds each day for the next {{!!l_duration}}.
556: Caster can turn their hands invisible at will for the next {{!!duration}}.
559: Caster turns into a falcon for {{!!duration}}.
560: Caster can turn into a small tree while they're indoors for the next {{!!l_duration}}.
562: Caster can turn invisible while they hold their breath for the next {{!!duration}}.
563: Caster can turn invisible while naked and motionless for the next {{!!l_duration}}.
569: Caster can't be blinded or dazzled by sunlight for the next {{!!l_duration}}.
570: Caster can't be burned by magical fire for the next {{!!duration}}.
571: Caster can't be burned by steam or scalding water for the next {{!!l_duration}}.
575: Caster can't be cut by glass for the next {{!!l_duration}}.
576: Caster can't be cut by non-magical blades for {{!!d4}} days.
583: Caster can't be seen through glass or ice for the next {{!!l_duration}}.
584: Caster can't be strangled for the next {{!!l_duration}}.
585: Caster can't breathe for {{!!d20}} seconds.
586: Caster can't bring their left hand within 18 inches of their head for the next {{!!duration}}.
596: Caster can't cast magic unless they're within sight of a tree for the next {{!!l_duration}}.
599: Caster can't create normal or magical fire for {{!!2d4}} days.
601: Caster can't cross moving water while brandishing a weapon for the next {{!!l_duration}}.
608: Caster can't eat any food that doesn't contain a handful of soil for the next {{!!2d4}} days.
613: Caster can't enter any artificial structure for {{!!2d4}} days.
614: Caster can't enter any building in which [[dwarves|dwarf]] are present for the next {{!!l_duration}}.
615: Caster can't go more than 10' from this location for {{!!d20}} hours.
620: Caster can't lift both feet from the ground at the same time for the next {{!!l_duration}}.
621: Caster can't move their arms for the next {{!!d20}} seconds.
622: Caster can't move their left arm or right leg for the next {{!!d20}} seconds.
623: Caster can't move more than 10 feet from the next tree they touch for {{!!d35}} seconds afterwards.
624: Caster can't open any door constructed primarily of wood for the next {{!!l_duration}}.
625: Caster can't open any door that has a hinge made of metal for the next {{!!l_duration}}.
630: Caster can't remember the last {{!!duration}}.
632: Caster can't remove their hands from their pockets for the next {{!!duration}}.
633: Caster can't run while their eyes are open for the next {{!!duration}}.
635: Caster can't see through glass, ice, diamond, or the like for the next {{!!duration}}.
640: Caster can't speak for one hour and can only croak like a frog.
642: Caster can't speak in anything less than a full shout for the next {{!!duration}}.
643: Caster can't speak in sentences longer than 10 syllables for the next {{!!duration}}.
645: Caster can't speak to anyone whom they're not currently touching for the next {{!!duration}}.
649: Caster can't speak unless their thumbs are touching for the next {{!!duration}}.
654: Caster can't tolerate the presence of wet ink for the next {{!!l_duration}}.
657: Caster can't use any magic until someone cuts them with a blade.
658: Caster can't use magic between sunrise and noon for the next {{!!2d4}} days.
660: Caster can't use magic for {{!!d20}} seconds after being struck by magic over the next {{!!l_duration}}.
661: Caster can't use magic for six hours after ingesting meat for the next {{!!2d4}} days.
668: Caster can't use magic until they eats a pound of feathers.
669: Caster can't use magic until sunset tomorrow.
670: Caster can't use magic while sitting for the next {{!!l_duration}}.
671: Caster can't use magic within 100 yards of this spot for {{!!2d4}} days.
675: Caster can't use the spell that triggered this random effect for {{!!l_duration}}.
676: Caster can't use weapons that contain wood for the next {{!!l_duration}}.
681: Caster is compelled to their name to its reverse: "Tom" becomes "Mot". The compulsion wears off after {{!!l_duration}}, but they aren't compelled to change their name back.
682: Caster proclaims that they're doing the work of a randomly-chosen [[Sovereign|Sovereign Host]].
684: Caster claims to be immune to inorganic poisons.
685: Caster proclaims they are the offspring of [[Arawai]] and King [[Boranel ir'Wynarn]].
686: Caster claims to have begotten a child with the [[Silver Flame]].
688: Caster claims to have created the universe.
689: Caster claims to have invented the [[fireball]] spell.
692: Caster is suddenly holding a bag full of mismatched teeth. It vanishes after {{!!duration}}.
693: Caster is suddenly holding a beautiful black velvet painting of [[elves|elf]] on horseback. It vanishes after {{!!duration}}.
694: Caster is suddenly holding a foul, decomposing skull. It vanishes after {{!!duration}}.
703: Caster confesses to every crime they hear about for the next {{!!l_duration}}.
705: Caster overestimates their martial and magical prowess for the next {{!!duration}}.
708: Caster craves moss for the next {{!!l_duration}}.
709: Caster craves wood like a termite for the next {{!!l_duration}}.
710: Caster cries like a baby whenever they're hungry or can't sleep for the next {{!!l_duration}}.
711: Caster cries like a baby whenever they're struck by magic for the next {{!!l_duration}}.
712: Caster is compelled to dance like a belly-dancer for {{!!d35}} seconds.
714: Caster declares that [[dwarves|dwarf]] are indistinguishable from [[orc]]s.
716: Caster declares that they have the power to absolve sins.
717: Caster declares that they are the judge of all living creatures.
719: Caster deeply resents anyone who asks them to use magic for the next {{!!l_duration}}.
720: Caster deeply resents anyone who doesn't praise their magical skill for the next {{!!l_duration}}.
723: Caster demands that employers pay them in wood instead of gold for the next {{!!l_duration}}.
724: Caster demands that their allies adopt fastidious hygiene standards for the next {{!!l_duration}}.
732: Caster develops a stutter while in the presence of [[shifter]]s for the next {{!!l_duration}}.
733: Caster develops an intense hunger for leather strapping for the next {{!!l_duration}}.
744: Caster disgorges {{!!d10}}c worth of copper crowns. They vanish after {{!!duration}}.
745: Caster disgorges {{!!d10}}0 pounds of wet, coarse sand. 
746: Caster disgorges {{!!d4}} apples per hour for the next {{!!d35}} hours. 
747: Caster disgorges {{!!d4}} gallons of foul, necrotic mush. 
748: Caster disgorges {{!!d7}} gallons of rusty sludge.
749: Caster disgorges {{!!d20}} pounds of carrots.
750: Caster disgorges {{!!2d4}} full-sized wool blankets.
751: Caster disgorges a 100 foot length of fine silver wire.
752: Caster disgorges a ball of solid bone nine inches in diameter.
753: Caster disgorges a bar of copper four feet in length.
754: Caster disgorges a bar of soap.
755: Caster disgorges a bolt of finely embroidered silk.
756: Caster disgorges a book about gastrointestinal anomalies.
758: Caster disgorges a box of rare botanical samples.
759: Caster disgorges a bushel of ripe peaches.
761: Caster disgorges a four-course meal for three.
762: Caster disgorges a fully-grown cactus.
763: Caster disgorges a full-sized barrel.
764: Caster disgorges a glass cube four inches on a side.
765: Caster disgorges a glass vial containing a mysterious [[potion]].
766: Caster disgorges a golden birdcage.
767: Caster disgorges a [[dragonmarked house]]'s signet ring.
768: Caster disgorges a large bunch of bananas.
769: Caster disgorges a large chair.
770: Caster disgorges a large pane of glass.
771: Caster disgorges a length of heavy chain.
772: Caster disgorges a life-sized ice sculpture of a horse.
773: Caster disgorges a long hunk of driftwood.
774: Caster disgorges a lump of brass the size of their torso.
775: Caster disgorges a medium-sized astrolabe.
776: Caster disgorges a mop and a wooden bucket full of suds.
777: Caster disgorges an ornate key.
778: Caster disgorges a pair of deer antlers.
779: Caster disgorges a pair of smith's fire tongs.
781: Caster disgorges a pound of mercury.
782: Caster disgorges a pound of molten lead.
784: Caster disgorges a ship's anchor.
785: Caster disgorges a small brazier full of burning coals.
786: Caster disgorges a porcelain bowl.
787: Caster disgorges a weapon that they misplaced {{!!2d4}} months ago.
788: Caster disgorges a whole pumpkin.
789: Caster disgorges a wrought-iron staircase banister.
791: Caster disgorges an [[giant]]'s femur.
792: Caster disgorges an entire beehive.
793: Caster disgorges an exact copy of the head of someone nearby. It vanishes after {{!!s_duration}}.
794: Caster disgorges an oil painting of this scene. It vanishes after {{!!duration}}.
795: Caster disgorges a [[fastieth]] egg.
796: Caster disgorges enough snow to blanket an area ten feet square.
797: Caster disgorges half of a canoe. 
798: Caster disgorges the carcass of a strange and colorful bird.
799: Caster disgorges the emblem of the Order of the [[Emerald Claw]].
800: Caster disgorges the entire, intact skin of an [[umber hulk]].
801: Caster disgorges the entire, intact skin of someone nearby. It vanishes after {{!!duration}}.
802: Caster disgorges what appears to be their entire nervous system. It vanishes after {{!!duration}}.
803: Caster disgorges what appears to be their own still-beating heart. It vanishes after {{!!duration}}.
804: Caster displays all the signs of full demonic possession for the next {{!!s_duration}}.
809: Caster distrusts anyone who won't let them examine their teeth for the next {{!!duration}}.
818: Caster dreams each night of a powerful and malevolent artifact for the next {{!!d50}} days.
819: Caster dreams each night of being painfully turned inside out for the next {{!!d50}} days.
820: Caster dreams each night of being worshipped by gods for the next {{!!d50}} days.
823: Caster is compelled to drink any potions they're now carrying.
825: Caster is compelled to embrace someone nearby and is reluctant to let go for {{!!duration}}.
826: Caster is compelled to embrace the nearest tree and refuses to let go for the next {{!!duration}}.
832: Caster experiences pain if they handles jewels or precious gems for the next {{!!l_duration}}.
834: Caster experiences violent, full-body spasms for {{!!s_duration}}.
835: Caster faces north and is stuck that way for {{!!s_duration}}.
836: Caster falls down the next flight of steps they encounter within the next week.
837: Caster falls from the nearest tree.
845: Caster fears that their limbs are vanishing one by one for the next {{!!duration}}.
846: Caster fears that spiders have lain countless eggs in their brain for the next {{!!duration}}.
848: Caster forms a telepathic bond to a random stranger within {{!!d4}} miles. The bond lasts for {{!!duration}}.
849: Caster feels as if they're walking on a slope for the next {{!!duration}}.
850: Caster feels as though they're trudging through knee-deep snow for the next {{!!duration}}.
851: Caster feels as though they're trudging uphill for the next {{!!duration}}.
853: Caster feels countless small snakes crawling all over their body for the next {{!!duration}}.
856: Caster feels inexplicable anxiety when they hear their name for the next {{!!l_duration}}.
859: Caster feels intense but unfocused hatred for {{!!d7}} hours.
865: Caster feels powerless unless they're wearing boots on their hands for the next {{!!duration}}.
867: Caster feels thorny roots growing slowly through their flesh for the next {{!!duration}}.
946: Caster finds the whole idea of "names" to be silly and pointless for the next {{!!duration}}.
950: Caster flees, panic-stricken, at top speed in a random direction. The panic persists for {{!!d35}} seconds.
951: Caster flickers like a guttering candle for {{!!2d4}} seconds.
953: Caster flies into a murderous rage and attacks their nearest ally for the next {{!!d4}}0 seconds.
954: Caster forgets any fire that they lights
955: Caster forgets any common-[[tier|spell tier]] spell they now have memorized. Their amnesia fades after {{!!duration}}.
956: Caster forgets everyone's name for {{!!duration}}.
961: Caster forgets how to walk for {{!!d10}} hours.
967: Caster gains no benefit from wearing gloves or gauntlets for the next {{!!2d4}} days.
969: Caster gains 10 lbs per minute for the next {{!!d20}} minutes. After {{!!s_duration}}, the effect is reverted.
970: Caster seems to be lying when talking about magic for the next {{!!l_duration}}.
973: Caster glows as bright as daylight while they're asleep for the next {{!!l_duration}}.
974: Caster goes berserk and attacks the next [[goblinoid]] creature they see within the next {{!!s_duration}}.
975: Caster goes berserk in the presence of royalty for the next {{!!duration}}.
976: Caster goes berserk whenever they receive magical healing for the next {{!!duration}}.
985: Caster grows {{!!d10}} new and mysterious organs in their abdomen. They persist for {{!!l_duration}}.
986: Caster grows an additional finger each week for {{!!2d4}} weeks, after which the extra fingers vanish.
987: Caster grows one inch per day for the next {{!!2d4}} days, after which their original height is restored.
988: Caster hallucinates wildly for {{!!duration}} the next time they drink water.
989: Caster hallucinates wildly until they drink a quart of water.
993: Caster has a large advantage on their next {{!!d4}} attempts.
995: All non-magical locks within {{!!2d4}} yards of the caster immediately unlock for the next {{!!duration}}.
996: The next [[consequence]] the caster suffers within the next 30 minutes will make them go blind for {{!!s_duration}}.
998: Caster has a clear memory of building themself from scratch. This delusion lasts for {{!!duration}}.
1003: Caster can understand (but not speak) any language they hear for the next {{!!duration}}.
1005: Caster forms a large but harmless hole at the top of their head. It persists for {{!!duration}}.
1011: Caster forms a small keyhole in the palm of their right hand. It persists for {{!!duration}}.
1012: Caster has a star-shaped dent at the back of their head for the next {{!!duration}}.
1013: Caster has a violent argument with the next soldier they meet within the next few weeks.
1014: Caster develops an almost paralyzing fear of death and the dead for the next {{!!duration}}.
1017: Caster develops an identical face on the back of their head for the next {{!!s_duration}}.
1018: Caster has an inexplicable but overwhelming fear of sunrise for the next {{!!d4}} days.
1020: Caster has an overpowering hatred of [[everbright lantern]]s for the next {{!!duration}}.
1024: Caster suddenly has blasphemous tattoos over most of their body that persist for {{!!duration}}.
1029: Caster has no scent whatsoever for the next {{!!l_duration}}.
1030: Caster suddenly has ram's horns growing from their hips, which persist for the next {{!!duration}}.
1031: Caster suddenly has a bell tied with a ribbon to each of their toes.
1034: Caster has ten thumbs in their mouth. They vanish after {{!!s_duration}}.
1035: Caster has ten thumbs instead of fingers. They revert to normal after {{!!duration}}.
1043: The caster (and only the caster) hears a choir of [[angel]]s singing their praises for {{!!d4}} hours.
1044: The caster (and only the caster) hears crickets chirping loudly for the next {{!!duration}}.
1045: The caster (and only the caster) hears malevolent voices nearby whispering about their doom for the next {{!!duration}}.
1046: The caster (and only the caster) hears normally except for voices, which seem subtly muted
1047: The caster (and only the caster) hears the echo of their own voice whenever they speak for the next {{!!duration}}.
1049: The caster (and only the caster) hears waves crashing on a beach for the next {{!!duration}}.
1053: Caster needs only one-third the normal amount of food for the next {{!!2d4}} weeks.
1054: Caster hurls their spellbook, [[magical implement]], weapon, or the most valuable object they're holding as far as they can.
1077: Caster is able to see their own eyes for the next {{!!s_duration}}.
1078: Caster is absolutely convinced that they're a [[warforged]] for the next {{!!duration}}.
1079: Caster is afflicted with severe frostbite in {{!!d4}} limbs.
1080: Caster is afflicted with [[vampirism|vampire]], but only during the day. The caster is reverted to normal after {{!!l_duration}}.
1084: Caster is attacked by countless stinging earthworms that rise from the ground.
1091: Caster is blind while within any artificial structure for the next {{!!duration}}.
1092: Caster is blinded for {{!!d4}} minutes by a swirl of tiny feathers.
1094: Caster is briefly obscured by a dense cloud of sawdust
1095: Caster is briefly paralyzed at the sight of their own blood within the next {{!!duration}}.
1096: Caster is briefly stunned by a shower of hard beans.
1097: Caster is brutally punched in the stomach by an unseen hand.
1098: Caster is suddenly carrying {{!!d4}} waterskins filled with human blood.
1099: Caster is suddenly carrying a bowl full of water that they must not spill. The compulsion not to let the water spill lasts for {{!!s_duration}}.
1104: Caster is certain  for the next {{!!duration}} that they used to have four arms.
1106: Caster is certain that they'll die in the next {{!!2d4}} seconds.
1111: Caster is suddenly chained to an anvil.
1112: Caster is suddenly clad in funerary wraps as if they're about to be interred.
1113: Caster is completely invulnerable to all harm for {{!!2d4}} seconds.
1116: Caster is convinced that their allies plan to kill and eat them. The delusion persists for {{!!duration}}.
1117: Caster is suddenly covered in a shell of frozen slime.
1118: Caster is suddenly covered in barnacles. They brush off with minimal trouble.
1119: Caster is covered in indelible, jet-black handprints. They fade after {{!!duration}}.
1120: Caster is suddenly covered in a delicious [[Aundair]]ian wood-nut sauce.
1121: Caster is suddenly covered in berry sorbet.
1123: Caster is deaf and blind until sunrise tomorrow.
1124: Caster is suddenly determined to destroy their [[magical implement]] (if any) for the next {{!!s_duration}}.
1125: Caster is determined to rid themself of their nails, teeth, and hair for the next {{!!s_duration}}.
1127: Caster is drawn forcefully toward the spell's target point for the next {{!!s_duration}}.
1128: Caster is suddenly dressed like a high-class burlesque performer.
1131: Caster is encased from the waist down in a block of cheese.
1133: Caster is suddenly enclosed in a large paper bag.
1134: Caster is entirely immune to magic for {{!!s_duration}}.
1141: Caster rapidly recovers from an injury each time they trigger a random magical effect.
1190: Caster is invisible from their hips to their sternum for the next {{!!duration}}.
1191: Caster is invisible to {{!!d4}} specific nearby people for the next {{!!duration}}.
1197: Caster is invisible to themself for {{!!2d4}} days.
1198: Caster is invisible to themself from the waist down for the next {{!!2d4}} days.
1199: Caster is invisible to horses for the next {{!!2d4}} days.
1204: Caster is invisible to non-magical reptiles for the next {{!!duration}}.
1206: Caster is invisible to the person who most recently wounded them for the next {{!!duration}}.
1213: Caster is on the verge of starvation, no matter how much they eat, for the next {{!!duration}}.
1215: Caster is paralyzed from the neck up for the next {{!!2d4}} seconds.
1219: Caster is pinned beneath a large tombstone bearing their name. It vanishes after {{!!duration}}.
1226: Caster is reluctant to bring any book indoors for the next {{!!duration}}.
1227: Caster is reluctant to carry any weapons after sunset for the next {{!!duration}}.
1229: Caster is reluctant to enter any building they're previously entered for the next {{!!duration}}.
1230: Caster is reluctant to get blood on any of their weapons for the next {{!!duration}}.
1253: Caster is suddenly sealed in a huge but otherwise normal chicken egg.
1254: Caster is suddenly sealed in a pine coffin.
1255: Caster is suddenly sealed in an oak barrel.
1256: Caster is suddenly seated on a platform high atop a tall, narrow pole.
1259: Caster is smeared from head to toe with molasses.
1266: Caster is sparsely flecked with salt like a pretzel.
1270: Caster is suddenly alone at the center of a vast field of slag. They teleport back to their original location after {{!!d10}} seconds.
1271: Caster is suddenly carrying a twenty-pound sack full of straw.
1273: Caster is suddenly on the other side of the nearest locked door.
1275: Caster is suddenly sitting in an elegant bathtub.
1277: Caster is suddenly standing atop a single stilt.
1278: Caster is suddenly standing atop a very tall ladder.
1279: Caster is suddenly inside the nearest chunk of stone large enough to fit them, as the [[meld into stone]] spell. They can exit the stone anytime but cannot reenter.
1280: Caster is suddenly standing atop the nearest horse or other mount creature.
1281: Caster is suddenly standing in a bucket of butter.
1282: Caster is suddenly standing in a canoe on a rushing river. They teleport back to their original location after {{!!d10}} seconds.
1283: Caster is suddenly standing in the middle of a snow-covered field. They teleport back to their original location after {{!!d10}} seconds.
1288: Caster is suddenly standing knee-deep in manure.
1289: Caster is suddenly standing on a two-foot cube of solid aluminum. It vanishes after {{!!s_duration}}.
1290: Caster is suddenly surrounded by a quartet of fiddling skunks. They vanish into sweet-smelling smoke after {{!!s_duration}}.
1291: Caster is suddenly unsure that they really wants to be a magic user
1292: Caster is suddenly wearing a full suit of chain armor made in the fine style of the [[Mendyrian]] noble line of [[Aerenal]]. 
1293: Caster is surrounded by eight-foot-tall slabs of concrete.
1300: Caster is thickly shrouded in cobwebs.
1301: Caster is thoroughly entangled in the tentacles of a man-of-war.
1302: Caster is thoroughly smeared in bacon grease.
1303: Caster is thoroughly soaked with egg whites.
1304: Caster is thought to have a huge bounty on their head
1306: Caster is thrown {{!!d20}} feet into the air.
1308: Caster is thrown violently backward from the spell's target point.
1309: Caster is tightly bound in strong wire.
1312: Caster is trapped in a column of brackish water for {{!!s_duration}}.
1313: Caster is unable to ask questions for {{!!duration}}.
1314: Caster is unable to cross any bridge that spans flowing water for the next {{!!duration}}.
1319: Caster is unaffected by the spell [[remove curse]] or [[dispel magic]] for the next {{!!duration}}.
1325: Caster is utterly unable to disguise themself by magic for the next {{!!duration}}.
1328: Caster is violently ejected from the next building they enter within the next few days.
1330: Caster is wearing a welder's mask and can't remove it until dawn.
1331: Caster is wearing an ornate mask made of the most delicate glass.
1332: Caster is wearing blood-soaked surgical gloves.
1336: Caster is wearing enough clothing for five people.
1337: Caster is wearing extraordinarily glamorous false eyelashes.
1341: Caster is wearing ice skates
1350: Caster is wracked by searing pain every time they ask a question for the next {{!!l_duration}}.
1362: Caster knows the location of every mammal within one mile for the next {{!!s_duration}}.
1363: Caster knows the secret language of frogs and toads for the next {{!!duration}}.
1365: Caster leaps from the next bridge that they cross within the next few days.
1366: Caster learns a secret about one of their allies.
1370: Caster leaves no footprints for the next {{!!duration}}.
1372: Caster suddenly looks as if they're been submerged in a bog for six months.
1383: Caster loses all hair on the left side of their body. It grows back over the course of {{!!duration}}.
1384: Caster becomes illiterate for {{!!duration}}.
1408: Caster must state their name to anyone who asks it for the next {{!!duration}}.
1411: Caster no longer needs to eat but can't heal injuries naturally for the next {{!!l_duration}}.
1412: Caster no longer perspires for the next {{!!l_duration}}.
1413: Caster no longer produces saliva for the next {{!!l_duration}}.
1428: Caster loses the sense of taste for the next {{!!duration}}.
1437: Caster quickly rusts if someone else's blood touches them any time in the next {{!!duration}}.
1438: Caster randomly teleports {{!!d10}}0 yards the next time they become invisible within the next {{!!l_duration}}.
1448: Caster reacts violently to the scent of baking bread for the next {{!!l_duration}}.
1479: Caster requires only {{!!2d4}} hours of sleep per week for the next {{!!d7}} weeks.
1496: Caster routinely loses their train of thought mid-sentence for the next {{!!l_duration}}.
1497: Caster runs to and attempts to uproot the nearest tree for the next {{!!s_duration}}.
1501: Caster sees as if their eyes were hovering one foot to the left for the next {{!!duration}}.
1502: Caster sees as if their eyes were in the back of their head for the next {{!!duration}}.
1503: Caster sees as if their eyes were where their ears are for the next {{!!duration}}.
1504: Caster sees colorful ribbons swirling in the air around them for the next {{!!duration}}.
1505: Caster sees cryptic messages in the patterns of plant growth for the next {{!!duration}}.
1506: Caster sees everything as if they're deep underwater for the next {{!!duration}}.
1508: Caster sees illusory geysers of flaming pitch erupting all around them for the next {{!!duration}}.
1510: Caster sees huge illusory bats and manta rays whirling all around them for the next {{!!duration}}.
1513: Caster sees the spell's target point as a place of great holiness for the next {{!!duration}}.
1518: Caster shivers uncontrollably in the presence of fire for the next {{!!l_duration}}.
1527: Caster smells faintly of cabbage for the next {{!!duration}}.
1528: Caster smells strongly burnt toast for the next {{!!duration}}.
1529: Caster smells strongly of alcohol for the next {{!!duration}}.
1530: Caster smells strongly of blood for the next {{!!duration}}.
1531: Caster smells strongly of boiling tar for the next {{!!duration}}.
1532: Caster smells strongly of exotic perfumes for the next {{!!duration}}.
1533: Caster smells strongly of lantern oil for the next {{!!duration}}.
1535: Caster smells strongly of garlic for the next {{!!duration}}.
1536: Caster smells strongly of peppermint for the next {{!!duration}}.
1537: Caster smells strongly of rose petals for the next {{!!duration}}.
1538: Caster sneezes {{!!d20}} times.
1540: Caster sparkles as though dusted with glitter for the next {{!!duration}}.
1541: Caster speaks in an obviously fake and irritating [[Metrol]] (Cockney) accent.
1543: Caster spends {{!!2d4}} seconds attempting to ignite their shoes.
1544: Caster spends {{!!s_duration}} trying to cast the same spell that triggered this random magical effect.
1545: Caster spends {{!!2d4}} seconds trying to strangle themself with their hair.
1546: Caster spends {{!!2d4}}0 seconds racing toward the nearest coastline.
1547: Caster spends {{!!2d4}}0 seconds trying to look into their own ears.
1549: Caster spews philosophical gobbledygook about one-hand-clapping for the next {{!!2d4}} minutes.
1550: Caster spouts water like a gargoyle for {{!!2d4}} seconds.
1552: Caster sprouts a dorsal fin that persists for {{!!duration}}.
1553: Caster sprouts a ghastly tentacle from the center of their chest that persists for {{!!duration}}.
1554: Caster sprouts a large, spongy mass between their shoulder blades that persists for {{!!duration}}.
1555: Caster sprouts a mane like a lion's that persists for {{!!duration}}.
1556: Caster sprouts a new ear on the back of one hand that persists for {{!!duration}}.
1557: Caster sprouts a pretty flower from their chin that persists for {{!!duration}}.
1558: Caster sprouts a prominent brow ridge that persists for {{!!duration}}.
1559: Caster sprouts a retractable metal antenna from their forehead that persists for {{!!duration}}.
1560: Caster sprouts a small, flaming wick atop of their head that persists for {{!!duration}}.
1561: Caster sprouts a tiny horn from the tip of their nose that persists for {{!!duration}}.
1562: Caster sprouts a zipper along the length of their spine that persists for {{!!duration}}.
1563: Caster sprouts an additional ear behind each of their normal ears that persist for {{!!duration}}.
1564: Caster sprouts an eye at the exact top of their head that persists for {{!!duration}}.
1565: Caster sprouts an ugly protuberance from their forearm that persists for {{!!duration}}.
1566: Caster sprouts sharp blades along the edges of their forearms that persist for {{!!duration}}.
1567: Caster sprouts tiny, useless wings from the bridge of their nose that persist for {{!!duration}}.
1568: Caster sprouts wild-looking feathers on their cheeks that persist for {{!!duration}}.
1569: Caster sprouts wires and rubber tubing from their flesh that persist for {{!!duration}}.
1571: Caster stares at the spell's target point for {{!!d35}} seconds.
1574: For the next {{!!duration}}, the caster believes they'll explode if they stop running.
1575: A snare trap materializes beneath the caster's foot and immediately triggers, hoisting the caster upside down into the nearest tree or vertical structure.
1577: Caster sticks to the next metal item they touch for {{!!d50}} seconds.
1579: Caster sprouts {{!!2d4}} toes from their face that persist for {{!!duration}}.
1580: Caster suddenly has feet like an elephant for the next {{!!duration}}.
1582: Caster suddenly has ten toes on each foot for the next {{!!duration}}.
1583: Caster suddenly has ten toes on one foot and none on the other for the next {{!!duration}}.
1586: Caster suddenly starts hemorrhaging honey and molasses for the next {{!!d7}} minutes.
1590: Caster suffers an intense, debilitating fever for {{!!d4}} days.
1591: For the next {{!!d10}} hours, the caster suffers bouts of rampant xenophobia against a random other [[humanoid]] race that last for {{!!d4}}0 seconds.
1592: Caster suffers brief pain every time they close a book for the next {{!!l_duration}}.
1597: Caster suffers incredible fear the next time they cross a bridge.
1598: Caster suffers intense pain during attempts at magical healing for the next {{!!duration}}.
1599: Caster suffers intense pain in their eyes whenever they see [[gnome]]s or [[undead]] for the next {{!!l_duration}}.
1600: Caster suffers intense pain whenever they change shape for the next {{!!duration}}.
1601: Caster suffers intense pain whenever they eat cooked meat for the next {{!!l_duration}}.
1602: Caster suffers intense pain whenever they enter a temple or church for the next {{!!l_duration}}.
1603: Caster suffers intense pain whenever they pass through a doorway for the next {{!!duration}}.
1604: Caster suffers intense pain whenever they tread upon grass for the next {{!!duration}}.
1605: Caster suffers intense pain whenever they try to sing for the next {{!!duration}}.
1606: Caster suffers intense pain whenever they use [[divination]] magic for the next {{!!duration}}.
1607: Caster suffers intense pain whenever they use a [[magic item]] for the next {{!!duration}}.
1609: Caster suffers the bends as if they surfaced from deep water too quickly. The pain persists for {{!!s_duration}}.
1611: Caster suspects that all foliage nearby is hostile to them for the next {{!!duration}}.
1614: Caster suspects that their use of magic is entirely delusional for the next {{!!duration}}.
1617: Caster tries to take a big bite out of the nearest book.
1618: Caster tries to take a big bite out of the nearest statue
1619: Caster tries to take a big bite out of the nearest tree
1620: Caster takes a vow of absolute pacifism for {{!!2d4}} hours.
1622: Caster teleports to exactly where they were standing an hour ago.
1626: Caster teleports to the spot where they last ate.
1628: Caster loudly proclaims that their bones are made of diamond.
1632: Caster tends to become briefly invisible at inconvenient times for the next {{!!d7}} days.
1633: Caster tends to dribble heavily when drinking from a mug or cup for the next {{!!l_duration}}.
1637: Caster thinks that a magic candle is burning in their stomach for the next {{!!duration}}.
1638: Caster thinks that a nearby ally is sapping their magical energies for the next {{!!duration}}.
1641: Caster thinks they are caught in a violent hailstorm for the next {{!!d50}} seconds.
1642: Caster thinks that all fire is an illusion for the next {{!!duration}}.
1647: Caster thinks that any wound they receives is much, much worse for the next {{!!duration}}.
1648: Caster thinks that elementals pose no threat to them for the next {{!!duration}}.
1649: Caster thinks that every herbivore in the world is called a goat for the next {{!!l_duration}}.
1650: Caster thinks that every scratch will infect them with [[lycanthropy|lycanthrope]] for the next {{!!2d4}} hours.
1651: Caster thinks that everyone they know is an impostor for the next {{!!duration}}.
1653: Caster thinks that everyone thinks that they are an impostor for the next {{!!duration}}.
1654: Caster thinks that everything they own has been replaced by a copy for the next {{!!duration}}.
1655: Caster thinks that everything they own is powerfully enchanted for the next {{!!duration}}.
1657: Caster thinks that food prepared by others is poisonous to them for the next {{!!d4}} days.
1658: Caster thinks that gold will burn them if placed against their skin for the next {{!!l_duration}}.
1659: Caster thinks that they came into existence just {{!!d4}} days ago. The delusion persists for {{!!duration}}.
1660: Caster thinks that they can become invisible to [[undead]] at will for the next {{!!duration}}.
1661: Caster thinks that they can command beasts to do their bidding for the next {{!!duration}}.
1662: Caster thinks that they can communicate with ants for the next {{!!duration}}.
1663: Caster thinks that they can communicate with cats for the next {{!!duration}}.
1664: Caster thinks that they can fly by leaping off of tall buildings for the next {{!!duration}}.
1665: Caster thinks that they can handle red-hot metal without harm for the next {{!!duration}}.
1666: Caster thinks that they can neutralize poisons by swallowing them for the next {{!!duration}}.
1668: Caster thinks that they can speak directly to the [[Dark Six]] for the next {{!!duration}}.
1669: Caster thinks that they can speak with birds for the next {{!!duration}}.
1671: Caster thinks that they died during their youth for the next {{!!duration}}.
1672: Caster thinks that they have a weakness to green rock for the next {{!!duration}}.
1673: Caster thinks that they have diplomatic immunity and cannot be prosecuted for crimes. The delusion persists for the next {{!!duration}}.
1675: Caster thinks that they are attended by invisible [[undead]] loyal servants for the next {{!!duration}}.
1677: Caster thinks that they know the location of a vast horde of gold within 20 yards. The delusion persists for the next {{!!duration}}.
1679: Caster thinks that they must eat a pound of soil by midnight for the next {{!!duration}}.
1680: Caster thinks that they must hold an awkward item to cast magic for the next {{!!duration}}.
1683: Caster thinks that they must quickly remove and burn their clothes for the next {{!!duration}}.
1685: Caster thinks that they owe thousands of gold pieces to the king. They don't know which king. The delusion persists for the next {{!!duration}}.
1686: Caster thinks that they own everything now in their line of sight. The delusion persists for the next {{!!duration}}.
1687: Caster thinks that they smell strongly of manure, but they don't. The delusion persists for the next {{!!duration}}.
1691: Caster thinks that they'll be executed for treason at dawn tomorrow. The delusion persists for the next {{!!d7}} hours.
1692: Caster thinks that they'll be executed for treason if they use magic. The delusion persists for the next {{!!duration}}.
1693: Caster thinks that they'll be immolated if they look at fire for the next {{!!duration}}.
1695: Caster thinks that they'll catch a disease if they use [[magic item]]s for the next {{!!duration}}.
1696: Caster thinks that they'll combust if they get wet for the next {{!!duration}}.
1697: Caster thinks that they'll combust if they tell a lie for the next {{!!duration}}.
1706: Caster thinks that they're a priest of a foul [[aberration]] called Ygorl, Lord of Entropy. The delusion persists for the next {{!!duration}}.
1707: Caster thinks that they're actually 10X older than they appear to be for the next {{!!duration}}.
1709: Caster thinks that they're been declared The Protector of the Forest for the next {{!!duration}}.
1711: Caster thinks that they're being attacked by piranha for the next {{!!duration}}.
1713: Caster thinks that they're being consumed by invisible worms for the next {{!!duration}}.
1714: Caster thinks that they're being held against their will for the next {{!!duration}}.
1715: Caster thinks that they're being attacked by rabid dogs for the next {{!!duration}}.
1716: Caster thinks that they're being squeezed by a large python for the next {{!!duration}}.
1717: Caster thinks that they're dead and hopes their allies don't find out. The delusion persists for the next {{!!duration}}.
1720: Caster thinks that they've died and their soul is in [[Dolurrh]]. The delusion persists for the next {{!!duration}}.
1726: Caster thinks that they're immune to non-magical diseases for the next {{!!duration}}.
1727: Caster thinks that they're indentured to a random stranger within 20 yards, who they believe is a nearby landowner. The delusion persists for the next {{!!duration}}.
1728: Caster thinks that they're invincible while they're talking for the next {{!!duration}}.
1729: Caster thinks that they're invulnerable to magical weapons for the next {{!!duration}}.
1730: Caster thinks that they're invulnerable to missile weapons for the next {{!!duration}}.
1732: Caster thinks that they're invulnerable while wearing a hat for the next {{!!duration}}.
1736: Caster thinks that they're raised themself from the dead for the next {{!!duration}}.
1737: Caster thinks that they're seeing through someone else's eye for the next {{!!duration}}.
1738: Caster thinks that they're slowly transforming into a [[dragon]] for the next {{!!duration}}.
1739: Caster thinks that they're sold their soul to several different [[devil]]s for the next {{!!duration}}.
1740: Caster thinks that they sold their soul to that guy at the market. You know, that guy! The delusion persists for {{!!duration}}.
1741: Caster thinks that they're soon to be bronze-plated for the next {{!!d20}} minutes.
1742: Caster thinks that they're standing at the edge of a cliff for the next {{!!2d4}} seconds.
1744: Caster thinks that they're standing in waist-deep water for the next {{!!2d4}} minutes.
1745: Caster thinks that they're standing on a tall, narrow staircase for the next {{!!s_duration}}.
1746: Caster thinks that they've stolen this body from its rightful owner for the next {{!!duration}}.
1747: Caster thinks that they're the child of some unlikely person nearby for the next {{!!s_duration}}.
1748: Caster thinks that they're the lizard king and can do anything for the next {{!!duration}}.
1750: Caster thinks that they're the victim of an elaborate practical joke for the next {{!!duration}}.
1752: Caster thinks that they're water soluble for the next {{!!duration}}.
1755: Caster thinks that their allies' wounds are much more serious for the next {{!!duration}}.
1759: Caster thinks that their clothing is drenched in strong acid for the next {{!!s_duration}}.
1761: Caster thinks that their death will bring about the apocalypse. The delusion persists for the next {{!!l_duration}}.
1766: Caster thinks that their face is far too hideous to look at for the next {{!!duration}}.
1767: Caster thinks that their face is just a mask they wear on their skull for the next {{!!duration}}.
1768: Caster thinks that their hands will disintegrate if they touch gold for the next {{!!duration}}.
1769: Caster thinks that their head is a parasitic organism for the next {{!!s_duration}}.
1773: Caster thinks that their head will shatter if they wear a hat for the next {{!!duration}}.
1774: Caster thinks that their [[magic item]]s are about to explode for the next {{!!1d4}}0 seconds.
1775: Caster thinks that their [[magic item]]s are plotting against them for the next {{!!duration}}.
1776: Caster thinks that their soul is controlling their body from far away for the next {{!!duration}}.
1777: Caster thinks that their soul was forced into this current body for the next {{!!duration}}.
1783: Caster thinks that their teeth are on the verge of exploding for the next {{!!s_duration}}.
1788: Caster thinks that many of their memories were falsely implanted for the next {{!!l_duration}}.
1790: Caster thinks that they must hold one hand to their head at all times for the next {{!!duration}}.
1791: Caster thinks that no non-magical animal can harm them for the next {{!!duration}}.
1793: Caster thinks that no one really understands what they're saying for the next {{!!duration}}.
1797: Caster thinks that rhyming words have mystical significance for the next {{!!l_duration}}.
1799: Caster thinks that some item they're carrying will soon explode. The delusion persists for the next {{!!duration}}.
1800: Caster thinks that some nearby person killed them yesterday. The delusion persists for the next {{!!duration}}.
1803: Caster thinks that the king owes them a big favor. The delusion persists for the next {{!!l_duration}}.
1804: Caster thinks that the stars are speaking to them for the next {{!!duration}}.
1805: Caster thinks that the target is the only one who can save them for the next {{!!duration}}.
1806: Caster thinks that the target's death will cause the apocalypse for the next {{!!duration}}.
1807: Caster thinks that the top of their head should be flattened. The delusion persists for the next {{!!duration}}.
1811: Caster thinks that this is all just a big misunderstanding for the next {{!!duration}}.
1815: Caster tries to pop their head by squeezing it with both hands for the next {{!!s_duration}}.
1816: Caster tries to swallow any writing instrument that they're carrying for the next {{!!s_duration}}.
1818: Caster tries very hard to twist their nose upside down for the next {{!!duration}}.
1819: Caster turns bright blue while they're bleeding for the next {{!!l_duration}}.
1820: Caster turns into a clothing store mannequin for {{!!s_duration}}.
1821: Caster turns into a small, pot-bellied pig for {{!!s_duration}}.
1822: Caster turns into an [[elemental]] for {{!!s_duration}}.
1823: Caster turns invisible to themself but not to anyone else for the next {{!!duration}}.
1824: Caster turns to stone for the next {{!!s_duration}}.
1825: Caster unleashes a torrent of shocking profanity for {{!!d4}}0 seconds.
1827: Caster utters shocking blasphemies in the presence of clergy for the next {{!!l_duration}}.
1830: Caster vanishes; in {{!!d4}}0 seconds they appear at the target point.
1832: Caster vows not to rest until they're found the real killers. The delusion persists for {{!!l_duration}}.
1834: Caster vows to make a little birdhouse in their soul.
1836: Caster vows to slay the next person who addresses them by name.
1837: Caster is compelled to wager all of their money on an improbable contest.
1838: Caster walks with a profound limp for the next {{!!l_duration}}.
1842: Caster weeps powerfully adhesive tears for {{!!d4}}0 seconds.
1843: Caster weeps tears of blood whenever someone says their name for the next {{!!duration}}.
1850: Caster won't remember the next {{!!d10}} hours.
1851: Caster, their gear, and clothes are translucent for {{!!2d4}} days.
1861: Caster's arms and legs are suddenly bound in shackles of gold. The shackles vanish after {{!!duration}}.
1862: Caster's arms and legs look like chicken's legs for the next {{!!duration}}.
1863: Caster's arms are covered by scars from ritual burns for the next {{!!duration}}.
1864: Caster's arms are covered in hideous welts and bruises for the next {{!!duration}}.
1867: Caster's arms vanish for the duration of the intended [[spell]].
1869: Caster's attempts at scrying yield sanity-damaging visions for the next {{!!l_duration}}.
1870: Caster's attempts at scrying yield visions of a sunken city for the next {{!!l_duration}}.
1872: Caster's attempts at scrying yield visions of their own home for the next {{!!l_duration}}.
1873: Caster's attempts at scrying yield visions of horrific carnage for the next {{!!l_duration}}.
1874: Caster's attempts at scrying yield visions of impossible events for the next {{!!l_duration}}.
1879: Caster's attempts at scrying yield visions of the caster themself for the next {{!!l_duration}}.
1882: Caster's attempts at scrying yield visions of this location for the next {{!!l_duration}}.
1883: Caster's attempts at scrying yield visions of utter desolation for the next {{!!l_duration}}.
1885: Caster's attempts to change shape fail spectacularly for the next {{!!duration}}.
1886: Caster's back is scarred in a checkerboard pattern of burns for the next {{!!duration}}.
1887: Caster's back is scarred with the imprint of a dragon's foot for the next {{!!duration}}.
1890: Caster's big toes become opposable like thumbs for the next {{!!duration}}.
1891: Caster's blood causes metal to become invisible for the next {{!!l_duration}}.
1893: Caster's blood is a sickly green and smells like acetone for the next {{!!duration}}.
1896: Caster's blood is strongly adhesive after it leaves their body for the next {{!!duration}}.
1898: Caster's blood is weightless for the next {{!!duration}}.
1900: Caster's blood leaves indelible stains on rock and stone for the next {{!!duration}}.
1910: Caster's body is scarred as if they're undergone an autopsy for the next {{!!duration}}.
1911: Caster's body is scarred with innumerable cryptic runes for the next {{!!duration}}.
1912: Caster's body swivels 180° at the waist and stays that way for the next {{!!duration}}.
1917: Caster's boots adhere strongly to stone while they're wearing them for the next {{!!duration}}.
1919: Caster's boots can not move more than ten feet from this spot for the next {{!!l_duration}}.
1921: Caster's boots weigh 100 pounds when wet for the next {{!!l_duration}}.
1923: Caster's center of gravity changes daily for the next {{!!2d4}} days.
1924: Caster's center of gravity is {{!!d4}} feet to their left for the next {{!!duration}}.
1925: Caster's center of gravity is at the level of their eyes for the next {{!!duration}}.
1926: Caster's center of gravity is at the level of their feet for the next {{!!duration}}.
1932: Caster's clothes are burned to cinders, but they are unharmed.
1933: Caster's clothes are caked with salt.
1934: Caster's clothes are drenched with goat's milk.
1935: Caster's clothes are impervious to [[transmutation]] magic.
1937: Caster's clothes are invisible by firelight for the next {{!!duration}}.
1939: Caster's clothes are soaked with lambs' blood.
1940: Caster's clothes are soaked with lamp oil.
1941: Caster's clothes are soaked with molasses.
1943: Caster's clothes are water soluble.
1944: Caster's clothes clatter like metal when they move for the next {{!!duration}}.
1946: Caster's clothes heat by 1°F per minute for the next {{!!d10}} hours.
1949: Caster's clothes turn to copper.
1950: Caster's clothes turn to densely-woven spider's web.
1952: Caster's clothing inflates to the size of a house.
1953: Caster's cranium enlarges by 25% for the next {{!!duration}}.
1954: Caster's cranium reforms into a tall, blunt cone for the next {{!!duration}}.
1960: Caster's dominant hand becomes as clumsy as their other hand for the next {{!!duration}}.
1962: Caster's ears are on the same side of their head for the next {{!!duration}}.
1963: Caster's ears are unaffected by [[polymorph]] magic or shapechanging for the next {{!!duration}}.
1964: Caster's ears bleed harmlessly but copiously for {{!!duration}}.
1965: Caster's ears can't be cut by any metal blade for the next {{!!duration}}.
1966: Caster's ears fall off and regrow every few days for the next {{!!d4}} weeks.
1967: Caster's ears grow to the size of dinner plates for the next {{!!duration}}.
1968: Caster's ears resemble butterfly's wings for the next {{!!duration}}.
1969: Caster's elbows can't bend more than 90° for the next {{!!duration}}.
1970: Caster's entire head looks like a huge nose for the next {{!!duration}}.
1971: Caster's every attempt at music yields the same annoying tune for the next {{!!l_duration}}.
1972: Caster's eyelids look like lips for the next {{!!duration}}.
1973: Caster's eyes appear crystalline like diamonds for the next {{!!duration}}.
1975: Caster's eyes are invulnerable to heat and fire for the next {{!!l_duration}}.
1976: Caster's eyes are replaced by new ones every few days for the next {{!!d4}} weeks.
1979: Caster's eyes do not move, but they can see normally, for the next {{!!duration}}.
1980: Caster's eyes glow red when they try to make a good impression for the next {{!!l_duration}}.
1981: Caster's eyes merge into a single eye at the bridge of their nose for the next {{!!duration}}.
1982: Caster's eyes migrate to their cheekbones for the next {{!!duration}}.
1983: Caster's eyes migrate two inches higher on their forehead for the next {{!!duration}}.
1984: Caster's eyes sink {{!!d4}} inches into their skull for the next {{!!duration}}.
1985: Caster's eyes swell shut for {{!!duration}}.
1986: Caster's canine teeth grow into tusks like those of a walrus for the next {{!!duration}}.
1987: Caster's face and head are suddenly covered by a tight shell of wax.
1989: Caster's face appears melted like wax for the next {{!!duration}}.
1990: Caster's face appears to rapidly age backwards for the next {{!!duration}}.
1991: Caster's face appears to be made of chrome for the next {{!!duration}}.
1992: Caster's face appears to be made of hammered aluminum for the next {{!!duration}}.
1993: Caster's face appears to be upside-down for the next {{!!duration}}.
1994: Caster's face appears to float {{!!2d4}} inches in front of their skull for the next {{!!duration}}.
1995: Caster's face appears to have been sculpted from cold wax for the next {{!!duration}}.
1996: Caster's face doesn't move when they speak for the next {{!!duration}}.
1997: Caster's face elongates into a short snout with prominent teeth for the next {{!!duration}}.
1998: Caster's face falls off, leaving a bare skull, until sunrise.
2000: Caster's face is an illusion and can be dispelled as such for the next {{!!duration}}.
2001: Caster's face is concave for the next {{!!duration}}.
2002: Caster's face is covered with cactus spines for the next {{!!duration}}.
2004: Caster's face is glazed in a thick layer of ice for the next {{!!duration}}.
2005: Caster's face is pliant like rubber for the next {{!!duration}}.
2006: Caster's face is printed with intricate, dark blue tattoos for the next {{!!duration}}.
2007: Caster's face is scarred as though slashed by an eagle's talons for the next {{!!duration}}.
2008: Caster's face swells enough to be unrecognizable for the next {{!!duration}}.
2010: Caster's face turns to wood for the next {{!!duration}}.
2011: Caster's feet are burned as if they're waded through ankle-deep acid for the next {{!!duration}}.
2012: Caster's feet are encased in brick for the next {{!!duration}}.
2013: Caster's feet can't be burned by fire for the next {{!!duration}}.
2014: Caster's feet inflate to 2X normal size while they wade in water for the next {{!!l_duration}}.
2015: Caster's feet shrink by 80% while they're wearing shoes or boots for the next {{!!duration}}.
2016: Caster's feet smolder gently for {{!!duration}}.
2017: Caster's feet vanish, but they can walk comfortably on their ankles, for the next {{!!duration}}.
2019: Caster's fingernails display otherworldly scenes for the next {{!!duration}}.
2020: Caster's fingernails each grow {{!!d20}} inches.
2021: Caster's fingernails exude a pungent green fluid for the next {{!!duration}}.
2022: Caster's fingernails grow {{!!d4}} inches per day for the next {{!!2d4}} days.
2023: Caster's fingers appear to be made of delicate crystal for the next {{!!duration}}.
2024: Caster's fingers are as flexible as tentacles for the next {{!!duration}}.
2025: Caster's fingers are as rigid as steel while they're wet for the next {{!!l_duration}}.
2026: Caster's fingers are threaded like bolts for the next {{!!duration}}.
2028: Caster's fingers glow faintly in the presence of humans for the next {{!!duration}}.
2029: Caster's fingers randomly shuffle their positions for the next {{!!l_duration}}.
2031: Caster's fist fuses into a clumsy stub for the next {{!!duration}}.
2032: Caster's fist jams itself into their mouth, where it stays stuck for {{!!s_duration}}.
2033: Caster's footprints glow with sickly green light for {{!!s_duration}}.
2034: Caster's footprints seem to shimmer and waver in sunlight for the next {{!!duration}}.
2035: Caster's footprints shine brightly while they're invisible for the next {{!!l_duration}}.
2036: Caster's hair and clothes become horribly entangled for the next {{!!duration}}.
2037: Caster's hair and clothes constantly stir as if blown by wind for the next {{!!l_duration}}.
2038: Caster's hair becomes tangled in any hat or helmet they wear for the next {{!!l_duration}}.
2039: Caster's hair becomes thick and coarse like that of a boar for the next {{!!duration}}.
2041: Caster's hair falls out each evening and regrows by morning for the next {{!!2d4}} days.
2042: Caster's hair freezes solid for the next {{!!duration}}.
2043: Caster's hair is clear like glass for the next {{!!duration}}.
2046: Caster's hair is perpetually soaked with sea water for the next {{!!2d4}} hours.
2047: Caster's hair is striped like a tiger's coat for the next {{!!duration}}.
2048: Caster's hair reeks of sulfur for the next {{!!duration}}.
2049: Caster's hair stands straight up for the next {{!!d4}} weeks.
2050: Caster's hand adheres to the next weapon they grip for {{!!duration}}.
2051: Caster's hand adheres to the next tree they touch for {{!!duration}}.
2052: Caster's hands and arms are covered with cactus needles for the next {{!!duration}}.
2053: Caster's hands and feet are invisible for {{!!2d4}} days.
2054: Caster's hands appear to be crude wooden replicas for the next {{!!duration}}.
2055: Caster's hands appear to be made of solid gold for the next {{!!duration}}.
2056: Caster's hands appear to have been badly gnawed by rodents for the next {{!!duration}}.
2057: Caster's hands are blasted to a crisp but heal in {{!!2d4}} days.
2058: Caster's hands are completely insulated against electricity for the next {{!!duration}}.
2059: Caster's hands are impervious to all harm for one week.
2060: Caster's hands are invisible while they clasp them for the next {{!!2d4}} days.
2061: Caster's hands are totally numb for {{!!duration}}.
2062: Caster's hands are translucent like smoky quartz for the next {{!!duration}}.
2063: Caster's hands can't come within 12 inches of each other for the next {{!!duration}}.
2064: Caster's hands can't come within 12 inches of their face for the next {{!!duration}}.
2065: Caster's hands detach the next time they put them in their pockets. They reattach after {{!!s_duration}}.
2066: Caster's hands explode but grow back by morning.
2067: Caster's hands inflate like balloons for {{!!s_duration}}, then immediately return to normal.
2068: Caster's hands reform into lobster-like pincers for the next {{!!duration}}.
2069: Caster's hands shine like a beacon visible only to [[goblin]]s for the next {{!!duration}}.
2070: Caster's hands shrink by 50% for the next {{!!duration}}.
2072: Caster's hands sprout coarse scales for the next {{!!duration}}.
2073: Caster's hands sprout luxuriant feathers for the next {{!!duration}}.
2075: Caster's head appears translucent when backlit by firelight for the next {{!!duration}}.
2081: Caster's head is shaped like a bell for the next {{!!duration}}.
2082: Caster's head is perfectly cylindrical until sunset tomorrow.
2083: Caster's head is surrounded by dense fog for the next {{!!duration}}.
2084: Caster's head is invisible for the next {{!!duration}}.
2085: Caster's head is sealed in a block of ice with breathing holes for the next {{!!duration}}.
2086: Caster's head is split down the middle but they are unharmed. Their head reverts to normal after {{!!duration}}.
2088: Caster's head shines like a beacon visible only to [[orc]]s for the next {{!!duration}}.
2089: Caster's head turns into a pumpkin for {{!!d4}} hours.
2136: Caster's image appears on every shield within 100 yards for the next {{!!l_duration}}.
2137: Caster's index finger is shaped like a key for the next {{!!duration}}.
2140: Caster's internal monologue becomes audible to others for the next {{!!duration}}.
2143: Caster's knees can bend forward and backward with equal ease for the next {{!!duration}}.
2145: Caster's left arm appears to have been made from twine and glue for the next {{!!duration}}.
2146: Caster's left arm doubles in length once per second for {{!!2d4}} seconds, then reverts to normal after {{!!duration}}.
2147: Caster's left arm doubles in length; right arm shrinks by 50%. Their arms revert to normal after {{!!duration}}.
2148: Caster's left arm stretches to 2X the length of their body for the next {{!!duration}}.
2149: Caster's left hand and {{!!d10}}0% of their arm turn to brass for the next {{!!duration}}.
2152: Caster's left hand is hideously warped and mangled for the next {{!!duration}}.
2153: Caster's left hand strongly resents their right hand for the next {{!!duration}}.
2154: Caster's left leg detaches and starts kicking them for the next {{!!duration}}.
2155: Caster's left leg is covered by bark for the next {{!!duration}}.
2156: Caster's legs are both encased in a single thick, steel pipe for the next {{!!duration}}.
2157: Caster's legs are now exactly as long as their arms for the next {{!!duration}}.
2158: Caster's legs can't support their weight for {{!!duration}}.
2159: Caster's legs double in length, and their arms shorten by 50%, then revert to normal after {{!!duration}}.
2160: Caster's legs weigh as much as iron for the next {{!!duration}}.
2162: Caster's limbs each belong to a different species for the next {{!!duration}}.
2163: Caster's lungs are visible through their flesh and clothing for the next {{!!duration}}.
2164: Caster's lungs function at twice normal efficiency for the next {{!!duration}}. 
2165: Caster's lungs function at half normal efficiency for the next {{!!duration}}.
2166: Caster's lungs sound like bagpipes when they exert themself for the next {{!!duration}}.
2167: Caster's lungs stop working for {{!!2d4}} seconds.
2170: Caster's magic doesn't work if they're at least ankle-deep in water for the next {{!!l_duration}}.
2172: Any spells cast by the caster for the next {{!!duration}} are resistant to [[dispel magic]].
2173: Any time the caster casts a spell in the next {{!!duration}}, a filmy residue develops on precious metals within 5 yards of the caster and target.
2175: Caster's spells seem to issue from their eyes for the next {{!!duration}}.
2176: Caster's spells seem to issue from their mouth for the next {{!!duration}}.
2177: Caster's spells seem to issue from the ground for the next {{!!duration}}.
2178: An enemy of the caster suddenly knows caster's precise location for the next {{!!duration}}.
2179: Caster's motion is impeded by a strong wind that affects only them for the next {{!!duration}}.
2181: Caster's nearest ally is invisible to them for {{!!d4}} days.
2182: Caster's neck doubles in length for the next {{!!duration}}.
2183: Caster's neck is invisible for the next {{!!duration}}.
2185: Caster's next successful attack causes equal damage to them and their target.
2186: Caster's next successful attack heals its target of all damage and disease.
2187: Caster's next spell affects only half of its intended targets.
2188: Caster's next spell causes its target to become invisible.
2189: Caster's next spell fills the air with the sound of buzzing bees for {{!!duration}}.
2190: Caster's next spell functions as a [[disintegrate]] spell instead.
2191: Caster's next spell functions but has no visible effect.
2192: Caster's next spell functions but knocks them unconscious.
2193: Caster's next spell persists until they're injured.
2194: Caster's next spell turns its target bright blue for its duration.
2196: Caster's next [[conjuration]] instead turns them into the conjured creature or object for {{!!duration}}.
2197: Caster's next [[conjuration]] yields {{!!2d4}} decapitated human heads that vanish after {{!!duration}}.
2198: Caster's next [[conjuration]] yields {{!!2d4}}00 fluffy white rabbits that vanish one by one over the course of {{!!l_duration}}.
2199: Caster's next [[conjuration]] yields {{!!2d4}} chrome-plated ostriches that vanish after {{!!duration}}.
2200: Caster's next [[conjuration]] yields {{!!d7}} tiny purple [[imp]]s with hats that vanish after {{!!duration}}.
2201: Caster's next [[conjuration]] yields {{!!d4}}0 bushels of rotten apples.
2202: Caster's next [[conjuration]] yields an earth [[elemental]] and, inexplicably, a [[clawfoot]].
2203: Caster's next [[conjuration]] yields a bucket of brine-soaked plums.
2204: Caster's next [[conjuration]] yields a coil of rope one mile in length.
2206: Caster's next [[conjuration]] yields a goose that dies instantly.
2207: Caster's next [[conjuration]] yields a [[manticore]].
2209: Caster's next [[conjuration]] yields a puddle of highly unstable goo. 
2210: Caster's next [[conjuration]] yields an ice sculpture in the shape of the intended object or creature.
2211: Caster's next [[conjuration]] yields an [[illusion]] of the intended effect. The illusion persists for {{!!duration}}.
2214: Caster's next [[conjuration]] yields double of whatever they're summoning.
2215: Caster's nose looks like a noose for the next {{!!duration}}.
2216: Caster's nose looks like an ear for the next {{!!duration}}.
2217: Caster's nostrils are stuffed full of pimentos.
2218: Caster's palms turn to stone for the next {{!!duration}}.
2219: Caster's pockets are filled with confectioner's sugar.
2220: Caster's pockets are filled with glue.
2221: Caster's pockets are filled with greasy candle stubs.
2222: Caster's pockets are filled with live minnows.
2223: Caster's pockets are filled with offal.
2224: Caster's pockets are filled with stringy pasta.
2225: Caster's pockets are filled with weeks-old goat cheese.
2227: Caster's pockets are inaccessible for {{!!d7}} days.
2228: Caster's pockets are lined with chain mail.
2229: Caster's pockets are lined with sharp, jagged teeth for the next {{!!duration}}.
2230: Caster's pockets vanish along with anything inside them. They reappear after {{!!l_duration}}.
2232: Caster's presence causes birds in nearby trees to fall silent for the next {{!!duration}}.
2233: Caster's presence causes bowstrings to be abnormally elastic for the next {{!!duration}}.
2234: Caster's presence causes clockwork devices to malfunction for the next {{!!duration}}.
2235: Caster's presence causes food to be drained of all flavor for the next {{!!duration}}.
2236: Caster's presence causes holy symbols to seem unusually hot for the next {{!!duration}}.
2238: Caster's presence causes magical weapons to glow a dim red for the next {{!!duration}}.
2239: Caster's presence causes musical instruments to go out of tune for the next {{!!duration}}.
2240: Caster's presence impels nearby people to sing wildly off-key for the next {{!!duration}}.
2241: Caster's presence causes the clanking of metal to be muted for the next {{!!duration}}.
2242: Caster's presence causes timekeeping devices to combust for the next {{!!duration}}.
2243: Caster's presence causes timekeeping devices to malfunction for the next {{!!duration}}.
2244: Caster's presence causes [[undead]] creatures to sneeze for the next {{!!duration}}.
2245: Caster's presence causes worked stone to sweat for the next {{!!duration}}.
2246: Caster's presence induces lightheartedness in [[dwarves|dwarf]] for the next {{!!duration}}.
2248: Caster's principal weapon bends until the ends are touching. It reverts after {{!!s_duration}}.
2249: Caster's principal weapon abruptly points true north.
2255: Caster's principal weapon glows as though it's red hot for the next {{!!duration}}.
2256: Caster's principal weapon is as shiny as mirror for {{!!d10}} months.
2257: Caster's principal weapon is extremely sticky to the touch for the next {{!!duration}}.
2258: Caster's principal weapon is matte black between sunset and dawn for the next {{!!2d4}} days.
2261: Caster's principal weapon is translucent like smoked glass for the next {{!!duration}}.
2262: Caster's principal weapon shrinks by 50% for the next {{!!duration}}.
2263: Caster's principal weapon sprouts luxuriant tresses for the next {{!!duration}}.
2264: Caster's reflection appears upside down from the next time they see it until {{!!duration}} later.
2265: Caster's reflection chants dire prophecies about him.
2266: Caster's reflection commits suicide when they next see it.
2268: Caster's reflection is not mirror-reversed from the next time they see it until {{!!duration}} later.
2269: Caster's reflection shows them as battered corpse from the next time they see it until {{!!duration}} later.
2270: Caster's reflection shows them as they was 10 years ago from the next time they see it until {{!!duration}} later.
2271: Caster's reflection shows them beaten nearly to death from the next time they see it until {{!!duration}} later.
2272: Caster's right arm is encased in a cylinder of solid crystal for the next {{!!duration}}.
2273: Caster's right arm is just like their left arm, facing backwards for the next {{!!duration}}.
2274: Caster's right arm resembles a horse's foreleg for the next {{!!duration}}.
2275: Caster's right hand is a perfect sphere at the end of their wrist for the next {{!!duration}}.
2276: Caster's right hand struggles to grip their right elbow for the next {{!!duration}}.
2277: Caster's right leg doubles in thickness for the next {{!!duration}}.
2278: Caster's right thigh is as long as their entire left leg for the next {{!!duration}}.
2279: Caster's skin appears cracked like an old oil painting for the next {{!!duration}}.
2280: Caster's skin appears pitted like Swiss cheese for the next {{!!duration}}.
2281: Caster's skin appears to have been boiled for the next {{!!duration}}.
2282: Caster's skin appears to have been riveted to their body in sheets for the next {{!!duration}}.
2283: Caster's skin appears to have been woven of flesh-colored thread for the next {{!!duration}}.
2284: Caster's skin can't be punctured by any mammal's teeth for the next {{!!duration}}.
2285: Caster's skin is blood red for {{!!2d4}} days.
2286: Caster's skin is completely free of moles, scars, and blemishes for the next {{!!duration}}.
2287: Caster's skin is covered by human bite-marks for the next {{!!duration}}.
2288: Caster's skin is fireproof but tarnishes quickly in sunlight for the next {{!!duration}}.
2289: Caster's skin is infused with countless tiny glass nuggets for the next {{!!duration}}.
2291: Caster's skin is plaid for the next {{!!duration}}.
2292: Caster's skin is suddenly the color of their hair for the next {{!!duration}}.
2293: Caster's skin ripples like a rain-spattered pond for the next {{!!duration}}.
2294: Caster's skin varies in opacity from hour to hour for the next {{!!2d4}} days.
2295: Caster's skull becomes intensely magnetic for the next {{!!duration}}.
2296: Caster's speech doesn't match the movement of their lips for the next {{!!duration}}.
2297: Caster's speech is clearly audible to all within 50 yards for the next {{!!duration}}.
2298: Caster's speech is utterly unintelligible for {{!!d4}} hours.
2299: Caster's speech is utterly unintelligible to themself for the next {{!!duration}}.
2420: Caster's spells are much weaker in effect for the next {{!!duration}}.
2421: Caster's spells no longer work on some particular person nearby for the next {{!!duration}}.
2422: Caster's spells are much stronger in effect for the next {{!!duration}}.
2426: Caster's teeth appear shiny and black like obsidian for the next {{!!duration}}.
2427: Caster's teeth appear to drip blood for one week.
2428: Caster's teeth become serrated and triangular like a shark's for the next {{!!duration}}.
2430: Caster's teeth cannot become invisible for the next {{!!duration}}.
2431: Caster's teeth grow continuously, like a rodent's, for the next {{!!2d4}} days, then revert to normal.
2433: Caster's tongue is bifurcated along half of its length for the next {{!!duration}}.
2434: Caster's tongue is invisible during daylight hours for the next {{!!2d4}} days.
2435: Caster's tongue is removable and reattachable for the next {{!!duration}}.
2436: Caster's voice becomes increasingly loud for the next {{!!duration}}, then reverts to normal.
2437: Caster's voice cracks like a teenage boy's voice for the next {{!!duration}}.
2438: Caster's voice inspires rage in dogs and wolves for the next {{!!2d4}} days.
2439: Caster's voice is hoarse and strained for {{!!2d4}} days.
2440: Caster's voice issues from their right hand instead of their mouth for the next {{!!duration}}.
2441: Caster's voice makes people feel hostile and aggressive for the next {{!!duration}}.
2442: Caster's voice resonates in any gems nearby for the next {{!!duration}}.
2444: Caster's voice seems to issue from 1-4 people around them for the next {{!!duration}}.
2445: Caster's voice seems to issue from their pockets for the next {{!!duration}}.
2446: Caster's voice seems to issue from some item they're now carrying for the next {{!!duration}}.
2447: Caster's voice sounds as if it's coming from a distant megaphone for the next {{!!duration}}.
2448: Caster's voice sounds as if it's coming through a metal tube for the next {{!!duration}}.
2450: Caster's voice sounds like that of each person to whom they speak for the next {{!!duration}}.
2451: Caster's voice sounds like the braying of donkeys for the next {{!!duration}}.
2452: Caster's voice sounds like the buzzing of metal bees for the next {{!!duration}}.
2453: Caster's voice sounds like the honking of geese for the next {{!!duration}}.
2454: Caster's voice sounds like the sputtering of a clogged drain for the next {{!!duration}}.
2455: Caster's waterskin is filled with mashed potatoes.
2456: Caster's waterskin makes its contents taste brackish and foul.
2458: Caster's weight increases tenfold while walking across ice for the next {{!!duration}}.
2460: Countless pine needles adhere tightly to the caster's skin for the next {{!!duration}}, then fall off.
2461: Countless tiny wood chips swirl about the caster for {{!!d4}} seconds.
2462: Countless tiny worms cascade from caster's ears.
2463: Crawling insects pour from caster's nostrils for {{!!s_duration}}.
2464: Cryptic messages are embossed on the caster's chest and back for the next {{!!duration}}.
2465: Cryptic runes cover the caster's arms and hands for the next {{!!duration}}.
2466: Cryptic symbols flash constantly across caster's forehead for the next {{!!duration}}.
2467: Damage from caster's next {{!!d7}} attacks appears {{!!d10}} seconds later
2472: Domestic cats react to caster with astonishing ferocity for the next {{!!duration}}.
2473: Each day at noon, caster's age is reduced by 50%, for the next {{!!2d4}} days, then reverts.
2474: Each day at noon, for the next 3 days, the caster's weapon heats up to 200° F for a few seconds.
2475: Each day at sunset, for the next 3 days, the caster suffers intense pain for {{!!2d4}} seconds.
2487: Each day, for the next {{!!2d4}} days, the caster can summon {{!!d10}} minnows up to {{!!d4}} times.
2491: Each day, for the next {{!!2d4}} days, the caster finds {{!!d10}} human eyeballs in their pocket.
2522: Each day, for the next {{!!2d4}} days, the caster wakes because a small pebble hits their forehead.
2524: Each day, for the next {{!!2d4}} days, the caster wakes beneath a layer of fine white sand.
2527: Each day, for the next {{!!2d4}} days, the caster wakes completely deaf until they drink something.
2530: Each day, for the next {{!!2d4}} days, the caster wakes in a pile of dry leaves.
2535: Each day, for the next {{!!2d4}} days, the caster wakes to find a loaf of warm bread on their chest.
2539: Each day, for the next {{!!2d4}} days, the caster wakes with a daisy sprouting from their mouth.
2542: Each day, for the next {{!!2d4}} days, the caster wakes with their mouth packed full of flour.
2567: Each night, for the next {{!!2d4}} nights, the caster triggers a random magical effect in their sleep.
2570: Each of the caster's big toes is now as long as the rest of their foot for the next {{!!duration}}.
2571: Each of the caster's big toes is now as wide as the rest of their foot for the next {{!!duration}}.
2572: Each of the caster's teeth is now a different and contrasting color for the next {{!!duration}}.
2573: Each of the caster's teeth screams each time they opens their mouth for the next {{!!duration}}.
2575: Eerie moans fill the air when caster touches holy water for the next {{!!duration}}.
2576: Efforts to become invisible make the caster much more visible for the next {{!!duration}}.
2578: [[Elementals|elemental]] summoned in the caster's presence are 20% larger for the next {{!!duration}}.
2580: [[Elementals|elemental]] summoned in the caster's presence are completely silent for the next {{!!duration}}.
2582: [[Elementals|elemental]] summoned in the caster's presence are invisible to them for the next {{!!duration}}.
2585: [[Elementals|elemental]] summoned in the caster's presence are terrified of them for the next {{!!duration}}.
2591: [[Elementals|elemental]] summoned in the caster's presence explode instantly for the next {{!!duration}}.
2597: [[Elementals|elemental]] summoned in the caster's presence vaguely resemble them for the next {{!!duration}}.
2602: Even in darkness, caster is visible as though in full daylight for the next {{!!duration}}.
2603: Every third tooth falls from caster's mouth. They regrow over the course of {{!!l_duration}}.
2605: Everyone now harboring ill will toward the caster forgets who they are.
2606: Everyone now harboring ill will toward the caster knows where they are.
2614: Everyone within one mile appears as a skeleton to the caster for the next {{!!duration}}.
2615: Everything caster eats for {{!!d10}} months tastes strongly of blood.
2616: Fine gold wire is visibly threaded through the caster's flesh for the next {{!!duration}}.
2617: Fire-based magic is invisible to the caster for the next {{!!duration}}.
2619: Flames shoot from caster's ears at least once per hour until dawn.
2620: Foliage grows to entangle caster's feet if they stand still for the next {{!!2d4}} hours.
2621: Food turns incorporeal while the caster touches it for the next {{!!2d4}} hours.
2624: For {{!!s_duration}}, the caster's left foot is fused to the ground.
2625: For {{!!s_duration}}, normal water can burn the caster like strong acid.
2626: For {{!!d4}} weeks, caster's eyelids glow brightly in the dark.
2627: For {{!!l_duration}}, caster's nose hovers {{!!d4}} inches before their face.
2634: Foul-smelling steam issues from the caster's nostrils for a few seconds.
2635: Half of the caster's body is as hairy as an ape. The hair falls out after {{!!duration}}.
2636: Half of the caster's body is immune to [[polymorph]] magic for the next {{!!duration}}.
2637: Half of the caster's hair is replaced by very fine silver wire for the next {{!!duration}}.
2640: Honey flows through caster's veins instead of blood for the next {{!!duration}}.
2642: Huge volumes of ectoplasm ooze from the caster's nostrils for the next {{!!s_duration}}.
2643: Icy winds buffet the caster for {{!!2d4}} days.
2720: If caster is hit by a bludgeon within the next {{!!duration}}, their head rings like a bronze gong.
2765: The caster acquires a new language. After {{!!l_duration}}, they suddenly forget most of it.
2888: One of the caster's hands turns into a foot for {{!!duration}}.
2892: The bones in one of the caster's hands vanish for {{!!duration}}.
2914: If caster tells a lie in the next {{!!2d4}} days, they feel strongly compelled to declare it outright. "I LIED!"
2931: The caster spits out a tiny replica of themself that persists for {{!!duration}}.
2974: Illusions cast by the caster make them 2X as heavy for their duration for the next {{!!2d4}} days.
2977: Iridescent plumage sprouts from caster's shoulder blades for the next {{!!duration}}.
2978: Lightning flashes about the caster's head for the next {{!!duration}}.
2980: Luxuriant, leafy foliage sprouts from the caster's head for the next {{!!duration}}.
2982: The next time the caster uses a charged magic item within the next {{!!2d4}} days, all charges are consumed, and instead of the intended effect, the caster emits a continuous belch for {{!!d4}}0 seconds.
2983: Animals seem to mock the caster while they're not looking for the next {{!!l_duration}}.
2993: Mocking, spectral voices taunt the caster incessantly for the next {{!!duration}}.
2994: Money paid by the caster appears to be obviously counterfeit for the next {{!!2d4}} days.
2996: Mysterious runes are visible on the caster's skin in moonlight for the next {{!!d4}} nights.
3008: Nearest tree falls on caster, pinning them but not harming them.
3014: Next {{!!d4}} attacks on the caster equally affect the attackers.
3015: Next attack on the caster causes them to hallucinate for {{!!l_duration}}.
3021: The next bridge that the caster crosses turns to chocolate for {{!!duration}}, then reverts.
3028: Next door opened by the caster becomes sentient and animated for the next {{!!duration}}.
3031: Next door opened by the caster causes a pit to open beneath their feet. The pit disappears as soon as all creatures have climbed out of it.
3033: Next door opened by the caster dispels any magic currently affecting them.
3034: Next door opened by the caster explodes as a [[fireball]].
3035: Next door opened by the caster explodes in a swarm of locusts.
3038: Next door opened by the caster gives them a useful bit of information.
3039: Next door opened by the caster hurls them out of the nearest window.
3041: Next door opened by the caster becomes as clear as glass for the next {{!!duration}}.
3045: Next door opened by the caster leads to a courtyard with no doors. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3047: Next door opened by the caster leads to a distant mountaintop. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3051: Next door opened by the caster leads to a fabulous ballroom. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3052: Next door opened by the caster leads to a featureless desert. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3061: Next door opened by the caster leads to a room full of hourglasses. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3065: Next door opened by the caster leads to a vast cornfield. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3066: Next door opened by the caster teleports them to a teleportation circle in a vast magical library. The caster is then teleported to the spot where this random effect was triggered after {{!!duration}}.
3067: Next door opened by the caster leads to a vast, snow-swept plain. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3073: Next door opened by the caster leads to another [[plane]] of existence. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3083: Next door opened by the caster leads to the last door they opened.
3084: Next door opened by the caster leads to the middle of a battlefield. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3091: Next door opened by the caster leads to this location.
3094: Next door opened by the caster [[arcane lock]]s shut behind him.
3096: Next door opened by the caster plunges that room into total darkness for {{!!s_duration}}.
3097: Next door opened by the caster releases a cloud of choking smoke that dissipates after {{!!duration}}.
3103: Next door opened by the caster triggers two random magical effects.
3104: Next door opened by the caster transmutes to heavy steel for {{!!duration}}.
3106: Next enemy to wound caster begins to resemble him. This persists for {{!!duration}}.
3113: Next enemy to wound caster is heavily smeared with bacon grease.
3119: Next enemy to wound caster suffers an equivalent injury.
3126: Next enemy wounded by the caster begins to age rapidly for {{!!s_duration}}. Then, their age reverts to normal.
3127: Next enemy wounded by the caster can no longer see the caster for {{!!duration}}.
3133: Next enemy wounded by the caster is invisible to them, and vice versa, for {{!!duration}}.
3138: Next enemy wounded by the caster teleports {{!!2d4}} feet in a random direction.
3142: Next enemy wounded by the caster turns to stone, then reverts after {{!!s_duration}}.
3179: Next person targeted by the caster's magic becomes hopelessly drunk for {{!!duration}}.
3181: Next person struck by the caster's magic is stricken blind and deaf for {{!!duration}}.
3185: Next person to touch the caster is suddenly dressed just like them.
3187: Next person to touch the caster is stricken bald for {{!!duration}}.
3190: Next person to whom caster speaks adopts the caster's voice for {{!!duration}}.
3194: Next person to whom caster speaks develops a stutter until sunset.
3196: Next person to whom caster speaks forgets who the caster is for the next {{!!duration}}.
3201: Next person to whom caster speaks is suddenly dressed just like them.
3205: Next person to whom caster speaks is soaked with icy brine.
3206: Next person to whom caster speaks is stricken deaf for {{!!2d4}} seconds.
3208: Next person to whom caster speaks is teleported {{!!d10}}0 feet in a random direction.
3215: Next person to whom caster speaks shrinks by 25% for {{!!duration}}.
3221: Next liquid imbibed by the caster causes them to spit out wood chips.
3222: Next liquid imbibed by the caster causes them to sprout feathers for {{!!duration}}.
3223: Next liquid imbibed by the caster causes them to sprout tentacles for {{!!duration}}.
3231: Next liquid imbibed by the caster enlarges their hands by 50% for the next {{!!duration}}.
3234: Next liquid imbibed by the caster glues their mouth shut for {{!!duration}}.
3314: Next liquid imbibed by the caster turns their skin orange for {{!!duration}}.
3315: Next liquid imbibed by the caster turns their speech to gibberish for {{!!duration}}.
3318: Next puddle stepped in by the caster freezes solid around their feet.
3319: Next puddle stepped in by the caster ignites like gasoline.
3322: Next puddle stepped in by the caster is, to them, {{!!d10}}0 feet deep. It reverts to a normal puddle after they remove their foot from it.
3327: Next puddle stepped in by the caster teleports them to a puddle nearby.
3329: Next puddle stepped in by the caster turns to blood.
3330: Next spell caster casts on themself also affects someone nearby.
3333: Next spell caster casts on themself persists for {{!!d4}} days.
3334: Next spell caster casts on themself takes effect {{!!2d4}} hours later.
3340: Next spell to hit the caster triggers two random magical effects.
3341: Next spell to hit the caster takes effect {{!!2d4}} hours later.
3359: Next tree or other vegetation touched by the caster crumbles to ash in minutes.
3364: No more than 60% of the caster's body can become invisible at a time for the next {{!!2d4}} days.
3367: Non-humanoid mammals are invisible to the caster for {{!!duration}}.
3373: Objects placed in caster's pockets freeze solid in minutes for the next {{!!duration}}.
3375: On any given day for the next {{!!2d4}} days, caster's left foot is 50% likely to be incorporeal.
3376: The caster sheds and regrows {{!!d10}} fingernails over the course of {{!!duration}}.
3443: One of caster's arms adopts the color and texture of brick for the next {{!!duration}}.
3444: One of caster's arms appears to be stripped of all flesh for the next {{!!duration}}.
3445: One of caster's arms becomes as limber as a snake for the next {{!!duration}}.
3449: One of caster's arms disappears until sunset tomorrow.
3450: One of caster's arms ignites in flames.
3451: One of caster's arms turns a pale white for {{!!l_duration}}.
3452: One of caster's arms is encased in a tight steel sheath for {{!!duration}}.
3453: One of caster's arms is impervious to magical cold for {{!!duration}}.
3455: One of caster's arms is scarred as though badly burned by acid for the next {{!!duration}}.
3456: One of caster's arms now juts from the center of their chest for the next {{!!duration}}.
3457: One of caster's arms oozes fetid slime for the next {{!!duration}}.
3458: One of caster's arms resembles a small, gnarled branch for the next {{!!duration}}.
3459: One of caster's arms shrivels to a dry husk and is restored after {{!!duration}}.
3460: One of caster's arms sprouts dozens of tiny, ugly feelers for the next {{!!duration}}.
3461: One of caster's arms turns to solid silver for the next {{!!duration}}.
3462: One of caster's eyes bulges like a fish eye, then reverts after {{!!duration}}.
3463: One of caster's eyes doubles in size for the next {{!!duration}}.
3464: One of caster's eyes doubles in size; the other shrinks by 50%. They revert to normal after {{!!duration}}.
3465: One of caster's eyes glows with infernal radiance for the next {{!!duration}}.
3466: One of caster's feet disintegrates. It grows back over the course of {{!!duration}}.
3467: One of caster's feet is replaced by an off-balance wheel for the next {{!!duration}}.
3468: One of caster's feet reforms into a perfect sphere for the next {{!!duration}}.
3469: One of caster's feet refuses to come anywhere near the other for the next {{!!duration}}.
3470: One of caster's hands doubles in size; the other shrinks by 50%. They revert to normal after {{!!duration}}.
3471: One of caster's hands is as durable as steel for the next {{!!duration}}.
3472: One of caster's hands is green and scaly like a lizard's claw for the next {{!!duration}}.
3473: One of caster's hands begins to rust over the next {{!!duration}}, then reverts to normal.
3474: One of caster's hands turns into an eagle's talon for the next {{!!duration}}.
3475: One of caster's knees locks whenever nimble footwork is required for the next {{!!duration}}.
3476: One of caster's pockets opens into an extradimensional space, like a [[bag of holding]]. This lasts for the next {{!!duration}}, after which anything in the pocket is forcefully thrown out.
3477: One side of caster's body adopts a mirror-bright sheen for the next {{!!duration}}.
3480: One side of caster's body changes color each hour for the next {{!!2d4}} hours.
3481: One side of caster's body is as hairy as an ape for the next {{!!duration}}.
3482: One side of caster's body is blurred as if seen through ice for the next {{!!duration}}.
3485: One side of caster's body is invulnerable to fire for the next {{!!duration}}.
3486: One side of caster's body is paralyzed for {{!!s_duration}}.
3487: One side of caster's body is rendered invisible for {{!!duration}}.
3488: One side of caster's body looks like a photo negative for the next {{!!duration}}.
3489: One side of caster's body shrinks by 10%, then reverts after {{!!duration}}.
3494: People not in the caster's presence tend to forget about them for the next {{!!d20}} days.
3495: Powerful jets of air blow from the caster's ears for the next {{!!duration}}.
3500: Right now, the caster can teleport up to 1d10 miles one time within the next {{!!duration}}.
3502: Rope breaks 10x as readily while the caster is using it for the next {{!!duration}}.
3503: Rope is 10x as strong while the caster is using it for the next {{!!duration}}.
3504: Scavengers and carrion birds react to caster as if they were dead for the next {{!!duration}}.
3505: Short, bony spikes sprout from caster's knuckles for the next {{!!duration}}.
3506: Small objects carried by caster seem 10X as heavy to them for the next {{!!duration}}.
3507: Smoke billows from the caster's head as from a coal chimney for the next {{!!duration}}.
3515: Someone nearby vanishes; {{!!d35}} seconds later, the caster disgorges them.
3523: Spell works normally; next casting automatically causes two random magical effects.
3527: The [[fireball]] spell won't function within 100 yards of caster for the next {{!!duration}}.
3528: The ground beneath caster's feet flows like water for the next {{!!s_duration}}.
3529: The ground beneath caster's feet heaves like a breathing giant for the next {{!!duration}}.
3530: The ground beneath caster's feet sinks a depth 2X their height. It reverts after the caster climbs out.
3531: The ground beneath caster's feet swirls like a whirlpool for the next {{!!duration}}.
3533: The left and right sides of caster's body hate each other for the next {{!!duration}}.
3542: The rear half of caster's body appears to be made of glass for the next {{!!duration}}.
3543: The rear half of caster's body is invisible for the next {{!!duration}}.
3544: The spell cast most recently upon caster is retroactively undone.
3547: Thick clouds of acrid steam issue from the ground near the caster for the next {{!!duration}}.
3548: Thick clouds of steam constantly billow from the caster's skin for the next {{!!duration}}.
3549: Thunder rumbles overhead whenever caster's blood is spilled for the next {{!!2d4}} days.
3550: To the caster, everyone appears to be sweating profusely for the next {{!!duration}}.
3551: To the caster, everyone looks and sounds exactly like them for the next {{!!duration}}.
3553: To the caster, everyone smells like a rotting corpse for the next {{!!duration}}.
3554: To the caster, the weather always appears overcast and gloomy for the next {{!!d7}} days.
3556: Tomorrow, caster can speak all languages until noon.
3559: Tomorrow morning, caster wakes to find themself surrounded by {{!!d35}} statues of themself in hideous poses.
3580: Tomorrow, caster is unable to cast magic before noon.
3620: Tomorrow, caster thinks they're awakened from a centuries-long sleep. The delusion persists for {{!!duration}}.
3625: Tomorrow, caster wakes {{!!d20}} miles from where they fell asleep.
3628: Tomorrow, caster wakes at this location.
3636: Tomorrow, caster wakes covered in pungent, glowing moss.
3638: Tomorrow, caster wakes embarrassingly drunk.
3639: Tomorrow, caster wakes in a coil of dried and sinuous vines.
3654: Trees and bushes express open hostility toward the caster for the next {{!!duration}}.
3655: Ugly thorns sprout from the caster's cheekbones for the next {{!!duration}}.
3660: Vile tentacles sprout from the caster's face for the next {{!!duration}}.
3662: Water feels like acid to the caster but doesn't actually harm them for the next {{!!duration}}.
3663: Water splashes from caster's footfalls for the next {{!!l_duration}}.
3664: Water trickles from caster's elbows for {{!!l_duration}}.
3706: When caster is angry anytime in the next {{!!2d4}} days, they turn bright green for {{!!s_duration}}.
3710: When caster is angry anytime in the next {{!!2d4}} days, insects appear to swarm over their face for {{!!s_duration}}.
3711: When caster is angry anytime in the next {{!!2d4}} days, steam billows from their nostrils.
3712: When caster is surprised anytime in the next {{!!2d4}} days, they randomly teleport {{!!d4}} yards in a random direction.
3713: When caster is surprised anytime in the next {{!!2d4}} days, their head briefly doubles in size.
3743: When caster next enters a building, they teleport onto its roof.
3744: When caster next enters a building, their clothes catch fire.
3862: When caster next says their name, {{!!2d4}} fish leap from their mouth.
3863: When caster next says their name, a bird flies into their mouth.
3865: When caster next says their name, they promptly forget their name for {{!!duration}}.
3866: When caster next says their name, their mouth is sealed shut for {{!!duration}}.
3869: When caster next touches money, they trigger two random magical effects.
3901: When caster next teleports, they arrive {{!!d4}} miles from the destination.
3902: When caster next teleports, they arrive {{!!2d4}} hours later than expected.
3903: When caster next teleports, they arrive blinded for {{!!d35}} seconds.
3905: When caster next teleports, they arrive invisible for {{!!s_duration}}.
3907: When caster next teleports, they arrive upside down.
3911: When caster next tries to make an illusory duplicate of themself, 10X the number of images appear.
3913: When caster next tries to make an illusory duplicate of themself, the images look like [[demon]]s.
3914: When caster next tries to make an illusory duplicate of themself, the images look like infants.
3915: When caster next tries to make an illusory duplicate of themself, the images look like skeletons.
3925: The caster sprouts wool from their arms which lasts for the next {{!!duration}}.
3926: When struck by any magic in the next {{!!duration}}, the caster triggers a random magical effect.
3939: When seen from behind, caster's torso appears riddled with large holes for the next {{!!duration}}.
3945: The caster is covered by ashes and soot.
3947: The caster temporarily inflates like a balloon.
3949: An invisible bronze gong is rung.
3950: Electricity crackles in the caster's hair
3951: Ghostly laughter echoes in the air.
3953: The caster becomes light as a feather for the next {{!!duration}}.
3956: The caster hears glass breaking everywhere for the next {{!!duration}}.
3966: The caster's bones glow visibly in their body for the next {{!!duration}}.
3968: The caster's ears shine like the sun for the next {{!!duration}}.
3969: 
3973: Wherever caster walks for the next {{!!duration}}, they sound like they're on a squeaky floor.
3974: While caster is invisible anytime in the next {{!!l_duration}}, a faint outline can still be seen.
3975: While caster sleeps within the next {{!!2d4}} days, they appear to be a perfect cube.
3977: While caster sleeps within the next {{!!2d4}} days, they freeze solid but thaw before waking.
3979: While caster sleeps within the next {{!!2d4}} days, their arms and legs retract into their torso.
3980: While caster sleeps within the next {{!!2d4}} days, their body is translucent.
3981: While caster sleeps within the next {{!!2d4}} days, their body retracts into their head.
3984: While caster sleeps within the next {{!!2d4}} days, their head retracts into their body
3986: While caster sleeps within the next {{!!2d4}} days, luminous moths flutter over their body.
3987: While caster sleeps within the next {{!!2d4}} days, mysterious runes hover over their head.
3988: While caster sleeps within the next {{!!2d4}} days, rodents bring them sacrificial offerings.
3990: While indoors over the next {{!!l_duration}}, caster appears to be 5% larger.
3991: While indoors over the next {{!!l_duration}}, caster feels as if they're dragging heavy chains.
3992: While indoors over the next {{!!l_duration}}, caster feels as if they're in a blazing desert.
3993: While indoors over the next {{!!l_duration}}, caster feels as if they're on a ship's deck.
3994: While indoors over the next {{!!l_duration}}, caster feels as if they're on windswept tundra.
3996: While walking, the caster sounds as if they're wearing full plate armor for the next {{!!duration}}.
3997: Woodland creatures openly mock the caster and call them a coward for the next {{!!duration}}.
4001: {{!!d7}} of target's fingers reappear elsewhere on their body for the next {{!!duration}}.
4002: A handful of small glass marbles tumble from the target's nose.
4004: A nearby but invisible heckler pummels the target with tomatoes for {{!!s_duration}}.
4005: A nearby tree [[awaken]]s and swears allegiance to the target. It reverts to a normal tree after {{!!duration}}.
4006: A nearby tree [[awaken]]s, becomes ravenously carnivorous, and attacks the target.
4008: A nearby tree sprays its bark at the target, briefly blinding them.
4009: A skeleton identical to the target's appears {{!!d10}} feet from them. It vanishes after {{!!duration}}.
4010: A small fire blazes harmlessly in the target's mouth for the next {{!!duration}}.
4011: A tall picket fence encircles the target.
4012: A tentacle slithers from a nearby cave, sewer, or other dark place to grasp the target. It vanishes in a puff of purple smoke after {{!!duration}}.
4020: All voices sound alike to the target for {{!!2d4}} days.
4022: Ambient temperature feels 50° colder to target for the next {{!!duration}}.
4023: Ambient temperature rises by 10° when the target is angry for the next {{!!duration}}.
4024: An earthen duplicate of the target rises up and attacks him. It crumbles after {{!!duration}}.
4026: An evergreen sprouts from target's chest while they sleep tonight. It withers and dies, leaving pine needles everywhere, {{!!duration}} after they wake up.
4027: An item carried by target discharges two random magical effects when next used.
4028: An item carried by target explodes.
4030: An item carried by target releases narcotic vapors when next used.
4041: Any weapon that hits the target in the next {{!!duration}} turns clear as glass for {{!!s_duration}}.
4047: Any weapon that hits the target in the next {{!!duration}} turns to sponge as it does so. It reverts to normal after {{!!s_duration}}.
4050: Any clothing or armor now worn by target is soaked with tree sap.
4051: Any clothing or armor now worn by target shrinks by 30%. 
4055: Any coins that target is now carrying weigh 100 pounds each for the next {{!!duration}}.
4064: Any [[magic item]]s carried by the target glow like embers until dawn.
4065: Any metal now in target's possession becomes intensely magnetic for the next {{!!duration}}.
4066: Any metal now in target's possession heats to its melting point over the next {{!!s_duration}}, then slowly cools to room temperature.
4069: Any metal now in target's possession is transparent like glass for the next {{!!duration}}.
4070: Any metal now in target's possession is water soluble until dawn.
4078: Any missile weapon hitting the target over the next {{!!duration}} instantly combusts.
4079: Any missile weapon hitting the target over the next {{!!duration}} sprouts vines and attempts to take root.
4081: Any weapons now carried by target are badly warped. If they were [[magic item]]s, they revert after {{!!duration}}.
4084: Any weapons now carried by target have their name on them.
4087: Any missiles fired at target over the next {{!!duration}} instantly sprout wings and fly away.
4091: Any missiles fired near the target over the next {{!!duration}} orbit them like satellites.
4092: Any missiles fired near target over the next {{!!duration}} shriek as they fly through the air.
4093: Any nearby [[undead]] howl wildly and attack the target exclusively for the next {{!!duration}}.
4094: Any nearby [[undead]] defend the target to the best of their ability for the next {{!!duration}}.
4096: Any nearby [[undead]] now look disturbingly like the target for the next {{!!duration}}.
4097: Any nearby [[undead]] obey the target for {{!!d35}} minutes.
4098: Any open wounds the target now has are welded closed like metal.
4099: Any packs, pouches, or bags carried by target are full of blood.
4100: Any packs, pouches, or bags carried by target are interconnected for the next {{!!duration}}.
4101: Any packs, pouches, or bags carried by target double in volume for the next {{!!duration}}.
4102: Any packs, pouches, or bags carried by target suddenly dump their contents.
4103: Any paper, parchment, etc. now carried by target combusts.
4104: Any paper, parchment, etc. now carried by target is fireproof for the next {{!!l_duration}}.
4105: Any paper, parchment, etc. now carried by target is rain-soaked.
4106: Any paper, parchment, etc. now carried by target turns to steel for the next {{!!duration}}.
4107: Any part of target not covered by clothing appears to be skeletal for the next {{!!duration}}.
4108: Any part of target not covered by clothing is badly sunburned.
4109: Any part of target not covered by clothing is invisible for the next {{!!duration}}.
4110: Any part of target not covered by clothing turns bright orange for the next {{!!duration}}.
4111: Any part of target now covered by clothing is covered in blisters. They heal over the course of {{!!l_duration}}.
4113: Any part of target now covered by clothing is invisible for the next {{!!duration}}.
4114: Any part of target now covered by clothing is hideously scarred for the next {{!!duration}}.
4115: Any spells cast in target's presence seem to originate from them.
4120: Any [[undead]] now within 10 yards of target combust.
4127: Any liquid now in contact with the target's body freezes solid.
4129: Any liquid now in contact with target's body turns to glue.
4130: Any liquid now in contact with target's body turns to lamp oil.
4131: Any liquid now in contact with target's body turns to mud for the next {{!!duration}}.
4132: Any liquid now in contact with target's body turns to stone for the next {{!!duration}}.
4167: Anyone looking at the target over the next {{!!duration}} suffers intense vertigo.
4168: Anyone nearby when target is wounded is compelled to applaud for {{!!2d4}} seconds.
4179: Anyone nearby with a drawn blade shouts the target's name.
4182: Anyone who touches the target in the next {{!!2d4}} seconds is briefly paralyzed.
4184: Anyone who touches the target in the next {{!!2d4}} seconds suffers severe burns.
4197: At any crossroads, target is inclined to turn left for the next {{!!l_duration}}.
4205: Beacon-bright light shines from target's palms for the next {{!!duration}}.
4206: Beacon-bright light shines from the soles of the target's feet for the next {{!!duration}}.
4207: Beacon-bright light shines from the target's principal weapon for the next {{!!duration}}.
4208: Beacon-bright light shines from the top of the target's head for the next {{!!duration}}.
4209: Bits of gristle tumble from the target's mouth while they speak for the next {{!!duration}}.
4210: Bits of hardened resin tumble constantly from target's ears for the next {{!!duration}}.
4211: Blades are magically blunted while the target wields them for the next {{!!duration}}.
4215: Both of target's arms are now on the same side of their body for the next {{!!duration}}.
4216: Both of target's arms jut from the same shoulder for the next {{!!duration}}.
4218: Bright flames dance harmlessly over target's body for {{!!s_duration}}.
4219: Bright flames ripple harmlessly along target's limbs for {{!!l_duration}}.
4220: Bright flames surround the target harmlessly for {{!!duration}}.
4221: Colored streamers shoot from target's ears for {{!!s_duration}}.
4222: Colored streamers shoot from target's nostrils for {{!!s_duration}}.
4223: Colorful smoke spews from target's every orifice for {{!!s_duration}}.
4224: Condensation endlessly forms upon and drips from target for the next {{!!duration}}.
4226: Countless glass shards whirl around the target for {{!!duration}}.
4227: Countless tiny moths flutter about the target's head for the next {{!!duration}}.
4228: Countless tiny, colorful orbs swirl harmlessly around the target for the next {{!!duration}}.
4230: Creatures or objects conjured in target's presence are clear like glass for the next {{!!duration}}.
4241: Dozens of tiny glass slivers fall harmlessly from target's mouth for the next {{!!duration}}.
4246: During battle, target experiences distracting hallucinations for the next {{!!duration}}.
4248: During battle, target perceives thick, acrid smoke all around them for the next {{!!duration}}.
4249: The target quacks like an enormous duck for the next {{!!duration}}.
4250: The target repeatedly chants a naughty limerick for the next {{!!duration}}.
4251: The target's allies are invisible to them for the next {{!!duration}}.
4256: The target's clothes billow with foul smoke for the next {{!!duration}}.
4257: The target's clothes moan like ghosts for the next {{!!duration}}.
4258: The target's ears flap like a bird's wings for the next {{!!duration}}.
4259: The target's flesh, hair, and gear turn white as snow for the next {{!!duration}}.
4260: The target's hands appear to be shrouded in flame for the next {{!!duration}}.
4261: The target's head is invisible for the next {{!!duration}}.
4262: The target's heartbeat is audible to all nearby for the next {{!!duration}}.
4275: Each day for the next {{!!2d4}} days, target's skin is a different vibrant color.
4277: Each of target's feet is chained to their neck for the next {{!!duration}}.
4278: Each of target's feet tries to race away in a different direction for the next {{!!s_duration}}.
4279: Each of target's feet weighs as much as the rest of their body for the next {{!!duration}}.
4280: Each of target's hands fuses to the opposite elbow for the next {{!!duration}}.
4284: Each time target is injured over the next {{!!duration}}, they howl like a wolf.
4285: Each time target opens their mouth for the next {{!!duration}}, a small toad leaps out of it.
4286: Each time target opens their mouth for the next {{!!duration}}, another tooth turns invisible. They return to normal after {{!!l_duration}}.
4287: Each time target opens their mouth for the next {{!!duration}}, they hear eerie music nearby.
4291: Electricity crackles in the air around the target for the next {{!!duration}}.
4292: Electricity crackles in the ground wherever the target steps for the next {{!!duration}}.
4293: Electricity crackles in the target's hair for {{!!duration}}.
4297: Every few seconds for the next {{!!duration}}, a spider crawls from target's mouth.
4302: Rats feel compelled to follow the target for {{!!2d4}} days.
4303: Every spell cast nearby in the next {{!!duration}} strikes the target.
4311: Everyone now within 10 yards of target is compelled to drop whatever they're holding.
4314: Everyone now within 10 yards of target is stricken bald for the next {{!!duration}}.
4316: Everyone now within 10 yards of target shouts the caster's name.
4331: Everything now worn or carried by target becomes sickly green for the next {{!!duration}}.
4332: Everything now worn or carried by target is strewn about the area.
4334: Exertion makes target exhale black smoke like a steam engine for the next {{!!duration}}.
4336: Fire is invisible to the target for the next {{!!duration}}.
4337: Foliage grows wildly beneath the target's feet, entangling them.
4338: For {{!!d50}} seconds, magic doesn't work within 100 yards of target.
4345: Glowing coals appear to be moving within the target's skin for the next {{!!duration}}.
4346: Half of target's body begins rapidly aging backwards for the next {{!!duration}}, after which it reverts to normal.
4347: Half of target's body is affected by reverse gravity for the next {{!!duration}}.
4348: Half of target's body is badly burned, the other half frostbitten.
4351: Half of target's body [[polymorph]]s into some kind of animal. They revert after {{!!duration}}.
4352: Half of target's body resembles half of the caster's body. It reverts after {{!!duration}}.
4353: Half of target's body shrinks by 25%. It reverts after {{!!duration}}.
4356: Half of target's fingers are invisible for the next {{!!duration}}.
4357: Half of target's head appears to be made of crystal for the next {{!!duration}}.
4358: Half of target's head appears to be made of metal for the next {{!!duration}}.
4359: Half of target's head appears to be stripped of flesh for the next {{!!duration}}.
4361: Half of target's head is covered in fine gold scales for the next {{!!duration}}.
4362: Half of target's head is covered in fragrant blue moss for the next {{!!duration}}.
4364: Half of target's limbs become donkey's limbs for the next {{!!duration}}.
4365: Hundreds of blood-red worms course from the target's nostrils over the next {{!!s_duration}}.
4366: Hundreds of small ice chips tumble from target's ears over the next {{!!s_duration}}.
4367: Hundreds of wasps swarm the target whenever they draw a weapon over the next {{!!d10}} days.
4391: The target is rendered squeaky clean.
4407: Anything the target is holding becomes fused to their hand or arm for the next {{!!duration}}.
4408: If target has a shield, it claps shut on their arm like a clamshell. It unclamps after {{!!duration}}.
4409: If target has a shield, it now weighs 500 pounds. It reverts to normal after {{!!duration}}.
4417: If target has any leather, it rots over {{!!s_duration}}.
4459: If target is carrying a pouch, it becomes a small [[bag of holding]] for the next {{!!duration}}.
4461: If target is carrying a pouch, it inflates like a hot air balloon for the next {{!!duration}}.
4468: If target is carrying any wood, it explodes into fiery splinters.
4470: If target is carrying any wood, it turns to sawdust.
4472: If target is carrying rope, they winds it tightly about their neck for the next {{!!duration}}.
4493: The target's legs double in length for the next {{!!duration}}.
4524: If target is wearing animal hide, it animates and attacks them for the next {{!!duration}}.
4527: The target's hands retract into their wrists for the next {{!!duration}}.
4528: If target is wearing any rings, they ignite on their fingers. The fire goes out after {{!!s_duration}}.
4538: If target is wearing armor, it constricts painfully about them for the next {{!!duration}}.
4541: If target is wearing armor, it rattles violently for {{!!d7}} hours.
4542: If target is wearing armor, it teleports {{!!2d4}} yards away.
4549: The target's feet become chicken's feet for the next {{!!duration}}.
4565: If target sits or lies down in the next {{!!duration}}, they teleport {{!!d50}} yards in a random direction.
4579: If target's hands touch in the next {{!!duration}}, they adhere to each other until dawn.
4580: If target is holding any metal, their hand turns to similar metal for the next {{!!duration}}.
4581: If target is holding any metal, it turns to glass for the next {{!!duration}}.
4582: If target is holding any metal, it turns to wood and vice versa for the next {{!!duration}}.
4584: Innumerable bats flutter around the target for the next {{!!duration}}.
4585: Insects swarm around the target for the next {{!!duration}}.
4586: Magic items trigger random magical effects for the target for {{!!2d4}} days.
4587: Magic items don't function for the target for the next {{!!duration}}.
4589: Melancholy moans issue from the target's weapon during battle for the next {{!!duration}}.
4592: Metal weapons within 10 yards of the target chime pleasantly when they strike anything for the next {{!!duration}}.
4594: Metal objects seem 10X heavier to the target while they hold them for the next {{!!duration}}.
4603: Nearest pine tree pelts the target with jagged pine cones for the next {{!!s_duration}}.
4605: Nearest tree sprays the target with boiling, caustic sap.
4618: Next creature slain by the target within {{!!duration}} combusts immediately.
4619: Next creature slain by the target within {{!!duration}} immediately rises as [[undead]].
4620: Next creature slain by the target within {{!!duration}} turns invisible upon death.
4621: Next creature slain by the target within {{!!duration}} very rapidly decomposes.
4622: Next {{!!2d4}} hours seem like a dream to the target.
4625: Next {{!!2d4}} spells cast at the target function as the current spell.
4626: Next {{!!d4}} spells cast at the target function at 2X normal power.
4627: Next {{!!d4}} spells cast at the target strike random targets nearby.
4628: Next beast touched by the target becomes ravenously carnivorous for {{!!duration}}.
4630: Next beast touched by the target shrinks by 75% for {{!!duration}}.
4631: Next beast touched by the target turns into a small [[glidewing]] for the next {{!!duration}}.
4632: Next item handled by the target transmutes into clay for {{!!duration}}.
4635: Next item handled by the target in the next {{!!duration}} painfully drains some of their life force.
4639: Next item handled by the target is invisible while they continue to touch it.
4643: Next item handled by the target makes their hands go numb for the next {{!!duration}}.
4644: Next item handled by the target in the next {{!!duration}} rapidly heals an injury the target has suffered.
4646: Next item handled by the target in the next {{!!duration}} seems to be 200 lbs.
4652: Next person to wound the target in the next {{!!duration}} suffers the same wound.
4654: Next person to wound the target in the next {{!!duration}} hallucinates wildly for {{!!s_duration}}.
4655: Next person to wound the target in the next {{!!duration}} inflicts maximum damage.
4657: Next person to wound the target in the next {{!!duration}} is immediately chained to them for {{!!2d4}} seconds, then the chains vanish.
4658: Next person to wound the target in the next {{!!duration}} is paralyzed for {{!!s_duration}}.
4659: Next person to wound the target in the next {{!!duration}} is splattered with fish guts.
4660: Next person to wound the target in the next {{!!duration}} is stricken blind until sunset.
4661: Next person to wound the target in the next {{!!duration}} is swarmed by aggressive bees.
4662: Next person to wound the target in the next {{!!duration}} is thrown into the nearest well.
4666: Next person to wound the target in the next {{!!duration}} resembles them for {{!!d20}} hours.
4670: Next person to wound the target in the next {{!!duration}} suffers overpowering vertigo for a few seconds.
4671: Next person to wound the target in the next {{!!duration}} suffers the damage instead.
4672: Next person to wound the target in the next {{!!duration}} teleports {{!!d50}} yards away
4673: Next person to wound the target in the next {{!!duration}} teleports {{!!d4}} yards straight up.
4674: Next wound the target suffers in the next {{!!duration}} instead is inflicted upon the caster.
4679: Next person to wound the target in the next {{!!duration}} totally disarms themself.
4685: Next person wounded by target in the next {{!!duration}} is stricken mute for the next {{!!duration}}.
4688: Next person wounded by target in the next {{!!duration}} flees panic-stricken for {{!!s_duration}}.
4689: Next person wounded by target in the next {{!!duration}} shrinks by {{!!d7}}0% for {{!!s_duration}}.
4690: Next person wounded by target in the next {{!!duration}} teleports {{!!d35}} yards in a random direction.
4695: Next puddle stepped in by target drenches them from head to toe.
4696: Next puddle stepped in by target explodes as a [[fireball]].
4697: Next puddle stepped in by target hardens like cement.
4699: Next puddle stepped in by target becomes a water [[elemental]] for {{!!duration}}.
4700: Next puddle stepped in by target becomes a highly concentrated acid for {{!!duration}}.
4703: Next puddle stepped in by target throws them {{!!d35}} yards in the air.
4704: Next puddle stepped in by target turns to glass.
4705: Next time target touches a tree, they partially turn to wood for the next {{!!duration}}.
4706: Next time target touches a tree, they're attacked by {{!!2d4}} squirrels for {{!!duration}}.
4707: Next time target touches a tree, it explodes into sawdust.
4759: Beasts react to the target as if they were a salt lick for the next {{!!duration}}.
4763: Normal voices seem deafeningly loud to the target for the next {{!!duration}}.
4767: On target's back is a button that, if pushed, lights up their head. The button persists for {{!!duration}}.
4769: On target's back is a button that, if pushed, makes them glow a different bright color. The button persists for {{!!duration}}.
4770: On target's back is a button that, if pushed, makes them sweat profusely. The button persists for {{!!duration}}.
4772: All wheels nearby turn invisible for the next {{!!duration}}.
4774: One of target's arms becomes as supple as rope for the next {{!!duration}}.
4775: One of target's arms can bend in {{!!d4}} additional places for the next {{!!duration}}.
4777: One of target's arms is bent like a corkscrew for the next {{!!duration}}.
4778: One of target's arms is bent like a shepherd's crook for the next {{!!duration}}.
4779: One of target's arms is replaced by a duplicate of their head for the next {{!!duration}}.
4780: One of target's arms is stripped to the bone but works normally for the next {{!!duration}}.
4781: One of target's arms loses all bone but functions like a tentacle for the next {{!!duration}}.
4782: One of target's arms turns into a small replica of their leg for the next {{!!duration}}.
4783: One of target's arms turns to a lion's foreleg for the next {{!!duration}}.
4784: One of target's eyes migrates to the back of their head for the next {{!!duration}}.
4785: One of target's feet is fused into an anvil for the next {{!!duration}}.
4786: One of target's feet rotates 180° at the ankle for the next {{!!duration}}.
4787: One of target's hands appears to have been flattened by a hammer for the next {{!!duration}}.
4788: One of target's hands becomes hideously contorted and deformed for the next {{!!duration}}.
4794: One of target's hands glows brightly for the next {{!!duration}}.
4796: One of target's hands is fireproof; the other hand vanishes. They revert to normal after {{!!duration}}.
4801: One of target's hands is shaped like an orangutan's hand for the next {{!!duration}}.
4802: One of target's hands migrates to the top of their head for the next {{!!duration}}.
4803: One of target's hands oozes a viscous liquid like sap for the next {{!!duration}}.
4805: One of target's hands turns into a hoof for the next {{!!duration}}.
4806: One of target's hands turns into a perfect cube of granite for the next {{!!duration}}.
4807: One of target's hands turns into a replica of a rabbit's head for the next {{!!duration}}.
4808: One of target's hands turns into sponge for the next {{!!duration}}.
4810: One of target's legs and one of their arms become as clear as glass for the next {{!!duration}}.
4811: One of target's legs and one of their arms seem to be made of wood for the next {{!!duration}}.
4812: One of target's legs and one of their arms shrink by 50% for the next {{!!duration}}.
4813: One of target's legs and one of their arms turn invisible for the next {{!!duration}}.
4815: One of target's limbs seems to be soaked with milk for the next {{!!duration}}.
4816: One of target's limbs appears to be made of diamond for the next {{!!duration}}.
4817: One of target's limbs becomes wildly disobedient during combat for the next {{!!duration}}.
4819: One of target's limbs is illusory for the next {{!!duration}}.
4820: One of target's limbs can not be rendered invisible for the next {{!!duration}}.
4821: One of target's limbs can't be armored for the next {{!!duration}}.
4822: One of target's limbs develops an intense hatred for the others for the next {{!!duration}}.
4823: One of target's limbs falls off and tries to escape. It flies back in place and reattaches after {{!!duration}}.
4824: One of target's limbs glows bright blue in the dark for the next {{!!duration}}.
4825: One of target's limbs must move 3x slower. This persists for {{!!duration}}.
4828: One of the target's limbs is controlled by the caster for {{!!d4}}0 seconds.
4829: One of target's limbs is covered in feathers for the next {{!!duration}}.
4833: One of target's limbs is made of porcelain but functions normally for the next {{!!duration}}. If shattered, it still reverts to flesh after {{!!duration}} but does not reassemble.
4834: One of target's limbs is paralyzed for {{!!l_duration}}.
4835: One of target's limbs is replaced by a hideous tentacle for {{!!duration}}.
4838: One of target's limbs now juts from the center of their back for the next {{!!duration}}.
4840: One of target's limbs retracts into their torso when not in use for the next {{!!duration}}.
4841: One of target's limbs seems to belong to a different species for the next {{!!duration}}.
4842: One of target's limbs shrinks by 5% per second for the next {{!!s_duration}}, then reverts to normal.
4844: One of target's limbs turns bright green for the next {{!!duration}}.
4845: One of target's limbs turns to a tree limb for the next {{!!duration}}.
4846: One of target's limbs turns to solid gold for the next {{!!duration}}.
4848: One or more of target's allies thinks that target is a traitor for the next {{!!duration}}.
4851: Ordinary water is as intoxicating to target as distilled spirits for the next {{!!duration}}.
4852: Ordinary water is incredibly impressive to the target for the next {{!!duration}}.
4881: Phosphorescent beetles teem over target's skin for {{!!duration}}.
4882: Printed text appears hopelessly garbled while target is nearby for the next {{!!duration}}.
4883: Rope hisses like a snake while target is near it for the next {{!!duration}}.
4884: Rope tends to become hopelessly tangled when target uses it for the next {{!!duration}}.
4885: Seltzer water sprays from the target's nose for {{!!s_duration}}.
4886: Shimmering lights play over the target's skin during combat for the next {{!!duration}}.
4887: Smoke issues from the ground near the target for the next {{!!duration}}.
4890: Smoke pours from target's skin for the next {{!!duration}}.
4895: Sparks fly from target's ears as from a grindstone for the next {{!!duration}}.
4898: Sparks fly from target's nostrils as they speak for the next {{!!duration}}.
4899: Spectral voices echo everything that the target says for the next {{!!duration}}.
4900: Suddenly {{!!2d4}} humanoid [[manifestation]]s appear and attack the target. They vanish after {{!!duration}}.
4901: Suddenly {{!!2d4}} humanoid [[manifestation]]s appear and offer trinkets to the target. They vanish after {{!!duration}}.
4903: Suddenly {{!!2d4}} humanoid [[manifestation]]s people appear and worship the target. They vanish after {{!!duration}}.
4904: Suddenly {{!!d4}} people nearby resemble the target for the next {{!!duration}}.
4906: Sulfurous mud oozes from target's clothes for {{!!d7}} hours.
4909: Summoned creatures are invisible to the target for the next {{!!duration}}.
4916: Swords can't come within ten feet of the target for {{!!s_duration}}.
4917: Swords within 10 yards of the target drip with the target's blood for the next {{!!duration}}.
4918: Weapons pass harmlessly through the target's body for {{!!s_duration}}.
4919: Target acquires a new language and refuses to speak any other for the next {{!!duration}}.
4923: Target acts as though they're the only person who really exists for the next {{!!duration}}.
4927: Target acts like a child for {{!!duration}}.
4928: Target acts like a horse for {{!!duration}}.
4930: Target changes accents for every sentence they speak for the next {{!!duration}}.
4932: Target suddenly ages {{!!d4}}0 years. They revert to normal after {{!!duration}}.
4946: Target and nearest creature are chained together for {{!!duration}}, then the chain vanishes.
4953: Target and the next person they attack are soaked with icy brine.
4954: Target and the next person they attack both shrink by 40% for the next {{!!duration}}.
4958: Target and the next person they attack teleport {{!!2d4}} yards in a random direction.
4959: Target and the next person they attack vanish for {{!!s_duration}}.
4961: Target appears to be {{!!d20}} inches taller than they really are for the next {{!!duration}}.
4962: Target appears to be a hideous corpse for the next {{!!duration}}.
4964: Target appears to be in the middle of a terrible rainstorm for the next {{!!duration}}.
4965: Target appears to be made of chocolate for the next {{!!duration}}.
4967: Target appears to be wearing a cloak of shimmering fire for the next {{!!duration}}.
4968: Target appears to have been assembled out of bamboo for the next {{!!duration}}.
4975: Target asserts that all contracts are null and void. The delusion persists for the next {{!!duration}}.
4976: Target asserts that all gold within 10 miles is counterfeit. The delusion persists for the next {{!!duration}}.
4978: Target asserts that anyone who drinks their blood will live forever. The delusion persists for the next {{!!duration}}.
4979: Target asserts that dangerous organisms live within their flesh for the next {{!!duration}}.
4980: Target asserts that death no longer has any power over them for the next {{!!duration}}.
4981: Target asserts that fire has no effect upon them for the next {{!!duration}}.
4982: Target asserts that they and the caster have been allies for years. The delusion persists for the next {{!!duration}}.
4985: Target asserts that they can divine the future, for the right price. The delusion persists for the next {{!!duration}}.
4987: Target asserts that they can issue divine edicts on behalf of the [[Sovereign Host]]. The delusion persists for the next {{!!duration}}.
4990: Target asserts that they can summon earth [[elemental]]s by eating dirt. The delusion persists for the next {{!!duration}}.
4998: Target asserts that they died {{!!s_duration}} ago. The delusion persists 
for the next {{!!duration}}.
4999: Target asserts that they died {{!!2d4}} years ago. The delusion persists for the next {{!!duration}}.
5000: Target asserts that they have a key that unlocks their skull. The delusion persists for the next {{!!duration}}.
5002: Target asserts that they have only {{!!duration}} to live. The delusion persists until the end of that time.
5003: Target asserts that they have the power to bestow godhood. The delusion persists for the next {{!!duration}}.
5004: Target asserts that they has the power to create and destroy souls. The delusion persists for the next {{!!duration}}.
5008: Target asserts that they are the caster's grandparent. The delusion persists for the next {{!!duration}}.
5009: Target asserts that they knows exactly who is destined to kill them. The delusion persists for the next {{!!duration}}.
5010: Target asserts that they knows the location of a secret holy book. The delusion persists for the next {{!!duration}}.
5012: Target asserts that they knows when, where, and how they'll die. The delusion persists for the next {{!!duration}}.
5013: Target asserts that they must choose which of their allies must die. The delusion persists for the next {{!!duration}}.
5014: Target asserts that they were bitten by a werewolf one month ago. The delusion persists for the next {{!!duration}}.
5015: Target asserts that they will become omnipotent upon death. The delusion persists for the next {{!!duration}}.
5018: Target asserts that they'll combust if anyone says their name for the next {{!!duration}}, or until someone says their name.
5020: Target asserts that they'll combust if they get wet for the next {{!!duration}}.
5022: Target asserts that they'll combust if they're outdoors at sunset for the next {{!!duration}}.
5023: Target asserts that they'll combust if their blood is spilled for the next {{!!duration}}.
5026: Target asserts that they'll die if anyone harms the caster for the next {{!!duration}}.
5031: Target asserts that they'll die if they changes or cleans their clothes for the next {{!!duration}}.
5032: Target asserts that they'll die if they close their eyes or blink. The delusion persists for the next {{!!duration}}.
5033: Target asserts that they'll die if they crosses moving water. The delusion persists for the next {{!!duration}}.
5036: Target asserts that they'll die if they draw/sheathe their weapon. The delusion persists for the next {{!!duration}}.
5037: Target asserts that they'll die if they eats during the next 4 days. The delusion persists for the next {{!!duration}}.
5039: Target asserts that they'll die if they open their eyes. The delusion persists for the next {{!!duration}}.
5041: Target asserts that they'll die if they sees their own blood. The delusion persists for the next {{!!duration}}.
5044: Target asserts that they'll die if they stop dancing. The delusion persists for the next {{!!duration}}.
5045: Target asserts that they'll die if they stop talking. The delusion persists for the next {{!!duration}}.
5046: Target asserts that they'll die if they touch anyone else's blood. The delusion persists for the next {{!!duration}}.
5047: Target asserts that they'll die if they touch gold. The delusion persists for the next {{!!duration}}.
5048: Target asserts that they'll die if they touch ice. The delusion persists for the next {{!!duration}}.
5049: Target asserts that they'll die if they touch any metal. The delusion persists for the next {{!!duration}}.
5056: Target asserts that they'll die the next time they eat. The delusion persists for the next {{!!duration}}.
5058: Target asserts that they'll die the next time they sleep. The delusion persists for the next {{!!duration}}.
5059: Target asserts that they'll die in the next {{!!duration}} unless they burn all of their clothing. The delusion persists until that time passes.
5061: Target asserts that they'll die unless they cut off their own hand. The delusion persists for the next {{!!duration}}.
5063: Target asserts that they'll die unless they destroy their weapon. The delusion persists for the next {{!!duration}}.
5067: Target asserts that they'll die unless they kill the caster. The delusion persists for the next {{!!duration}}.
5072: Target asserts that they'll die unless they take a vow of pacifism. The delusion persists for the next {{!!duration}}.
5076: Target asserts that they'll die when the caster casts another spell. The delusion persists for the next {{!!duration}}.
5083: Target asserts that they'll vanish forever if they fall asleep.
5084: Target asserts that they'll vanish forever if they leaves this area. The delusion persists for the next {{!!duration}}.
5085: Target asserts that they'll vanish into the ground at dawn tomorrow.
5087: Target asserts that they're a ghost and must haunt this area. The delusion persists for the next {{!!duration}}.
5088: Target asserts that they're a highly qualified thoracic surgeon. The delusion persists for the next {{!!duration}}.
5090: Target asserts that they're a summoned creature about to be banished. The delusion persists for the next {{!!duration}}.
5094: Target asserts that they've been fatally wounded. The delusion persists for the next {{!!duration}}.
5096: Target asserts that they've been replaced by a [[doppelganger]]. The delusion persists for the next {{!!duration}}.
5097: Target asserts that they're brother to [[dragon]]s and companion to owls
5099: Target asserts that they're eager to exterminate their species. 
5102: Target asserts that they're immune to magic. The delusion persists for the next {{!!duration}}.
5107: Target asserts that they're protected by a host of [[demon]]s. The delusion persists for the next {{!!duration}}.
5108: Target asserts that they're rapidly bleeding to death. The delusion persists for the next {{!!duration}}.
5112: Target asserts that they're supernaturally beautiful.
5116: Target asserts that they're transforming into some kind of beast. The delusion persists for the next {{!!duration}}.
5117: Target asserts that they're unspeakably ugly. The delusion persists for the next {{!!duration}}.
5118: Target asserts that they're water soluble. The delusion persists for the next {{!!duration}}.
5119: Target asserts that their actions are in accordance with prophecy. The delusion persists for the next {{!!duration}}.
5121: Target asserts that their allies have forsaken them. The delusion persists for the next {{!!duration}}.
5125: Target asserts that their clothes are writhing with snakes. The delusion persists for the next {{!!duration}}.
5126: Target asserts that their clothing is trying to kill him. The delusion persists for the next {{!!duration}}.
5133: Target asserts that their soul will be destroyed if they're injured. The delusion persists for the next {{!!duration}}.
5134: Target asserts that their touch can induce madness. The delusion persists for the next {{!!duration}}.
5136: Target asserts that no one nearby really exists. The delusion persists for the next {{!!duration}}.
5139: Target asserts that puns and rhymes are painful to them. The delusion persists for the next {{!!duration}}.
5144: Target asserts that the caster is a fraud and a charlatan. The delusion persists for the next {{!!duration}}.
5146: Target asserts that the caster's spell functioned as intended. 
5147: Target asserts that the king owes them a huge favor. The delusion persists for the next {{!!duration}}.
5151: Target asserts that whoever kills them will become a god. The delusion persists for the next {{!!duration}}.
5159: Target attacks the next person nearby who says their own name.
5161: Target attacks the next person who address them by name.
5166: Target attempts to ingest any ink they see for the next {{!!duration}}.
5167: Target attempts to mimic the caster's every move for the next {{!!duration}}.
5169: Target attempts to strangle themself with their bare hands for the next {{!!s_duration}}.
5171: Target attracts leeches, maggots, slugs, and snails for the next {{!!duration}}.
5172: Target babbles incoherently for {{!!s_duration}}.
5173: Target barks like a dog when they thinks they see magic for the next {{!!duration}}.
5175: Target's skin becomes stark white for the next {{!!duration}}.
5178: Target becomes intensely covetous of any [[magic item]] they see for the next {{!!duration}}.
5180: Target becomes nearly insane with rage whenever anyone says their name for the next {{!!duration}}.
5191: Target begs someone to set them ablaze for the next {{!!duration}}.
5192: Target believes anything the caster says to them for the next {{!!duration}}.
5194: Target believes no factual statement they hear for the next {{!!duration}}.
5196: Target believes that they can't be harmed by a fall from any height for the next {{!!duration}}.
5197: Target believes that they can't be slain by metal weapons for the next {{!!duration}}.
5198: Target believes that their allies are conspiring to rob them. The delusion persists for the next {{!!duration}}.
5199: Target believes that nearly everyone is lying to them. The delusion persists for the next {{!!duration}}.
5200: Target believes that whatever they last ate gave them eternal life. The delusion persists for the next {{!!duration}}.
5201: Target believes that whatever they last ate is still alive. The delusion persists for the next {{!!duration}}.
5204: Target believes that whatever they last ate was their last meal. The delusion persists for the next {{!!duration}}.
5205: Target believes that whatever they last ate was worth a fortune. The delusion persists for the next {{!!duration}}.
5208: Target bleeds from every orifice for {{!!s_duration}} but is unharmed.
5210: Target expels bright blue fog with every breath for the next {{!!duration}}.
5212: Target briefly becomes invisible to anyone who wounds them for the next {{!!duration}}.
5213: Target briefly resembles anyone who wounds them for the next {{!!duration}}.
5214: Target briefly resembles the caster each time either of them is wounded for the next {{!!duration}}.
5215: Target bursts into flame for the next {{!!s_duration}}, at which point the flames sputter out.
5216: Target is covered in moss and lichens.
5218: Target becomes totally nondescript and unremarkable for the next {{!!duration}}. They are hard to focus on, and blend easily into the crowd, as if they're wearing an [[inconspicuous hat]]. 
5231: Target can bend their spine 120° midway along its length for the next {{!!duration}}.
5233: Target can cast [[lightning bolt]] without expending energy for the next {{!!duration}}.
5238: Target's face changes color every {{!!s_duration}} for the next {{!!duration}}.
5242: Target can cast the [[command]] spell for the next {{!!duration}}.
5248: Everything the target tries to say over the next {{!!duration}} is delayed by {{!!s_duration}}.
5254: Target can divine the caster's exact location for the next {{!!l_duration}}.
5255: Target can do nothing but scream for {{!!duration}}.
5256: Target is [[charm]]ed by the caster for the next {{!!duration}}.
5257: A four-foot-high wall of snow materializes halfway between the caster and the target.
5258: Target exhales fire with every breath for the next {{!!2d4}} breaths.
5275: Target is compelled to ingest a single coin. 
5286: Target knows the location of every bear within one mile for the next {{!!duration}}.
5288: An exact copy of the target appears next to them and persists for {{!!s_duration}}.
5289: An exact copy of the caster appears next to the target and persists for {{!!s_duration}}.
5291: Target's voice issues from a nearby object for the next {{!!duration}}.
5293: Target's voice is 2 octaves higher for the next {{!!duration}}.
5294: Target's voice is 2 octaves lower for the next {{!!duration}}.
5295: Target can make their whisper heard by anyone in their line of sight
5322: Target can cast [[polymorph]] for the next {{!!duration}}.
5332: Target's ears retract into their skull, and can be retracted and extended by the target at will for the next {{!!duration}}.
5333: One of the target's limbs retract into their body, and can be retracted and extended by the target at will for the next {{!!duration}}.
5340: Target's palms shine with torchlight for the next {{!!duration}}.
5341: The soles of the target's feet shine with torchlight for the next {{!!duration}}.
5342: Target can speak only in a full shout for the next {{!!duration}}.
5343: Target can speak only in grunts for the next {{!!duration}}.
5345: Target can speak only in whale song for the next {{!!duration}}.
5347: Target can speak with flies and gnats for the next {{!!duration}}.
5362: Target can cast [[conjure elemental]] to conjure an earth [[elemental]] one time.
5374: Target can understand every language they hear for the next {{!!duration}}.
5375: Target's non-dominant hand becomes dominant, and vice versa, for the next {{!!duration}}.
5387: Target can't be affected by the caster's magic for {{!!duration}}.
5398: Target can't be detected by invisible creatures for the next {{!!duration}}.
5399: Target can't be detected by magical attempts at scrying for the next {{!!duration}}.
5408: Target can't be harmed by fire for the next {{!!duration}}.
5418: Target can't be knocked off balance by any physical force for the next {{!!duration}}.
5419: Target can't be magically detected by anyone not of their race for the next {{!!duration}}.
5429: Target can't be wounded by metal weapons until sunset tonight.
5431: Target can't breathe for {{!!d4}}0 seconds.
5432: Target can't breathe until they remove their boots or shoes.
5435: Target can't come within 10 feet of any fire now burning for the next {{!!duration}}.
5436: Target can't come within 10 yards of the caster for the next {{!!duration}}.
5449: Target can't draw their weapon or sheathe it if it's now drawn for the next {{!!duration}}.
5453: Target can't hear their own voice for the next {{!!duration}}.
5459: Target can't hear voices for {{!!duration}}.
5465: Target can't lie, equivocate, or tell half-truths for the next {{!!duration}}.
5466: Target can't move more than 10 yards from the caster for the next {{!!duration}}.
5467: Target can't pass through doorways for the next {{!!duration}}.
5468: Target can't say anyone's name for the next {{!!duration}}.
5470: Target can't see light other than sunlight or reflected sunlight for the next {{!!duration}}.
5471: Target can't see or hear any of their allies for the next {{!!duration}}.
5473: Target can't see or hear living creatures for the next {{!!s_duration}}.
5475: Target can't see or hear metal objects for {{!!duration}}.
5476: Target can't see sunlight or reflected sunlight for the next {{!!duration}}.
5485: Target can't speak for the next {{!!duration}}.
5488: Target can't speak unless they cover their mouth for the next {{!!duration}}.
5504: Target can't walk until the caster says their own name or until after {{!!duration}}.
5507: Target can't wield any weapon in their dominant hand for the next {{!!duration}}.
5511: Target is compelled to random tap on inanimate objects with whatever they are holding for the next {{!!duration}}.
5512: Target challenges their closest ally to single combat to the death. The delusion persists for the next {{!!d4}} minutes.
5513: Target chants nonsensically for {{!!s_duration}}.
5514: Target clatters when they walks like a barrel full of pots and pans for the next {{!!duration}}.
5515: Target collapses into a fetal position for {{!!s_duration}}.
5520: Target confesses to a list of crimes, none of which has happened, for the next {{!!s_duration}}.
5523: Target confesses to rampant kleptomania for the next {{!!s_duration}}.
5525: Target exudes fragrant soap suds for the next {{!!duration}}.
5527: Target coughs incessantly, but their actions are unimpaired, for the next {{!!duration}}.
5528: Target sprouts a horse tail for the next {{!!duration}}.
5531: Target crouches and begins eating dirt, twigs, gravel, etc. for the next {{!!duration}}.
5532: Target crows like a rooster.
5533: Target dares {{!!d4}} of their allies to try to behead him.
5534: Target declares this area to be a sanctified ground for the next {{!!duration}}.
5535: Target transforms into a [[gibbering mouther]] for the next {{!!duration}}.
5537: Target develops a pronounced stutter for the next {{!!duration}}.
5543: Target spits out a handful of acorns every few moments for the next {{!!duration}}.
5545: Target disgorges a pound of feathers.
5548: Target disgorges {{!!d35}} dragonflies.
5549: Target disgorges a clump of tiny, phosphorescent worms.
5551: Target disgorges a gallon of boiling pitch.
5552: Target disgorges {{!!2d4}} small birds.
5553: Target disgorges {{!!d20}} pounds of slag.
5554: Target disgorges {{!!d35}}0 feet of hemp rope.
5555: Target disgorges {{!!2d4}} sheets of pristine parchment.
5557: Target disgorges a 50 pound sack of potatoes.
5562: Target disgorges a bundle of razor-sharp shards of glass.
5564: Target disgorges a corked bottle of wine.
5567: Target disgorges a full-sized statue of a nearby ally.
5570: Target disgorges a [[homunculus]].
5571: Target disgorges a huge quantity of raisins, dates, and figs.
5573: Target disgorges a large slab of marble.
5574: Target disgorges a map of the surrounding area centered on their location. 
5575: Target disgorges a one-half-size clone of the caster, which vanishes after {{!!duration}}.
5577: Target disgorges a slimy slug as long and thick as their arm. It vanishes after {{!!duration}}.
5584: Target disgorges a two-foot square pane of glass.
5588: Target disgorges an egg that, if broken, turns into a small boat. It vanishes after {{!!duration}}.
5589: Target disgorges an entire trombone.
5590: Target disgorges an exact copy of the clothes they're now wearing. They vanish after {{!!duration}}.
5593: Target disgorges several gallons of house paint.
5594: Target disgorges several gallons of viscous, highly adhesive goo.
5607: Target drowns for {{!!d7}}0 seconds but is fine afterward.
5617: Target experiences searing pain when their skin is touched for the next {{!!duration}}.
5622: Target exudes a scent like something dredged from the ocean floor for the next {{!!duration}}.
5623: Target exudes a scent reminiscent of skunks for the next {{!!duration}}.
5644: Target exudes an offensive stench that they themselves can't smell for the next {{!!duration}}.
5645: Target fails at their next attempt at fine manual dexterity within the next {{!!duration}}.
5646: Target falls asleep for {{!!duration}}, unless they are shaken awake first.
5647: Target fanatically defends the caster for the next {{!!d7}}0 seconds.
5650: Target feels as if they're walking on a high tightrope for the next {{!!duration}}.
5651: Target feels as if they're wearing an enormous hat made of lead for the next {{!!duration}}.
5652: Target feels as if their clothes are trying to digest them for the next {{!!duration}}.
5655: Target feels as if thorns have sprouted in their clothes for the next {{!!duration}}.
5657: Target feels as though they just ate three pounds of butter for the next {{!!duration}}.
5669: Target feels as though their teeth are spinning in their mouth for the next {{!!duration}}.
5683: Target feels like they're having the time of their life for the next {{!!duration}}.
5685: Target feels the ground shake as during a powerful earthquake for the next {{!!duration}}.
5717: Target flees from anyone who addresses them by name for the next {{!!duration}}.
5724: Target forgets everything said to them in the past {{!!d4}} hours.
5732: Target forgets how to use doors for the next {{!!duration}}.
5734: Target forgets that their allies know who they are for the next {{!!duration}}.
5749: One of target's arms turns to steam. It reappears after {{!!duration}}.
5771: Target gives whatever they're holding to the person standing nearest to them.
5772: Target glows bright blue for the next {{!!duration}}.
5776: Target glows with a bright, rainbow aura that gets brighter if they try to be stealthy. It persists for the next {{!!duration}}.
5782: Target goes berserk if they touch gold in the next {{!!duration}}.
5784: Target goes into a homicidal rage for {{!!d4}}0 seconds, then passes out. They wake up after {{!!duration}}.
5785: Target goes into a homicidal rage for {{!!d4}}0 seconds, then vanishes. They reappear after {{!!duration}}.
5789: Target grows an additional {{!!d7}} fingers that vanish after {{!!duration}}.
5790: Target grows an additional pair of ears atop their head that vanish after {{!!duration}}.
5791: Target grows an additional pair of eyes somewhere on their face that vanish after {{!!duration}}.
5792: Target has {{!!d10}}0 tiny steel spheres embedded in their skin for the next {{!!duration}}.
5794: Target becomes incredibly physically strong for {{!!s_duration}}.
5800: Target has a blowhole in the back of their neck for the next {{!!duration}}.
5802: Target has a compartment in their torso able to carry small items. It persists for the next {{!!duration}}.
5803: Target has a complete but false memory of the past 24 hours. It reverts to normal after {{!!duration}}.
5808: Target has a harmless hole in their forehead as large as their fist. It reverts to normal after {{!!duration}}.
5809: Target has a hole in their torso big enough to accommodate their head for the next {{!!duration}}.
5822: Target has a mane like a lion for the next {{!!duration}}.
5825: Target has a raised, square protuberance jutting from their chest for the next {{!!duration}}.
5826: Target has a relief of the caster's face embossed on their back for the next {{!!duration}}.
5832: Target has a seizure lasting for {{!!duration}}, or until they are targeted by another spell.
5835: Target has a small lamp in their forehead like a miner's helmet. It persists for {{!!duration}}.
5836: Target has a small lump on their forehead like a horseshoe for the next {{!!duration}}.
5837: Target has a small steel ring jutting from each shoulder blade for the next {{!!duration}}.
5838: Target has a harmless star-shaped hole running completely through their head for the next {{!!duration}}.
5840: Target has a steel bolt harmlessly running completely through their head for the next {{!!duration}}.
5841: Target has a strange tattoo that, if touched, causes them to weep. It vanishes after {{!!duration}}.
5846: Target has a tiny extradimensional compartment beneath one of their fingernails. It reverts to normal after {{!!duration}}.
5847: Target has a violent coughing fit that persists until sunrise.
5850: Target has a wooden bucket firmly affixed to their head for the next {{!!duration}}.
5851: Target has an exact copy of everything now carried by the caster, scattered around their feet. It persists for the next {{!!duration}}.
5854: Target has an immobilizing steel brace on one of their legs for the next {{!!duration}}.
5856: Target has an overpowering fear of shoes and other footwear for the next {{!!duration}}.
5867: Target has their name tattooed all over their body for the next {{!!duration}}.
5870: Target has innumerable feathers stuck to their skin for the next {{!!duration}}.
5881: Target has no idea of where they are or what they're doing. Their memory is restored after {{!!duration}}.
5890: Target has prominent mandibles like an ant for the next {{!!duration}}.
5891: Target has six eyes spaced evenly around their skull for the next {{!!duration}}.
5894: Target has terrifying hallucinations about their own death for the next {{!!duration}}.
5895: Target has the caster's name tattooed all over their body for the next {{!!duration}}.
5896: Target has the head and right arm of a common housefly for the next {{!!duration}}.
5897: Target has three identical faces spaced evenly around their skull for the next {{!!duration}}.
5898: Target has ugly, thorny projections along both of their arms for the next {{!!duration}}.
5910: Target hates their nearest ally as much as their most bitter enemy for the next {{!!duration}}.
5911: Target hears cheers and applause for the next {{!!duration}}.
5914: Target hears their own voice endlessly chanting their own name for the next {{!!duration}}.
5915: Target hears their own voice screaming in their ears for the next {{!!duration}}.
5916: Target hears their own voice whispering words of comfort to them for the next {{!!duration}}.
5919: Target hears the clattering of swords for the next {{!!duration}}.
5920: Target hears the crash of cymbals whenever they use a magic item or end a sentence for the next {{!!duration}}.
5921: Target hears the noisy buzzing of countless bees for the next {{!!duration}}.
5922: Target hears thunder booming all around him, but no one else does. This persists for the next {{!!duration}}.
5923: Target hoots like a foghorn.
5924: Target increases in size and mass by 20% for the next {{!!duration}}.
5928: Target insists that their body is real and spectacular for the next {{!!duration}}.
5954: Target is at the heart of an invisible thunderstorm for the next {{!!duration}}.
5957: Target is weightless for the next {{!!duration}}.
5959: Target is afflicted with [[lycanthropy|lycanthrope]] for the next {{!!l_duration}}.
5962: Target is attacked by {{!!d50}} tiny skeletal bats for the next {{!!duration}}, after which they collapse into piles of tiny bones.
5963: Target is attacked by {{!!2d4}} housecats for the next {{!!duration}}, after which they flee.
5966: Target is attacked by dozens of crows for the next {{!!duration}}, and then they all vanish.
5968: Target is attacked by moths for the next {{!!duration}}.
5973: Target is blown back {{!!d4}}0 yards.
5974: Target is bound by fine but very durable silver chains that vanish after {{!!duration}}.
5975: Target is briefly blinded by a dense cloud of powdered sugar.
5976: Target is briefly blinded by countless flies swarming around him.
5977: Target is buffeted by mighty winds that affect no one else for the next {{!!duration}}.
5978: Target is buried by a heap of mildewed potato peelings.
5979: Target is buried by a sudden avalanche; no one else is affected.
5980: Target is buried up to their knees in burning coals.
5981: Target is buried up to their knees in shiny new gold coins. The coins vanish after {{!!duration}}.
5994: Target is certain that they're a plant-based creature for the next {{!!duration}}.
6002: Target is coated in a delicious honey glaze.
6003: Target is coated in boiling pitch.
6004: Target is completely enclosed by a layer of living flesh. Once it is peeled off of them, it rapidly decays.
6005: Target is constricted as though squeezed by an invisible python for the next {{!!duration}}.
6006: Target is covered by a suit of full plate armor, made of glass.
6007: Target is covered by a thick shawl of vulture feathers.
6008: Target is covered by coarse and musky wool like a yak.
6009: Target is covered by dozens of slugs and snails.
6010: Target is covered by thick, ugly scales for the next {{!!duration}}.
6018: Target is draped in a gossamer shawl that vanishes after {{!!duration}}.
6020: Target is draped in foul-smelling seaweed.
6021: Target is draped in hundreds of long colorful threads.
6024: Target is dressed like a court jester.
6029: Target is encased in the ground up to their neck.
6030: Target is encased in a glass box quickly filling with water. It vanishes after {{!!duration}}, but the water persists and splashes all over the ground.
6031: Target is encased in a large, hollow sphere of ice.
6032: Target is encased in a marble sarcophagus that vanishes after {{!!duration}}.
6033: Target is encased in a sealed wicker basket that vanishes after {{!!duration}}.
6034: Target is encased in a skin-tight plaster cast that vanishes after {{!!duration}}.
6036: Target is encircled by a chest-high wall of packed snow.
6037: Target is encircled by a waist-high iron fence that vanishes after {{!!duration}}.
6038: Target is encircled by a zone of intense cold for the next {{!!duration}}.
6041: Target is encircled by an illusory wall of chattering skulls for the next {{!!duration}}.
6042: Target is encircled by tall icicles, each as thick as their leg.
6043: Target is enclosed for {{!!duration}} in an impenetrable 10-foot sphere of force.
6044: Target is enclosed in a shrinking steel cage for {{!!d4}}0 seconds.
6045: Target is enraged beyond all rational control for the next {{!!s_duration}}.
6046: Target is ensconced in velvet.
6048: Target is especially receptive to suggestion for the next {{!!duration}}.
6056: Target is harassed by skeletal crows for the next {{!!duration}}.
6063: Target is holding an anvil and can't put it down for {{!!2d4}}0 seconds, after which it vanishes.
6064: Target is holding an egg in each hand and must not break them. The eggs vanish after {{!!duration}}.
6066: Target is horribly afraid of cooked or salted meat for the next {{!!duration}}.
6067: Target is horribly scarred, as though shredded and reassembled, for the next {{!!duration}}.
6076: Target is immune to all injury for the next {{!!duration}}.
6088: Target can see through all illusions for the next {{!!duration}}.
6092: Target is immune to lightning for the next {{!!duration}}.
6096: Target cannot be magically healed for the next {{!!duration}}.
6112: Target is in the middle of a typhoon, but no one else is, which persists for the next {{!!duration}}.
6121: Target is invisible while shouting for the next {{!!duration}}.
6136: Target is surrounded by golden light until dawn tomorrow.
6140: Target is liquefied but reforms over the course of {{!!duration}}.
6143: Target is mesmerized by the sound of clinking metal for the next {{!!duration}}.
6145: Target is now standing {{!!d7}}0 yards behind the spell's target point.
6146: Target is now standing atop the tallest mountain within 100 miles. They teleport back to their origin position after {{!!duration}}.
6147: Target is numb to all physical sensation for {{!!s_duration}}.
6151: Target is obsessed with ridding themself of their shadow for the next {{!!duration}}.
6152: Target is obsessively covetous of some item that they can now see for the next {{!!duration}}.
6155: Target is obsessively protective someone they're never met for the next {{!!duration}}.
6156: Target is overwhelmingly drunk for {{!!s_duration}}, then totally sober.
6158: Target is pelted by hundreds of acorns.
6159: Target is pelted by snowballs for {{!!s_duration}}.
6160: Target is pelted by tiny, red hot coals for {{!!s_duration}}.
6166: Target is suddenly physically exhausted.
6170: Target is pursued by rogue shadows that resemble their own for the next {{!!duration}}.
6179: Target is rendered deaf and blind for {{!!s_duration}}.
6182: Target is rendered mute for {{!!duration}}.
6183: Target is scarred as though they were pressed against a hot screen for the next {{!!duration}}.
6185: Target is sheathed in a large, living sponge for the next {{!!s_duration}}, then it vanishes.
6186: Target is sheathed in a plant like a huge pea pod. It vanishes after {{!!duration}}.
6187: Target is sheathed in blood-soaked strips of leather.
6188: Target is covered in wax.
6189: Target is shoved to the ground every few seconds for the next {{!!d4}} minutes.
6190: Target is showered by sawdust every few seconds for the next {{!!d4}} minutes.
6191: Target is showered by shaved ice every few seconds for the next {{!!d4}} minutes.
6200: Target is smeared in some kind of fireproof jell.
6205: Target is stricken completely hairless. Their hair grows back over the course of {{!!duration}}.
6206: Target is stricken deaf, blind, and mute for {{!!s_duration}}.
6211: Target is struck by lightning.
6212: Target is struck by lightning every few seconds for the next {{!!d4}} minutes.
6218: Target is stung by a bee as large as a fist.
6222: Target is suddenly holding an anvil in each arm.
6226: Target is suddenly holding an enormous bouquet of roses. The roses vanish after {{!!duration}}.
6228: Target is suddenly holding the nearest corpse in their arms.
6229: Target is suddenly lying in a four-poster canopy bed.
6237: Target is suddenly on the verge of utter dehydration.
6246: Target is suddenly sitting in a bucket full of ice water.
6252: Target is suddenly standing atop a heap of shattered masonry.
6253: Target is suddenly standing atop a rickety and very tall fence.
6254: Target is suddenly standing atop a tall ladder.
6255: Target is suddenly standing atop the nearest corpse.
6263: Target is suddenly standing on a trapdoor over a very deep pit.
6264: Target is suddenly standing on the shoulders of a nearby ally.
6266: Target is suddenly standing under the nearest bridge.
6270: Target is suddenly wearing a cast-iron straightjacket, which vanishes after {{!!duration}}.
6274: Target is suddenly wearing an ornate saddle of very high quality. It vanishes after {{!!duration}}.
6277: Target is surrounded by pandering sycophants, hazy [[manifestation]]s which vanish after {{!!duration}}.
6278: Target is surrounded by rabid wolves. They vanish after {{!!duration}}.
6280: Target is surrounded by vermin and small pests for the next {{!!duration}}.
6295: Target is thrown {{!!d4}}0 seconds into the future.
6296: Target is thrown {{!!2d4}} yards into the air.
6297: Target is thrown down the nearest flight of stairs.
6301: Target is tied to the ground with rope made of their own hair. The rope vanishes after {{!!duration}}.
6302: Target is tightly bound by strips of adhesive cloth for the next {{!!duration}}.
6303: Target is tightly chained to the nearest tree. The chain vanishes after {{!!duration}}.
6304: Target is tightly swaddled in a coarse wool blanket.
6306: Target is tightly wrapped in strips of raw and greasy bacon.
6311: Target is tormented by shrill and discordant music for the next {{!!duration}}.
6319: Target is unable to look directly at the caster for the next {{!!duration}}.
6320: Target is unaffected by wind for the next {{!!duration}}.
6322: Target is unusually clumsy for {{!!duration}}.
6326: Target is violently pushed {{!!d10}} yards, and is stunned for {{!!d20}} seconds.
6328: Target is wearing a formal suit made entirely of lettuce.
6338: Target jingles like sleigh bells when they walk for the next {{!!duration}}.
6345: Target knows the current location of every [[dwarf]] within 10 miles for the next {{!!duration}}.
6346: Target knows the location of every lock within one mile for the next {{!!duration}}.
6353: Target leeches health from the caster for a few seconds, rapidly recovering from injures while the caster suffers necrotic damage.
6354: Target levitates {{!!d10}}0 yards into the air for {{!!duration}}.
6355: Target levitates {{!!2d4}} feet into the air for {{!!duration}}.
6358: Target looks as though half of their body is made of pumice for the next {{!!duration}}.
6359: Target looks as though half of their body is made of wood for the next {{!!duration}}.
6360: Target looks as though they're made entirely of clay for the next {{!!duration}}.
6361: Target looks exactly like the caster for the next {{!!duration}}.
6362: Target looks like a photo-negative for the next {{!!duration}}.
6382: Target loses the sense of object permanence for the next {{!!duration}}.
6384: Target makes a spirited effort to disarm their allies for the next {{!!s_duration}}.
6385: Target makes a spirited effort to eat their own foot for the next {{!!duration}}.
6394: Target mimics the actions of one of their allies for the next {{!!duration}}.
6395: Target mimics the caster's actions for the next {{!!duration}}.
6396: Target mistakes themself for someone else for the next {{!!duration}}.
6397: Target moos like a cow at random intervals for the next {{!!duration}}.
6416: Target must lie whenever they're asked their name for the next {{!!duration}}.
6419: Target teleports back to this location after {{!!duration}}.
6424: Target's left leg bursts into flame.
6442: Target must say their name every time they draw a weapon or try to intimidate someone for the next {{!!duration}}.
6447: Target now has three legs spaced evenly around their pelvis. They vanish after {{!!duration}}.
6448: Target obsessively cleans and polishes anything they're holding for the next {{!!duration}}.
6454: Target does not need to blink for the next {{!!l_duration}}.
6455: Target does not need to eat for the next {{!!2d4}} days.
6463: Target perceives everyone nearby to be sheathed in golden flame for the next {{!!duration}}.
6465: Target perceives everyone nearby to look just like them for the next {{!!duration}}.
6470: Target is bathed in silver light for the next {{!!duration}}.
6485: Target presents a long list of grievances to the caster for the next {{!!duration}}.
6488: Target punches their jaw repeatedly for the next {{!!s_duration}} or until they knock themself out.
6489: Target quickly regenerates any injury for the next {{!!duration}}.
6490: Target races away in a random direction and can't stop for the next {{!!duration}}.
6504: Target rattles like a bucket of stones when they move for the next {{!!duration}}.
6558: Target reacts violently to anyone who wears jewelry for the next {{!!duration}}.
6559: Target reacts violently to anyone who is wearing a hat for the next {{!!duration}}.
6575: Target receives a massive shock the next time they touch metal.
6583: Target reeks of gasoline for the next {{!!duration}}.
6584: Target reeks of manure for the next {{!!duration}}.
6585: Target reflection appears in every mirror within {{!!d4}} miles for the next {{!!duration}}.
6606: Target transforms into an infant but quickly grows to their correct age over the course of {{!!duration}}.
6611: Target roars like a lion.
6614: Target salivates heavily for the next {{!!duration}}.
6616: Target secretes gallons of foul brine over the next {{!!s_duration}}.
6617: Target secretes a glue-like substance from their eyes, nose, and ears over the next {{!!s_duration}}.
6618: Target sees anything more than 20 yards away as dull gray for the next {{!!duration}}.
6622: Target shimmers like a desert mirage for the next {{!!duration}}.
6623: Target shrinks by 25% for the next {{!!duration}}.
6634: Target smells strongly of cabbage for the next {{!!duration}}.
6636: Target smells strongly of sour milk for the next {{!!duration}}.
6637: Target smells strongly of vanilla for the next {{!!duration}}.
6638: Target sneezes and {{!!d35}} angry wasps spew from their nose.
6639: Target sneezes and blows {{!!d4}} pounds of iron filings from their nose.
6640: Target sneezes and blows all of their teeth from their mouth. They fly back and reattach after {{!!s_duration}}.
6641: Target snorts like a pig before and after the next time they say their name.
6642: Target sounds as though they're shouting through a distant megaphone for the next {{!!duration}}.
6644: Target spends {{!!duration}} obsessing over the impact of their actions.
6645: Target spends {{!!duration}} trying to fell a tree with their bare hands.
6647: Target spends {{!!duration}} praising the caster for their magic skills.
6648: Target spends {{!!s_duration}} trying to convince themself they're dead.
6651: Target is suddenly enclosed in a silky cocoon.
6652: Target spins like a top for {{!!s_duration}}.
6653: Target spits out small lumps of coal every few seconds for the next {{!!duration}}.
6654: Target sprays a gallon of milk from their nose.
6655: Target sprays a huge gout of jet-black ink from their nose.
6656: Target sprouts {{!!d10}} additional noses all over their body which persist for {{!!duration}}.
6657: Target sprouts {{!!d10}} fingers from their cheeks, which persist for {{!!duration}}.
6658: Target sprouts {{!!d10}} pairs of delicate antennae, which persist for {{!!duration}}.
6659: Target sprouts {{!!d10}}0 additional ears on their body, which persist for {{!!duration}}.
6661: Target sprouts {{!!d35}} tufts of coarse, ugly hair on their body, which fall out after {{!!duration}}.
6662: Target sprouts a bunch of flexible metal tines on their face, which fall out and vanish after {{!!duration}}.
6663: Target sprouts a clumsy elephant's trunk at the back of their head, which vanishes after {{!!duration}}.
6664: Target sprouts a collar of holly from the skin of their neck, which vanishes after {{!!duration}}.
6665: Target sprouts a horse's tail from the center of their chest, which vanishes after {{!!duration}}.
6666: Target sprouts a long, prehensile tail from their chest, which vanishes after {{!!duration}}.
6667: Target sprouts a non-functional face between their shoulder blades, which vanishes after {{!!duration}}.
6668: Target sprouts a non-functioning hand from the top of their head, which vanishes after {{!!duration}}.
6669: Target sprouts a pair of compound eyes from their cheekbones, which persist for {{!!duration}}.
6670: Target sprouts a pair of tentacles from their forehead, which persist for {{!!duration}}.
6671: Target sprouts a pair of retractable fangs in each palm, which vanish after {{!!duration}}.
6672: Target sprouts a pig's tail from between their eyes, which vanishes after {{!!duration}}.
6673: Target sprouts a small foot from the top of their head, which vanishes after {{!!duration}}.
6674: Target sprouts a torch sconce between their shoulder blades, which vanishes after {{!!duration}}.
6675: Target sprouts a vulture's wing between their shoulder blades, which vanishes after {{!!duration}}.
6676: Target sprouts an additional foot from each knee, which vanish after {{!!duration}}.
6677: Target sprouts an additional foot from each shoulder, which vanish after {{!!duration}}.
6678: Target sprouts an additional forearm and hand from one elbow, which vanish after {{!!duration}}.
6679: Target sprouts an additional hand from each shoulder, which vanish after {{!!duration}}.
6680: Target sprouts an additional hand from one of their arms, which vanishes after {{!!duration}}.
6681: Target sprouts an additional hand from the palm of one hand, which vanishes after {{!!duration}}.
6682: Target sprouts an additional head beside the existing one, which vanishes after {{!!duration}}.
6683: Target sprouts an additional limb, which vanishes after {{!!duration}}.
6684: Target sprouts an additional mouth next to their original one, whiches vanish after {{!!duration}}.
6685: Target sprouts an additional pair of eyes on their forehead, which vanish after {{!!duration}}.
6686: Target sprouts an additional pair of nostrils on their forehead, which vanish after {{!!duration}}.
6687: Target sprouts an additional pair of thumbs on their forehead, which vanish after {{!!duration}}.
6688: Target sprouts an additional thumb from the back of each hand, which vanish after {{!!duration}}.
6689: Target sprouts an iguana's tail from their chin, which vanishes after {{!!duration}}.
6690: Target sprouts an [[awaken]]ed mushroom atop their head, which vanishes after {{!!duration}}.
6691: Target sprouts an ox horn from their chin, which vanishes after {{!!duration}}.
6692: Target sprouts an ox horn from one side of their head, which vanish after {{!!duration}}.
6693: Target sprouts countless leaves, each bearing a mysterious rune, over the next {{!!duration}}.
6694: Target sprouts deer antlers from their shoulder blades, which vanish after {{!!duration}}.
6695: Target sprouts enormous fangs from their lower jaw, which vanish after {{!!duration}}.
6696: Target sprouts harmless but acrid blue mold all over their body over the next {{!!duration}}, after which it immediately rots away. 
6697: Target sprouts retractable iron claws from their fingers, which vanish after {{!!duration}}.
6698: Target sprouts small, flashing lights along their spine, which vanish after {{!!duration}}.
6699: Target sprouts wool like a sheep for the next {{!!duration}}.
6702: Target stretches into an upright "X" for {{!!s_duration}}.
6703: Target struggles with some trite philosophical conundrum for the next {{!!duration}}.
6704: Target suddenly has 2d10 carpenter's nails in their mouth. They vanish after {{!!duration}}.
6705: Target suddenly has a small horseshoe in their mouth. It vanishes after {{!!duration}}.
6720: Target suffers a fit of crippling paranoia for {{!!s_duration}}.
6721: Target suffers a seizure lasting {{!!s_duration}}.
6725: Target suffers from a disfiguring pox, but their teeth are radiant. The target is restored to normal after {{!!duration}}.
6731: Target is affected by [[feather fall]] for the next {{!!duration}}.
6741: Target suffers severe frostbite the next time they touch metal in the next {{!!duration}}.
6742: Target suffers a splitting headache for the next {{!!duration}}.
6745: Target swears undying loyalty to the next person to say their name. The delusion persists for the next {{!!duration}}.
6746: Target sweats viscous and fragrant oil for the next {{!!duration}}.
6747: Target teleports {{!!2d4}} yards north every {{!!s_duration}} for the next {{!!duration}}.
6757: Target teleports to a barren, arctic wasteland for {{!!duration}}.
6759: Target teleports to a tiny and distant island for {{!!duration}}.
6760: Target teleports to an impenetrable forest for {{!!duration}}.
6762: Target teleports to the caster's location in exactly {{!!duration}}.
6803: Target thinks that the nearest statue was once their close friend. The delusion persists for the next {{!!duration}}.
6804: Target throws all of their belongings into the next fire they see. Their delusion persists for the next {{!!duration}}.
6807: Target trips and falls every few seconds over the next {{!!duration}}.
6810: Target trusts everyone unquestioningly, no matter how unworthy, for the next {{!!duration}}.
6811: Target trusts no one who's visibly carrying a weapon for the next {{!!duration}}.
6812: Target trusts the caster absolutely and unquestioningly for the next {{!!duration}}.
6814: Target turns in a circle every time they passes through a doorway for the next {{!!duration}}.
6815: Target turns into a pumpkin for the next {{!!duration}}.
6816: Target turns into a tree for the next {{!!duration}}.
6819: Target vanishes until 3 different people say their name.
6829: Target vows to return to this exact spot once per week.
6834: Target wails inconsolably for {{!!s_duration}}.
6849: Target wakes tomorrow within a few yards of the caster.
6870: Target wobbles and clangs like a buoy for the next {{!!duration}}.
6875: Target's age fluctuates {{!!d50}} years every {{!!s_duration}} for the next {{!!duration}}.
6880: Target's allies all sound just like them for the next {{!!duration}}.
6881: Target's allies are healed of all injuries, but physically exhausted.
6883: Target's allies are condescending and patronizing to them for the next {{!!duration}}.
6886: Target's allies are teleported {{!!2d4}} feet in random directions.
6891: Target's allies can come within 10 yards of them for the next {{!!duration}}.
6895: Target's allies can't distinguish the target from the caster for the next {{!!duration}}.
6897: Target's allies can't look directly at them for the next {{!!duration}}.
6908: Target's allies look just like them for the next {{!!duration}}.
6924: Target's allies think that the target is ablaze for the next {{!!duration}}.
6932: Target's allies think that the target has ingested a powerful toxin for the next {{!!duration}}.
6934: Target's allies think that the target is under the caster's control for the next {{!!duration}}.
6935: Target's allies think that the target's name is "Fungus" for the next {{!!duration}}.
6936: Target's allies think that the target's touch is poisonous to them for the next {{!!duration}}.
6940: Target's ankle is tightly chained to their neck for the next {{!!duration}}.
6944: Target's arms are as limp as rope for the next {{!!duration}}.
6945: Target's arms are encased in straight, tight-fitting steel tubes for the next {{!!duration}}.
6946: Target's arms are as limber as snakes for the next {{!!duration}}.
6947: Target's arms are replaced by inert duplicates of their head for the next {{!!duration}}.
6948: Target's arms can't be bound by cloth, rope, or vines for the next {{!!duration}}.
6952: Target's arms flap like a hummingbird's wings for the next {{!!duration}}.
6954: Target's arms reflect light like a mirror for the next {{!!duration}}.
6955: Target's arms shrink to the size of an infant's arms for the next {{!!duration}}.
6956: Target's arms spin like propellers for the next {{!!duration}}.
6957: Target's arms vanish, and they sprout a trunk like an elephant. They revert to normal after {{!!duration}}.
6958: Target's arms wheeze like hydraulics when they move them for the next {{!!duration}}.
6959: Target's arms wriggle like angry snakes for the next {{!!duration}}.
6970: Target's blood can eat through steel and iron like acid for the next {{!!duration}}.
6976: Target's blood smells powerfully of sulfur for the next {{!!duration}}.
6977: Target's body appears to be full of holes like Swiss cheese for the next {{!!duration}}.
6978: Target's body appears to be made entirely of cork for the next {{!!duration}}.
6979: Target's body appears to be made of porous wax for the next {{!!duration}}.
6982: Target's body inflates to twice its normal volume for the next {{!!duration}}.
6983: Target's body is covered with sores and blisters for the next {{!!duration}}.
6987: Target's body rings like an enormous church bell four times.
6988: Target's body slowly absorbs any clothing they wear over the course of {{!!duration}}, then spits it back out.
6989: Target's body, clothing, and gear are uniformly bright orange for the next {{!!duration}}.
6992: Target's bones are intensely magnetic for the next {{!!duration}}.
6995: Target's bones are visible through their skin for the next {{!!duration}}.
6997: Target's bones stay visible if the target turns invisible for the next {{!!l_duration}}.
7005: Target's boots come alive for {{!!duration}}.
7007: Target's boots fuse to the ground where they're now standing for the next {{!!duration}}.
7008: Target's boots turn to glass. They revert after {{!!duration}}, but do not reassemble if shattered.
7016: Target's clothes and gear are affected by reverse gravity for the next {{!!duration}}.
7020: Target's clothes appear to be made of ice, but are still flexible.
7025: Target's clothes are suddenly chilled to sub-freezing temperatures.
7028: Target's clothes are extraordinarily elastic for the next {{!!duration}}.
7032: Target's clothes are soaked with beer.
7033: Target's clothes are soaked with butterscotch pudding.
7034: Target's clothes are soaked with deer musk.
7035: Target's clothes are soaked with icy water once every 12 seconds for the next {{!!d4}} minutes.
7036: Target's clothes are soaked with strong perfume.
7037: Target's clothes are stuffed full of snow.
7038: Target's clothes attract wasps, hornets, and bees for the next {{!!duration}}.
7039: Target's clothes billow with foul smoke for the next {{!!duration}}.
7043: Target's clothes can't be moved more than 10 yards from this spot for the next {{!!duration}}.
7048: Target's clothes double in size every 10 seconds for the next {{!!2d4}} seconds, then revert to normal.
7049: Target's clothes double in weight, then revert after {{!!duration}}.
7050: Target's clothes exactly match the caster's clothes, then revert after {{!!duration}}.
7051: Target's clothes exude fragrant smoke for the next {{!!duration}}.
7052: Target's clothes glow in the dark for the next {{!!duration}}.
7054: Target's clothes heat to 200° F, then immediately start cooling.
7062: An article of the target's clothing or armor teleports {{!!2d4}} feet in a random direction.
7063: Some of the target's clothes totally unravel over the next {{!!s_duration}}.
7065: Target's clothes writhe like a living creature for {{!!s_duration}}.
7080: Target's ears are prehensile for the next {{!!duration}}.
7081: Target's ears are the size of dinner plates for the next {{!!duration}}.
7083: Target's ears melt like wax, then revert to normal after {{!!s_duration}}.
7085: Target's ears migrate to their shoulders for the next {{!!duration}}.
7086: Target's ears shrivel and fall off over the course of {{!!s_duration}}, and then are restored 10 seconds later.
7087: Target's ears turn slowly counter-clockwise for the next {{!!duration}}.
7088: Target's ears, nose, and lips are invisible for the next {{!!s_duration}}.
7089: Target's ears, nose, and lips double in size for the next {{!!duration}}.
7091: Target's ears, nose, and lips turn bright blue for the next {{!!duration}}.
7094: Target's expression is locked into a manic smile for the next {{!!duration}}.
7095: Target's eyes appear to be bundles of writhing worms for the next {{!!duration}}.
7096: Target's eyes appear to be tiny fireballs for the next {{!!duration}}.
7098: Target's eyes bulge from the top of their head like a frog's eyes for the next {{!!duration}}.
7099: Target's eyes bulge to 3x size for the next {{!!duration}}.
7100: Target's eyes burst, blinding him, but they grow back over the course of {{!!duration}}.
7101: Target's eyes can move independently, like a chameleon's, for the next {{!!duration}}.
7102: Target's eyes each have {{!!d4}} additional irises and pupils for the next {{!!duration}}.
7104: Target's eyes merge into a single eye somewhere on their face for the next {{!!duration}}.
7105: Target's eyes migrate to just above their ears for the next {{!!duration}}.
7106: Target's eyes see normally but appear lifeless like a doll's eyes for the next {{!!duration}}.
7107: Target's eyes steam and hiss like quenching metal for the next {{!!duration}}.
7108: Target's face appears to have been roughly chiseled out of coal for the next {{!!duration}}.
7109: Target's face appears to have been welded to their skull for the next {{!!duration}}.
7110: Target's face begins to look more and more bat-like over the course of {{!!duration}}, then is reverted to normal.
7112: Target's face glows pale green for the next {{!!s_duration}}. This repeats every time they tell a lie in the next {{!!duration}}.
7113: Target's face is sunburned in a checkerboard pattern.
7114: Target's face is completely flat for the next {{!!duration}}.
7115: Target's face is scarred as by acid or flame for the next {{!!duration}}.
7117: Target's face is tattooed with cryptic runes and sigils for the next {{!!duration}}.
7120: Target's face looks like badly melted wax for the next {{!!duration}}.
7121: Target's face migrates to the top of their head for the next {{!!duration}}.
7125: Target's feet appear to be made of clay for the next {{!!duration}}.
7126: Target's feet are fused to the ground beneath them for the next {{!!duration}}.
7127: Target's feet are clear like glass for the next {{!!duration}}.
7128: Target's feet are now prehensile for the next {{!!duration}}.
7129: Target's feet can rotate 360° at the ankle without harm for the next {{!!duration}}.
7130: Target's feet can't come within one yard of each other for the next {{!!duration}}.
7132: Target's feet shriek incessantly while they wears shoes or boots for the next {{!!duration}}.
7133: Target's fingernails are hard as steel and susceptible to rust for the next {{!!duration}}.
7134: Target's fingernails begin to grow {{!!d7}} inches per minute for {{!!2d4}} minutes.
7135: Target's fingernails glow like burning coals for the next {{!!duration}}.
7136: Target's fingernails pulse with a red glow for the next {{!!duration}}.
7138: Target's fingers and thumbs are intertwined like tangled rope for the next {{!!duration}}.
7139: Target's fingers and thumbs connect directly to their wrists for the next {{!!duration}}.
7140: Target's fingers and thumbs shuffle positions for the next {{!!duration}}.
7141: Target's fingers merge into a single digit like a mitten for the next {{!!duration}}.
7142: Target's fists are attracted to each other like strong magnets for the next {{!!duration}}.
7143: Target's fists are each as large as their head for the next {{!!duration}}.
7144: Target's fists can't come within five feet of the ground for the next {{!!duration}}.
7145: Target's fists retract into their forearms when not in use for the next {{!!duration}}.
7146: Target's flesh is utterly transparent to artificial light for the next {{!!duration}}.
7147: Target's footfalls strike sparks on the ground for the next {{!!duration}}.
7148: Target's footprints are perfectly rectangular for the next {{!!duration}}.
7149: Target's footprints completely vanish after {{!!2d4}} seconds for the next {{!!duration}}.
7150: Target's footprints look like arrows pointing which way they went for the next {{!!duration}}.
7152: Target's forearms are invisible for the next {{!!duration}}.
7154: Target's hair falls out and is replaced by lush feathers. It reverts after {{!!duration}}.
7155: Target's hair falls out and is replaced by thick grass. It reverts after {{!!duration}}.
7156: Target's hair falls out and tiny spikes sprout all over their head. It reverts after {{!!duration}}.
7157: Target's hair floats as though underwater for the next {{!!duration}}.
7158: Target's hair grows {{!!2d4}} inches over the next few seconds, and again each time they're struck by magic for the next {{!!duration}}.
7160: Target's hair is styled into a tall bouffant.
7161: Target's hair moves from their head to somewhere else on their body for the next {{!!duration}}.
7162: Target's hair noticeably changes color every 10 seconds for the next {{!!duration}}.
7163: Target's hands and feet are abnormally spongy for the next {{!!duration}}.
7164: Target's hands and feet are scarred with arcane symbols for the next {{!!duration}}.
7165: Target's hands and feet are tightly wrapped in adhesive cloth. The cloth vanishes after {{!!duration}}.
7167: Target's hands and feet give off unsettling vapors for the next {{!!duration}}.
7168: Target's hands and feet reform into perfect cubes for the next {{!!duration}}.
7169: Target's hands and feet shuffle their locations, then revert after {{!!duration}}.
7170: Target's hands and feet turn to pig's hooves for the next {{!!duration}}.
7171: Target's hands applaud despite their wishes for the next {{!!s_duration}}.
7172: Target's hands are bound in [[adamantine]] shackles, which vanish after {{!!duration}}.
7173: Target's hands are encased in thick blobs of candle wax.
7174: Target's hands are invisible while they hold anything for the next {{!!duration}}.
7175: Target's hands are suddenly slicked with butter.
7177: Target's hands are shaped like those of a bat, minus the wings, for the next {{!!duration}}.
7178: Target's hands are utterly paralyzed until they're struck by magic, or until after {{!!duration}}.
7179: Target's hands attempt to strangle them for {{!!duration}}.
7187: Target's hands change color every 10 seconds for {{!!duration}}, then revert to normal.
7190: Target's hands flap like birds' wings for {{!!s_duration}}.
7191: Target's hands freeze to the next object they touch. The magic persists for {{!!duration}}.
7192: Target's hands fuse to the next metal object they handle. They are unstuck after {{!!duration}}.
7193: Target's hands fuse together behind their back for the next {{!!duration}}.
7194: Target's hands itch slightly for the next {{!!duration}}.
7195: Target's hands look black and necrotic after handling [[magic item]]s for the next {{!!duration}}. Their hands then revert.
7196: Target's hands melt like wax, then are restored after {{!!duration}}.
7197: Target's hands rotate 180° at the wrists and stay that way for {{!!duration}}.
7198: Target's hands shrink by 50% for the next {{!!duration}}.
7199: Target's hands steam vigorously for {{!!s_duration}} now and again whenever magic is cast within 10 yards for the next {{!!duration}}.
7200: Target's hands try to grab their ankles while they're walking for the next {{!!duration}}.
7201: Target's hands turn to metal but otherwise function normally for the next {{!!duration}}.
7203: Target's hat animates and attempts to eat their head for the next {{!!duration}}.
7204: Target's hat bleeds profusely for the next {{!!duration}}.
7205: Target's hat is replaced by a spittoon or chamber pot.
7206: Target's hat is replaced by half of a hollowed-out coconut.
7207: Target's head always appear to face true north for the next {{!!duration}}.
7208: Target's head appears as a photo-negative for the next {{!!duration}}.
7210: Target's head appears to be a naked brain for the next {{!!duration}}.
7211: Target's head appears to be made of delicate porcelain for the next {{!!duration}}.
7212: Target's head appears to be made of fire for the next {{!!duration}}.
7213: Target's head appears to be made of ice for the next {{!!duration}}.
7214: Target's head appears to be made of pure gold for the next {{!!duration}}.
7215: Target's head appears to be made of sand for the next {{!!duration}}.
7216: Target's head appears to be made of the finest crystal for the next {{!!duration}}.
7217: Target's head appears to be made of wood for the next {{!!duration}}.
7218: Target's head appears to be severely cracked like an egg for the next {{!!duration}}.
7219: Target's head blazes with illusory fire for the next {{!!duration}}.
7223: Target's head deflates like a balloon, then reinflates over the course of {{!!s_duration}}.
7224: Target's head explodes but regrows over the next {{!!d7}}0 seconds.
7225: Target's head explodes. They die.
7226: Target's head glows like a jack-o-lantern for the next {{!!duration}}.
7231: Target's head doubles in size for the next {{!!duration}}.
7235: Target's head is covered in coarse and ugly scales for the next {{!!duration}}.
7236: Target's head is covered with numerous disc-shaped scars for the next {{!!duration}}.
7237: Target's head is encased in a durable, transparent globe for the next {{!!duration}}.
7238: Target's head is enclosed in an indestructible transparent helmet for the next {{!!duration}}.
7239: Target's head is enwrapped in delicate gold filigree for the next {{!!duration}}.
7240: Target's head is flattened on top like a pounded wooden stake for the next {{!!duration}}.
7246: Target's head is invisible from the chin to the ears for the next {{!!duration}}.
7248: Target's head is jiggly like a lump of gelatin for the next {{!!duration}}.
7251: Target's head is shaped like a light bulb for the next {{!!duration}}.
7253: Target's head is stuck in a huge conch shell.
7256: Target's head seems on the verge of bursting for the next {{!!s_duration}}.
7257: Target's head shrinks to the size of their closed fist for the next {{!!duration}}.
7258: Target's head spins rapidly at the neck for {{!!s_duration}}.
7259: Target's head rapidly molts like a snakeskin.
7260: Target's head strongly resembles a foot for the next {{!!duration}}.
7261: Target's head throbs visibly for the next {{!!duration}}.
7262: Target's head vanishes and their face appears on their chest for the next {{!!duration}}.
7270: Target's hindquarters resemble those of a donkey for the next {{!!duration}}.
7273: Target's image appears on every flag and banner within 1 mile.
7274: Target's heart turns to gold for the next {{!!l_duration}}. This kills them in seconds.
7280: Target's jawbone becomes that of a donkey for the next {{!!duration}}.
7281: Target's knees and elbows become ball-joints like their shoulders for the next {{!!duration}}.
7282: Target's knees and elbows can't straighten to more than 120° for the next {{!!duration}}.
7283: Target's knees and elbows creak like rusty metal for the next {{!!duration}}.
7284: Target's knees and elbows vanish for the next {{!!duration}}.
7285: Target's large intestine explodes.
7286: Target's left arm becomes incredibly physically strong for {{!!duration}}.
7288: Target's left arm turns invisible for the next {{!!duration}}.
7289: Target's left arm moves to their right shoulder for the next {{!!duration}}.
7290: Target's left foot appears to be that of a large duck for the next {{!!duration}}.
7294: Target's left foot sinks six inches into the ground at each step for the next {{!!duration}}.
7295: Target's left foot sprouts a pair of thumbs, which last for the next {{!!duration}}.
7296: Target's left foot takes root in the ground for the next {{!!duration}}.
7297: Target's legs are covered in bark for the next {{!!duration}}.
7299: Target's legs are invisible in direct sunlight for the next {{!!duration}}.
7300: Target's legs are shaped like springs and twang when they walks for the next {{!!duration}}.
7302: Target's legs exactly resemble their arms for the next {{!!duration}}.
7303: Target's legs exchange positions for the next {{!!duration}}.
7304: Target's legs fuse together, and their arms fuse to their sides, for the next {{!!duration}}.
7305: Target's legs shrink by 5% each time they take a step for the next {{!!duration}}. After that, they are restored to normal.
7307: Target's limbs change proportion to match those of an infant. They revert to normal after {{!!duration}}.
7308: Target's limbs shrink to the size of an infant's limbs for the next {{!!duration}}.
7309: Target's lips are sewn shut with fine gold wire. The wire vanishes after {{!!duration}}.
7310: Target's lips move constantly for the next {{!!duration}}.
7311: Target's lips vanish for the next {{!!duration}}.
7317: Target's memories of the last {{!!d10}} hours are full of butterflies.
7318: Target's memories of the last {{!!d10}} hours are vivid but incorrect.
7335: Target's mouth and each nostril is plugged by a cork.
7336: Target's mouth and one of their eyes exchange places for the next {{!!duration}}.
7337: Target's mouth appears to be full of angry hornets.
7340: Target's mouth glows as though they're eating fireflies for the next {{!!duration}}.
7341: Target's mouth glows like a forge for the next {{!!duration}}.
7342: Target's mouth is full of moths.
7343: Target's mouth is now located on the back of their head for the next {{!!duration}}.
7344: Target's mouth is packed completely full of leaves.
7345: Target's mouth is replaced by a duck's bill for the next {{!!duration}}.
7346: Target's mouth is replaced by a hideous scolex (sucker with hooks) for the next {{!!duration}}.
7347: Target's mouth is replaced by a toucan's beak for the next {{!!duration}}.
7348: Target's mouth opens to a span of {{!!d4}}0 inches, then snaps shut. This causes them no harm.
7349: Target's mouth vanishes for the next {{!!duration}}.
7350: Target's neck and head shift {{!!d7}} inches to the left. They revert after {{!!duration}}.
7351: Target's neck attempts to devour their head for the next {{!!duration}}.
7352: Target's neck can extend an additional {{!!d4}} feet at will for the next {{!!duration}}.
7353: Target's neck retracts into their torso for the next {{!!duration}}.
7355: Target's neck doubles in length for the next {{!!duration}}.
7356: Target's neck flares like a lizard's frill when they're angry for the next {{!!duration}}.
7357: Target's neck has a frill like a triceratops for the next {{!!duration}}.
7358: Target's neck is as thin as a spear-shaft for the next {{!!duration}}.
7359: Target's neck is encircled by a tight steel collar for the next {{!!duration}}.
7361: Target's neck is scarred and twisted as if they survived a hanging for the next {{!!duration}}.
7362: Target's next attack affects themself as well.
7375: Target's nose looks like a small, clenched fist for the next {{!!duration}}.
7376: Target's nose turns into a wolf's snout for the next {{!!duration}}.
7377: Target's nose turns to flint for the next {{!!duration}}.
7378: Target's nostrils are each as large as their mouth for the next {{!!duration}}.
7379: Target's nostrils glow for the next {{!!duration}}.
7380: Target's nostrils migrate to the top of their head for the next {{!!duration}}.
7381: A [[zombie]] appears near the target that looks just like a rotted version of the target. It vanishes after {{!!duration}}.
7383: Target's pockets and mouth are full of sand.
7384: Target's possessions are hidden somewhere nearby.
7389: Target's presence causes birds to fall silent for the next {{!!duration}}.
7391: Target's presence causes insects to exhibit strange behaviors for the next {{!!duration}}.
7392: Target's presence causes magical metal to appear badly tarnished for the next {{!!duration}}.
7393: Target's presence causes metal to yield disturbing reflections for the next {{!!duration}}.
7395: Target's presence causes nearby [[conjuration]] magic to fail for the next {{!!duration}}.
7396: Target's presence causes [[undead]] to appear to smolder gently for the next {{!!duration}}.
7397: Target's presence makes summoned creatures vanish for the next {{!!duration}}.
7399: Target's presence makes fires burn in a festive blue-green hue for the next {{!!duration}}.
7400: Target's presence makes foliage appear sickly and blighted for the next {{!!duration}}.
7408: Target's presence makes smoke assume disturbing, ghostly shapes for the next {{!!duration}}.
7409: Target's presence renders clockwork devices temporarily inert for the next {{!!duration}}.
7412: Target's principal weapon (or whatever they are holding) sprouts {{!!d20}} roses.
7414: Target's shadow appears to flicker like a shadowy flame for the next {{!!duration}}.
7416: Target's shadow races around them in a tight circle for the next {{!!duration}}.
7417: Target's shadow rises up and tries to strangle him, as a [[shadow]] of [[Mabar]], for the next {{!!duration}}.
7418: Target's skin acquires {{!!d10}}0 blasphemous tattoos. They vanish one at a time over the course of {{!!duration}}.
7422: Target's skin appears to be the texture of pumice for the next {{!!duration}}.
7423: Target's skin appears to be the texture of sandstone for the next {{!!duration}}.
7424: Target's skin appears to have been gnawed by countless rodents for the next {{!!duration}}.
7425: Target's skin appears to have been roughly stitched together for the next {{!!duration}}.
7428: Target's skin appears uniformly smooth and waxy for the next {{!!duration}}.
7429: Target's skin appears weathered like an ancient statue for the next {{!!duration}}.
7438: Target's skin cracks painfully like a dried-up riverbed. It heals over the course of {{!!duration}}.
7439: Target's skin develops an intricate patchwork of scars. They vanish after {{!!duration}}.
7440: Target's skin displays a series of concentric rings like a target. The rings vanish after {{!!duration}}.
7441: Target's skin displays cryptic and constantly-changing runes for the next {{!!duration}}.
7442: Target's skin doubles in size. It reverts after {{!!duration}}.
7443: Target's skin erupts into countless weeping boils. They heal after {{!!duration}}.
7444: Target's skin erupts with {{!!d35}} acrid fungal outgrowths that persist for the next {{!!duration}}.
7445: Target's skin freezes to their weapon each time they wield it for the next {{!!duration}}.
7447: Target's skin glistens as though soaked with lamp oil for the next {{!!duration}}.
7448: Target's skin glows cherry red for the next {{!!duration}}.
7449: Target's skin glows pale green for the next {{!!duration}}.
7450: Target's skin has the texture of rough bark for the next {{!!duration}}.
7453: Target's skin looks like an intricate pattern of tiny tiles for the next {{!!duration}}.
7454: Target's skin looks like crumpled paper for the next {{!!duration}}.
7455: Target's skin is as hard as bronze for the next {{!!duration}}.
7457: Target's skin is charred and blackened, but they are unharmed. Their skin reverts after {{!!duration}}.
7458: Target's skin is covered in scales like a fish for the next {{!!duration}}.
7459: Target's skin is flayed from their limbs, but it regrows by dawn.
7460: Target's skin turns the color of the next stone they touch. It reverts after {{!!duration}}.
7461: Target's skin is invisible by firelight for the next {{!!duration}}.
7463: Target's skin is invisible while they're standing in water for the next {{!!duration}}.
7465: Target's skin is magnetic for the next {{!!duration}}.
7466: Target's skin is patterned like a checkerboard for the next {{!!duration}}.
7467: Target's skin is patterned like a cow for the next {{!!duration}}.
7468: Target's skin is patterned like camouflage for the next {{!!duration}}.
7469: Target's skin is clammy and moist for the next {{!!duration}}.
7470: Target's skin is crisscrossed with fine lines for the next {{!!duration}}.
7471: Target's skin is repeatedly tattooed with caster's name for the next {{!!duration}}.
7472: Target's skin is repeatedly tattooed with their own name for the next {{!!duration}}.
7477: Target's skin ripples in the wind like a cloth sheet for the next {{!!duration}}.
7479: Target's skin shimmers like mother-of-pearl for the next {{!!duration}}.
7480: Target's skin sizzles harmlessly on contact with water for the next {{!!duration}}.
7484: Target's skin writhes and pulses for the next {{!!duration}}. Or, just while they're eating.
7486: Target's skull sprouts numerous knobby projections for the next {{!!duration}}.
7487: Target's speech is intelligible to anyone, regardless of language, for the next {{!!duration}}.
7488: Target's speech is reversed while their weapon is drawn for the next {{!!duration}}.
7490: Target's speech sounds like the buzzing of innumerable bees for the next {{!!duration}}.
7491: Target's spine bends 90° halfway along its length for the next {{!!duration}}.
7492: Target's spine can twist 360° without harming them for the next {{!!duration}}.
7493: Target's spine doubles in length for the next {{!!duration}}.
7494: Target's spine is fused into a single bone for the next {{!!duration}}.
7497: Target's spine juts from their flesh along their entire back for the next {{!!duration}}.
7498: Target's spine sprouts needle-sharp projections for the next {{!!duration}}.
7499: Target's spine twists like a corkscrew for the next {{!!duration}}.
7500: Target's sternum sprouts 2d4 inch-long spikes for the next {{!!duration}}.
7504: Target's sweat is brightly phosphorescent for the next {{!!duration}}.
7505: Target's teeth and tongue fall out when they next open their mouth. They grow back over the course of {{!!duration}}.
7506: Target's teeth and tongue turn invisible for the next {{!!duration}}.
7507: Target's teeth are etched with cryptic runes for the next {{!!duration}}.
7508: Target's teeth are perfectly reflective of natural light for the next {{!!duration}}.
7511: Target's teeth glow brightly while their mouth is open for the next {{!!duration}}.
7512: Target's teeth glow like coals in a forge for the next {{!!duration}}.
7513: Target's teeth glow like torches for the next {{!!duration}}.
7514: Target's teeth resonate in their jaw for the next {{!!duration}}.
7515: Target's teeth shoot from their mouth like bullets. They regrow over the course of {{!!duration}}.
7516: Target's teeth teleport into the mouth of someone nearby. They regrow over the course of {{!!duration}}.
7517: Target's teeth turn as black as coal for the next {{!!duration}}.
7519: Target's teeth turn to soap for the next {{!!duration}}.
7520: Target's teeth turn to steel for the next {{!!duration}}.
7522: Target's toes are each as large as their big toe for the next {{!!duration}}.
7524: Target's toes constantly exude a fragrant steam for the next {{!!duration}}.
7525: Target's toes each grow {{!!d10}}, {{!!2d4}}, {{!!d4}}, or {{!!d7}} inches longer. They revert after {{!!duration}}.
7526: Target's torso and arms are encased in tight-fitting steel plate for the next {{!!duration}}, then the armor disappears.
7527: Target's torso and arms are invisible for {{!!l_duration}}.
7532: Target's torso is harmlessly pierced by {{!!d35}} long needles. The needles fall out after {{!!s_duration}}.
7536: Target's torso shines like a beacon for the next {{!!duration}}.
7538: Target's torso shrinks by 50% for the next {{!!duration}}.
7539: Target's torso sprouts a face with malign intelligence and power for the next {{!!duration}}.
7540: Target's torso teleports {{!!d4}} feet to the left. It floats in place, and the target can still move their limbs and head like nothing changed. The effect reverts after {{!!duration}}.
7544: Target's voice causes metal to resonate lightly for the next {{!!duration}}.
7545: Target's voice crackles with static until sunrise tomorrow for the next {{!!duration}}.
7551: Target's voice issues from their navel for the next {{!!duration}}.
7553: Target's voice issues from the nearest wooden object for the next {{!!duration}}.
7554: Target's voice issues from this spot for the next {{!!d7}} days.
7555: Target's voice seems to issue from whomever they're addressing for the next {{!!duration}}.
7556: Target's voice sounds as though they're shouting from a distance for the next {{!!duration}}.
7557: Target's voice sounds like a muted trumpet for the next {{!!duration}}.
7558: Target's voice is one octave higher for the next {{!!duration}}.
7559: Target's voice is one octave lower for the next {{!!duration}}.
7560: Target's voice sounds like the braying of donkeys for the next {{!!duration}}.
7561: Target's voice sounds like the chirping of crickets for the next {{!!duration}}.
7562: Target's voice sounds like the honking of geese for the next {{!!duration}}.
7563: Target's voice sounds oddly artificial and disturbing for the next {{!!duration}}.
7564: Target's waterskin is filled with blood.
7565: Target's waterskin is filled with hot pepper sauce.
7568: Target's waterskin is filled with molten gold.
7570: Target's weapon adheres to the next creature whose blood it draws.
7583: Target's weapon blazes with illusionary flame while it's drawn for the next {{!!duration}}.
7584: Target's weapon burns anyone who wields it, other than the target, for the next {{!!duration}}.
7586: Target's weapon burns target's hand the next time they wield it within the next {{!!duration}}.
7589: Target's weapon hurls 4 [[magic missile]]s at random targets, then it disappears.
7594: Target's weapon sprays a torrent of ink for {{!!s_duration}}.
7604: Target's weapon can't pass through doorways for the next {{!!duration}}.
7608: Target's weapon clangs like a bell when used in melee for the next {{!!duration}}.
7609: Target's weapon coils about their arm for the next {{!!duration}}.
7610: Target's weapon delivers an electrical shock with every strike for the next {{!!duration}}.
7611: Target's weapon develops an intense and obvious dislike of them for the next {{!!duration}}.
7612: Target's weapon dims light in a 10-yard radius while it's drawn for the next {{!!duration}}.
7614: Target's weapon disintegrates.
7619: Target's weapon is struck by lightning.
7620: Target's weapon drips with blood for the next {{!!duration}}.
7621: Target's weapon drips with molasses for the next {{!!duration}}.
7625: Target's weapon giggles menacingly upon contact with blood for the next {{!!duration}}.
7626: Target's weapon glows as bright as the sun, but only to the target for the next {{!!duration}}.
7628: Target's weapon glows blue for the next {{!!duration}}.
7634: Target's weapon glows red hot for the next {{!!duration}}.
7635: Target's weapon grows to 10x its normal size for the next {{!!duration}}.
7637: Target's weapon is enhanced as the [[magic weapon]] spell.
7642: Target's weapon has a constant sheath of frost for the next {{!!duration}}.
7647: Target's weapon hisses during battle like quenched steel for the next {{!!duration}}.
7648: Target's weapon hums audibly for the next {{!!duration}}.
7654: Target's weapon inflates like a balloon, then deflates after {{!!duration}}.
7677: Target's weapon is as pliant as soft clay for the next {{!!duration}}.
7678: Target's weapon is as supple as silk for the next {{!!duration}}.
7679: Target's weapon is bent into a torc around their neck, then reverts after {{!!duration}}.
7680: Target's weapon is bent into a gnarled shape.
7681: Target's weapon is chained by its hilt to a collar about their neck for the next {{!!duration}}.
7683: Target's weapon turns to glass for the next {{!!duration}}.
7684: Target's weapon is duplicated, and clatters to the ground next to them. The original vanishes after {{!!duration}} but the duplicate remains.
7687: Target's weapon is etched with their likeness.
7689: Target's weapon is highly elastic along its long axis for the next {{!!duration}}.
7703: Target's weapon is riddled with holes but functions normally for the next {{!!duration}}.
7704: Target's weapon is sheathed in a scab-like shell for the next {{!!duration}}.
7705: Target's weapon is sheathed in a shell of chocolate.
7706: Target's weapon is sheathed in a soft wool tube.
7707: Target's weapon is stuck high in the branches of a nearby tree.
7711: Target's weapon is translucent like smoked glass for the next {{!!duration}}.
7712: Target's weapon is twisted like a corkscrew for the next {{!!duration}}.
7714: Target's weapon is weightless when not in use for the next {{!!duration}}.
7720: Target's weapon melts like a candle.
7725: Target's weapon puts forth huge plumes of smoke for the next {{!!duration}}.
7729: Target's weapon repels normal flame to a distance of three feet for the next {{!!duration}}.
7732: Target's weapon rings like a bell for the next {{!!s_duration}}.
7734: Target's weapon shatters the next time it strikes metal.
7735: Target's weapon shrieks until the next sunset.
7736: Target's weapon shrinks by 75%. It reverts after {{!!duration}}.
7739: Target's weapon sprouts {{!!d10}}0 teeth along its length. They fall out and vanish after {{!!duration}}.
7740: Target's weapon sprouts leaves. They shrivel and fall off after {{!!duration}}.
7742: Target's weapon teleports exactly 1d10 yards due north.
7750: Target's weapon turns into a shield for the next {{!!duration}}.
7757: Target's weapon vanishes, then reappears in the same spot it vanished {{!!s_duration}} later.
7767: Target's weapon weighs as much as they do for the next {{!!duration}}.
7768: Target's weapon whispers terrible secrets to any who wield it for the next {{!!duration}}.
7771: Target's weapons and gear teleport {{!!2d4}} yards into the air.
7773: Target's weight temporarily doubles with each step upon a bridge. It reverts after {{!!s_duration}}.
7774: Teleportation is impossible within 10 yards of target for the next {{!!duration}}.
7778: The ground beneath target's feet acts as a trampoline for the next {{!!duration}}.
7779: The ground beneath target's feet shines like the sun for the next {{!!duration}}.
7780: The ground beneath target's feet collapses into a cave below. After they climb out, the hole immediately seals behind them.
7787: The ground beneath the target's feet explodes as if they stepped on a [[blast disk]].
7788: The ground beneath the target's feet exudes noxious and fetid vapors for the next {{!!duration}}.
7789: The ground now at target's feet heats to 300 degrees F.
7795: The ground now at target's feet is charred black as by a bonfire.
7796: The ground now at target's feet is dangerously slick with ice.
7799: The ground now at target's feet is fused into glass.
7800: The ground now at target's feet is intensely magnetic for the next {{!!duration}}.
7804: The ground now at target's feet is soaked with blood.
7805: The ground now at target's feet is strewn with shards of metal.
7806: The ground now at target's feet is strongly adhesive.
7807: The ground now at target's feet is the back of a huge turtle. It reverts after {{!!s_duration}}.
7809: The ground now at target's feet is yanked from under them like an invisible tablecloth.
7810: The ground now at target's feet rises {{!!d10}}0 yards into the air, then falls.
7813: The ground now at target's feet sinks {{!!d10}} yards into the ground. When they climb out, the ground rises to its normal level.
7814: The ground now at target's feet starts to digest them. It reverts to normal after {{!!duration}}.
7817: The ground now at target's feet turns to cobblestone.
7818: The ground now at target's feet turns to molten glass that hardens after a few seconds.
7819: The ground now at target's feet turns to quicksand. It reverts after {{!!duration}}.
7820: The ground now at target's feet turns to warm butter. It reverts after {{!!duration}}, which might leave the target stuck ankle-deep in the ground.
7821: The ground below the target's feet turns to grassy soil.
7823: The left half of target's skeleton vanishes. It returns after {{!!duration}}.
7833: The top few inches of target's head vanish, but they are unharmed. Their head reverts to normal after {{!!duration}}.
7834: Thousands of nails are embedded harmlessly in target's flesh. They vanish after {{!!duration}}.
7835: Thousands of snails rain down harmlessly upon the target. They vanish {{!!2d4}} seconds after they land.
7838: To the target, all liquids taste like strong vinegar for the next {{!!duration}}.
7839: To the target, all liquids taste like the sweetest nectar for the next {{!!duration}}.
7840: To the target, everyone appears to be a hideously decayed corpse for the next {{!!duration}}.
7842: To the target, everyone appears to be plated in gold for the next {{!!duration}}.
7854: Vines bind the target tightly to a nearby tree. They wither and crumble after {{!!duration}}.
7855: Vines sprout from any open wounds the target now has. They wither and crumble after {{!!duration}}.
7856: Vines sprout from the ground at target's feet and attack them for {{!!duration}}.
7857: Vines sprout from the target's weapon and bind their limbs for the next {{!!duration}}.
7858: Viscous slime drips from the target's mouth for the next {{!!duration}}.
7860: Water boils on contact with the target's flesh for the next {{!!duration}}.
7867: Water spews from target's ears for the next {{!!s_duration}}.
7871: Whatever is now in target's hand heats to 500°F, then cools naturally.
7872: Whatever is now in target's hand is embossed with their name. It reverts to normal after {{!!duration}}.
7873: Whatever is now in target's hand is replaced by a sunflower. It reverts to normal after {{!!duration}}.
7876: Whatever is now in target's hand turns to gold. It reverts to normal after {{!!duration}}.
7877: Whatever is now in target's hand vanishes for {{!!s_duration}}, then reappears in the exact location it vanished.
7878: Whatever is now in target's hand weighs more than they do. It reverts to normal after {{!!duration}}.
7881: Whatever target is wearing is stuck to them like glue for the next {{!!duration}}.
7906: A nearby tree drops all of its leaves.
7909: The target feels compelled to declare their name and title now and any time they draw a weapon for the next {{!!duration}}.
7915: The target is stunned for {{!!s_duration}}.
7928: A small tree sprouts from the target's chest. It withers and crumbles after {{!!duration}}.
7957: When target next touches rope, it attacks them as if it were a snake. It reverts after {{!!duration}}.
7959: When target next touches rope, it shocks them like electrical wire.
7960: When target next touches rope, it winds around them and combusts.
7966: When target next says their name, their clothes are soaked with brine.
7968: When target next says their name, a chorus of mocking laughter echoes in the sky.
7975: The target sneezes, and bits of hot gravel spray from their nostrils.
7978: While outdoors, target perceives everything to be shrouded in fog for the next {{!!duration}}.
7989: While target stands still, they rotate slowly counter-clockwise
7990: While target stands still, pigeons treat them just like a statue for the next {{!!duration}}.
8001: A huge mound of dirt and rock rise as an angry earth [[elemental]] that persists for {{!!duration}}.
8002: {{!!2d4}} nearby trees uproot and race to the nearest town square. They then topple over.
8003: {{!!2d4}} nearby trees uproot and float into the sky.
8004: {{!!2d4}}0 adorable but incorporeal puppies scamper through the area, then vanish after {{!!duration}}.
8005: {{!!d10}}0 skeletons rise from the ground and begin building a pyramid. They vanish one by one over the course of {{!!duration}}.
8006: {{!!d10}}0 stone spheres, one foot in diameter, appear scattered around the area.
8008: {{!!d50}}0 clay bricks fall from the sky.
8009: {{!!d10}}0 skeletons rise from the ground and march to the sea. They crumble to dust after {{!!duration}}.
8010: {{!!d20}} skeletons rise from the ground and attack anyone nearby. They vanish after {{!!duration}}.
8011: {{!!d4}} creatures nearby are suddenly gold-plated. They revert after {{!!duration}}.
8012: {{!!2d4}} creatures nearby double in size. They revert after {{!!duration}}.
8013: {{!!2d4}} gallons of molten gold pour from the target point. It vanishes after {{!!duration}}.
8014: {{!!d4}} golden apples appear nearby. They vanish after {{!!duration}}.
8015: {{!!d7}} aggressive, human-sized pigeons appear in the area. They vanish one by one over the course of {{!!duration}}.
8016: {{!!d7}} horses nearby are turned into carousel horses. They revert after {{!!duration}}.
8019: {{!!2d4}} people nearby are chained together for the next {{!!duration}}.
8020: {{!!2d4}} people nearby are duplicated exactly. Their duplicates vanish after {{!!duration}}.
8021: {{!!d7}} people nearby are hurled {{!!d10}}0 feet into the air.
8023: {{!!d7}} people nearby feel a strong gravitational pull towards the target point for the next {{!!duration}}.
8024: {{!!d7}} people nearby are tarred and feathered.
8025: {{!!d7}} people nearby are teleported up to {{!!2d4}} yards in random directions.
8028: {{!!d7}} people nearby feel like they're drowning for the next {{!!duration}}.
8029: {{!!d7}} people nearby flee from the area at top speed.
8030: {{!!d7}} people nearby grow feathers like peacocks. They revert to normal after {{!!duration}}.
8031: {{!!d7}} people nearby grow wool like sheep. They revert to normal after {{!!duration}}.
8032: {{!!d7}} people nearby look exactly like the target for the next {{!!duration}}.
8033: {{!!d7}} people nearby look exactly like the caster for the next {{!!duration}}.
8034: {{!!d7}} people nearby look like children for the next {{!!duration}}.
8035: {{!!d7}} creatures nearby are disintegrated.
8036: {{!!d7}} people nearby shrink by 30-70% for the next {{!!duration}}.
8038: {{!!d20}}0 spectators ([[manifestation]]s) appear in the area, cheering and shouting. They vanish after {{!!duration}}.
8039: {{!!d10}}0 wild bulls appear in the area. They vanish after {{!!duration}}.
8040: {{!!d4}}0 duplicates of someone nearby appear in the area. They vanish after {{!!duration}}.
8043: A {{!!d10}}0 yard radius is blanketed by [[cloudkill]].
8044: A {{!!d10}}0 yard radius is blanketed by snow to a depth of {{!!2d4}} feet.
8045: A {{!!d10}}0 yard radius is carpeted with small white pebbles.
8046: A {{!!d10}}0 yard radius is covered by a dense growth of fragrant grass.
8047: A {{!!d10}}0 yard radius is covered by ankle-deep fetid mud. 
8048: A {{!!d10}}0 yard radius is covered by ankle-deep white sand.
8049: A {{!!d10}}0 yard radius is covered by slimy, decaying vegetable matter.
8050: A {{!!d10}}0 yard radius is covered with acrid cinders and ash.
8051: A {{!!d10}}0 yard radius is covered with clumps of plaster.
8053: A {{!!d10}}0 yard radius is encircled by a dense curtain of smoke that lingers for {{!!duration}}.
8055: A {{!!d10}}0 yard radius is encircled by a ring of raised earth.
8056: A {{!!d10}}0 yard radius is encircled by a wall of hay bales.
8058: A {{!!d10}}0 yard radius is rendered totally silent for the next {{!!duration}}.
8059: A {{!!d10}}0 yard radius is shaken by a powerful earthquake for the next {{!!duration}}.
8060: A {{!!d10}}0 yard radius is strewn with blood-soaked rags. They vanish after {{!!duration}}.
8061: A {{!!d10}}0 yard radius is strewn with decaying marine life. It all vanishes after {{!!duration}}.
8062: A {{!!d10}}0 yard radius is strewn with jagged metal and coils of wire. It vanishes after {{!!duration}}.
8063: A {{!!d10}}0 yard radius is strewn with seashells and driftwood.
8065: A {{!!d10}}0 yard radius swirls with finely-milled flour for {{!!s_duration}}. Then, {{!!duration}} later, the flour vanishes.
8070: A 500 pound iron slab appears {{!!d10}} yards above the target point. It vanishes after {{!!s_duration}}.
8075: A column of green light shines from the target point into the sky for the next {{!!duration}}.
8076: A cube of dry ice 10 feet across appears at the target point.
8077: A cube of granite 10 feet across appears at the target point. It vanishes after {{!!duration}}.
8078: A deafening cacophony blares from the target point for the next {{!!duration}}.
8080: A dense tangle of thorny vines fills the area for the next {{!!duration}}.
8081: A featureless black slab appears nearby measuring 1 x 4 x 9 feet. It gradually shrinks over the course of {{!!duration}} until it vanishes completely.
8082: A fissure runs from beneath the target point to the ground beneath the caster.
8084: A flock of {{!!d50}} human-sized geese lands in the area. They make a ruckus, then vanish after {{!!duration}}.
8086: An old shipwrecked galleon covered in ice appears nearby, then vanishes after {{!!s_duration}}.
8088: A giant sequoia quickly grows from beneath the target point. It vanishes after {{!!duration}}.
8089: A heavy rope runs from the target point into the sky. It crumbles to ash after {{!!duration}}.
8090: A herd of animals not native to this area stampedes through it. They vanish after {{!!duration}}.
8091: A [[kruthik]] hive lord races through the area. It vanishes after {{!!duration}}.
8094: A huge earthen fist rises from the ground below the target point.
8096: A huge outcrop of beautiful crystals erupts under the target point. They vanish after {{!!duration}}.
8098: A huge volume of confetti rains down in a 100 yard radius. The confetti vanishes before it hits the ground.
8099: A jug full of highly volatile liquid appears at the target point.
8100: A large pool of fetid slime appears beneath the target point. It evaporates fully over the course of {{!!duration}}.
8102: A large pool of molten iron appears beneath the target point.
8117: A lump of lead appears at the target point.
8119: A mighty hailstorm pummels the area for {{!!duration}}.
8120: A mysterious gold sarcophagus appears at the target point. It vanishes after {{!!s_duration}}.
8122: A {{!!d10}}0 yard radius appears gloomy and blighted for {{!!duration}}.
8123: A {{!!d10}}0 yard radius is illuminated by full daylight for {{!!d4}} days.
8124: A {{!!d10}}0 yard radius rotates 360° over the course of {{!!duration}}.
8127: A perfect 10 foot sphere of ice appears at the target point.
8128: A [[dretch]] appears at the target point. It vanishes after {{!!duration}}.
8129: A [[chain devil]] emerges from the target point. It vanishes after {{!!duration}}.
8131: A [[hezrou]] emerges from the target point. It vanishes after {{!!duration}}.
8133: A sandstorm sweeps through the area for {{!!duration}}.
8134: A sculpted ice portrait appears for everyone within 50 yards.
8136: A [[sphere of annihilation]] appears at the spell's target point, then vanishes after {{!!s_duration}}.
8137: A steel tower 100 yards tall emerges form under the target point. It vanishes after {{!!duration}}.
8139: A stone cube 25 yards across rises from beneath the target point. It vanishes after {{!!duration}}.
8140: A terrible din fills the air like the clanging of pots and pans for the next {{!!duration}}.
8144: A tornado arises at the target point and persists for the next {{!!duration}}.
8145: A torrent of thick, soapy foam sprays from the target point.
8146: A viscous corrosive fluid drips coats all exposed rock nearby.
8148: A volley of {{!!d20}}0 arrows rains down on the area.
8150: A random magical effect occurs when each of the next 4 people speak nearby.
8151: Abnormally large locusts plague the area for the next {{!!duration}}.
8152: Acrid fungus sprouts under the target point and quickly spreads, eventually dying off and vanishing after {{!!duration}}.
8153: Air in this area is 75% thinner than the surrounding atmosphere for the next {{!!duration}}.
8156: All armor within 50 yards becomes clear like glass for the next {{!!duration}}.
8157: All armor within 50 yards is as heavy as lead for the next {{!!duration}}.
8158: All armor within 50 yards is weightless for the next {{!!duration}}.
8159: All armor within 50 yards is incorporeal for the next {{!!duration}}.
8160: All artificial light sources within 50 yards are rendered inert for the next {{!!duration}}.
8164: All birds within 50 yards explode over the course of {{!!s_duration}}.
8165: All birds within 50 yards are completely plucked.
8166: All bladed weapons within 50 yards are intensely magnetic for the next {{!!duration}}.
8168: All blades within 50 yards are engraved with cryptic sigils for the next {{!!duration}}.
8170: All blades within 50 yards become clear like glass for the next {{!!duration}}.
8171: All blades within 50 yards bend 90° halfway along their length. They all revert after {{!!duration}}.
8173: All blades within one mile are blunted until sunset.
8174: All blades within one mile glow cherry red for the next {{!!duration}}.
8175: All bowstrings within 50 yards break.
8179: All chain mail within 50 yards is slicked with ice.
8180: All chain mail within 50 yards is strongly magnetic for the next {{!!duration}}.
8181: All cloth within 50 yards begins to digest itself for the next {{!!duration}}.
8183: All cloth within 50 yards is as shiny and lustrous as gold for the next {{!!duration}}.
8185: All cloth within 50 yards is rendered as stiff as wood for the next {{!!duration}}.
8186: All cloth within 50 yards is scrubbed clean.
8187: All cloth within 50 yards is soaked with gasoline.
8188: All cloth within 50 yards seems unusually heavy for the next {{!!duration}}.
8189: All cloth within 50 yards smolders and smokes for the next {{!!duration}}.
8191: All cloth within 50 yards turns to burlap for the next {{!!duration}}.
8193: All coins within 50 yards appear in a heap at the target point.
8194: All coins within 50 yards are engraved with cryptic runes for the next {{!!duration}}.
8196: All coins within 50 yards become flexible as rubber for the next {{!!duration}}.
8199: All coins within 50 yards heat to 300°F, then rapidly cool.
8201: All coins within 50 yards display the face of the caster for the next {{!!duration}}.
8202: All curses now in effect within 100 yards are negated.
8209: All [[dwarves|dwarf]] within 50 yards have orange skin and green hair for the next {{!!duration}}.
8214: All [[elves|elf]] within 50 yards sprout jagged fangs for the next {{!!duration}}.
8216: All ferrous metal within 50 yards doubles in weight for the next {{!!duration}}.
8217: All ferrous metal within 50 yards is as shiny & lustrous as gold for the next {{!!duration}}.
8219: All ferrous metal within 50 yards is magnetized for the next {{!!duration}}.
8220: All ferrous metal within 50 yards is cleaned of all rust.
8222: All ferrous metal within 50 yards is strangely opalescent for the next {{!!duration}}.
8223: All ferrous metal within 50 yards vanishes until after {{!!duration}}, when it reappears in the same spot it vanished from.
8224: All fires lit in this area are waterproof for the next {{!!duration}}.
8225: All fires lit in this area flare up wildly for the next {{!!s_duration}}.
8226: All fires lit in this area reek of brimstone for the next {{!!duration}}.
8227: All flesh within 50 yards is clear like glass for the next {{!!duration}}.
8230: All food consumed within 50 yards is overpoweringly delicious for the next {{!!duration}}.
8231: All food consumed within 50 yards is unpalatably bitter for the next {{!!duration}}.
8233: All food within 50 yards freezes solid.
8234: All food within 50 yards is crawling with illusory maggots for the next {{!!duration}}.
8237: All food within 50 yards turns to salt.
8240: All forged steel within 50 yards turns to slate for the next {{!!duration}}.
8242: All gems within 50 yards become spherical for the next {{!!duration}}.
8246: All [[gnome]]s within 50 yards grow {{!!d20}} inches. They revert to normal after {{!!duration}}.
8253: All [[goblinoid]]s within 50 yards turn vibrant pink for {{!!duration}}.
8256: All gold within 50 yards begins to rust rapidly. It reverts after {{!!duration}}.
8260: All gold within 50 yards is attracted to magnets like iron for the next {{!!duration}}.
8261: All gold within 50 yards is drawn to the target point for the next {{!!duration}}.
8264: All gold within 50 yards is severely tarnished.
8265: All gold within 50 yards vanishes for the next {{!!duration}}, then reappears at the exact location where it vanished from.
8266: All gold within 50 yards is weightless for {{!!duration}}.
8267: All gold within 50 yards sweats some kind of foul liquid for the next {{!!duration}}.
8268: All gold within 50 yards is cleaned and polished.
8270: All halflings within 50 yards grow {{!!d4}} inches of hair every second for the next {{!!s_duration}}. It reverts to normal {{!!d20}} seconds later.
8271: All hats or helmets within 50 yards are drawn to the target point for the next {{!!duration}}.
8272: All hats or hoods within 50 yards burst into flame for {{!!s_duration}}.
8273: All herbivores within 100 yards are panic-stricken for the next {{!!duration}}.
8275: All horses or other mounts within 100 yards shrink by 1% per second for the next {{!!duration}}, then revert to normal.
8277: All horses or other mounts within 50 yards become clear like glass for the next {{!!duration}}.
8280: All humans within 10 miles are suddenly wearing peculiar hats. The hats vanish after {{!!duration}}.
8282: All inanimate matter nearby wobbles as though made of gelatin for the next {{!!duration}}.
8285: All ink within one mile is invisible for the next {{!!duration}}.
8287: All inorganic matter within 50 yards appears blurry for the next {{!!duration}}.
8289: All inorganic matter within 50 yards turns to ice for the next {{!!duration}}.
8293: All leather within 50 yards begins sweating profusely for the next {{!!duration}}.
8294: All leather within 50 yards is as rigid as steel for the next {{!!duration}}.
8295: All leather within 50 yards shatters like glass. It mends and restores itself after {{!!duration}}.
8296: All leather within 50 yards turns to silk, then reverts to normal after {{!!duration}}.
8298: All living creatures nearby are enraged beyond reason for the next {{!!s_duration}}.
8304: All [[magic item]]s within 50 yards appear to be blazing with fire for the next {{!!duration}}.
8306: All [[magic item]]s within 50 yards disappear for the next {{!!duration}}, then reappear in the exact spot they vanished from.
8308: All [[magic item]]s within 50 yards hum softly for the next {{!!duration}}.
8309: All magic potions within 50 yards are 10X as powerful.
8311: All magic potions within 50 yards are rendered inert.
8312: All magic potions within 50 yards become [[potions of flying|potion of flying]].
8313: All magic potions within 50 yards freeze solid, then slowly begin to thaw.
8315: All magic potions within 50 yards induce wild hallucinations for {{!!duration}}.
8326: All jewelry within 50 yards shines as brightly as the sun for the next {{!!duration}}.
8331: All magic weapons nearby are incorporeal for the next {{!!duration}}.
8333: All magic weapons nearby glow like fireflies for the next {{!!duration}}.
8334: All magic weapons nearby lose their enchantments for the next {{!!duration}}.
8340: All magical light sources within 50 yards are 2X as bright for the next {{!!duration}}.
8341: All magical light sources within 50 yards dim by 50% for the next {{!!duration}}.
8342: All magical light sources within 50 yards are extinguished.
8345: All magical light sources within 50 yards flash like strobes for the next {{!!duration}}.
8346: All magical light sources within 50 yards hum loudly while in use for the next {{!!duration}}.
8348: All magical light sources within 50 yards produce blood-red light for the next {{!!duration}}.
8349: All magical light sources within 50 yards yield [[darkness]] instead for the next {{!!duration}}.
8350: All mechanical locks within 50 yards are fused shut for the next {{!!duration}}.
8351: All mechanical locks within 50 yards are invisible for the next {{!!duration}}.
8353: All mechanical locks within 50 yards spring open.
8356: All metal armor nearby is drenched in vinegar.
8357: All metal armor nearby is chilled to freezing.
8361: All metal gauntlets within 50 yards close into fists for the next {{!!duration}}.
8362: All metal gauntlets within 50 yards heat to 300°F, then begin cooling rapidly.
8365: All metal gauntlets within 50 yards turn to silk, then revert after {{!!duration}}.
8366: All metal weapons wielded nearby heat to 300°F, then begin cooling rapidly.
8367: All metal within 50 yards appears to be made of solid shadow for the next {{!!duration}}.
8369: All metal within 50 yards is entirely non-reflective for the next {{!!duration}}.
8374: All metal within 50 yards is polished to mirror-brightness.
8375: All metal within 50 yards is twice as heavy for the next {{!!duration}}.
8376: All metal within 50 yards liquefies for {{!!s_duration}}, then reforms after {{!!duration}}.
8377: All metal within 50 yards shimmers like mother of pearl for the next {{!!duration}}.
8378: All missile weapons within 50 yards are inoperative for the next {{!!duration}}.
8379: All missile weapons within 50 yards combust when they're fired for the next {{!!duration}}.
8381: All missile weapons within 50 yards vanish when they're fired for the next {{!!duration}}.
8382: All nearby age {{!!d35}} years but return to normal over the course of {{!!duration}}.
8396: All non-magical animals nearby shrink by 40%, then slowly grow back to their normal size over the course of {{!!duration}}.
8397: All non-magical books within 50 yards are duplicated. Their duplicates vanish after {{!!duration}}.
8400: All non-sentient animals nearby are panic-stricken for the next {{!!duration}}.
8402: All open wounds within 50 yards steam violently but harmlessly for the next {{!!duration}}.
8403: All paper now nearby glows in the dark for the next {{!!duration}}.
8405: All plant life within 50 yards is sky-blue for the next {{!!duration}}.
8406: All plant-based fabric within 50 yards becomes dull brown.
8407: All plant-based fabric within 50 yards combusts.
8408: All [[divine magic]] within 50 yards is nullified for the next {{!!duration}}.
8410: All reflective surfaces in the area display imaginary scenes for the next {{!!duration}}.
8411: All reflective surfaces in the area display scenes of carnage for the next {{!!duration}}.
8412: All right arms within 50 yards are incorporeal for the next {{!!duration}}.
8414: All right arms within 50 yards are paralyzed for the next {{!!duration}}!duration}}.
8415: All rope within 50 yards can't be cut or broken for the next {{!!duration}}.
8416: All rope within 50 yards ignites along its entire length.
8417: All rope within 50 yards is as rigid as wood for the next {{!!duration}}.
8420: All rope within 50 yards is invisible for the next {{!!duration}}.
8421: All rope within 50 yards shortens by 80%.
8422: All rope within 50 yards straightens and becomes hard as stone for the next {{!!duration}}.
8423: All rope within 50 yards stretches like elastic for the next {{!!duration}}.
8424: All rope within 50 yards turns to flesh for the next {{!!duration}}.
8426: All saddles within 50 yards disappear. They reappear after {{!!duration}} in the exact spot where they vanished from.
8427: All shields within 50 yards are fragile like glass for the next {{!!duration}}.
8430: All shields within 50 yards are imprinted with their wielder's face for the next {{!!duration}}.
8432: All soil and rock within 50 yards turns invisible for {{!!duration}}.
8435: All spells cast in the last {{!!d35}} seconds are retroactively negated.
8436: All spells cast in the last {{!!d35}} seconds recur in {{!!d35}} seconds.
8437: All spells cast in the next {{!!d35}} seconds are invisible in effect.
8438: All spells cast in the next {{!!d35}} seconds occur {{!!d35}} seconds later.
8439: All spells cast in this area are accompanied by trumpet fanfare for the next {{!!duration}}.
8440: All spells cast in this area are delayed by {{!!d35}} seconds for the next {{!!duration}}.
8441: All summoned creatures within 50 yards are dismissed.
8445: All teeth within 50 yards are as black as coal for {{!!duration}}.
8446: All teeth within 50 yards are rendered invisible for {{!!duration}}.
8447: All tempered metal within 50 yards is reduced in weight by 50% for the next {{!!duration}}.
8448: All tempered metal within 50 yards is soft as rubber for the next {{!!duration}}.
8450: All thumbs within 50 yards vanish for the next {{!!duration}}.
8453: All trees within 50 yards drop their leaves until next spring.
8454: All trees within 50 yards are glazed with ice.
8457: All trees within 50 yards become ambulatory for the next {{!!duration}}.
8459: All trees within 50 yards begin chanting a low drone for the next {{!!duration}}.
8460: All trees within 50 yards [[awaken]] for {{!!duration}} then revert to normal.
8461: All trees within 50 yards turn invisible for the next {{!!duration}}.
8465: All trees within 50 yards explode into sawdust.
8466: All trees within 50 yards double in height, then slowly revert over the course of {{!!duration}}.
8467: All trees within 50 yards drip with blood for the next {{!!duration}}.
8470: All trolls within 50 yards lose their ability to regenerate.
8471: All [[undead]] within 50 yards turn to wood for the next {{!!duration}}.
8472: All [[undead]] within 50 yards vanish until sunset tomorrow.
8474: All [[undead]] within 50 yards are teleported {{!!2d4}} feet in random directions.
8476: All [[undead]] within 50 yards exhale clouds of fog for the next {{!!duration}}.
8477: All [[undead]] within 50 yards combust and burn for the next {{!!duration}}.
8480: All vegetable matter within 50 yards, alive or dead, dissolves.
8484: All vegetation within 50 yards becomes incredibly lush.
8485: All vegetation within 50 yards dies within {{!!d35}} seconds.
8486: All vegetation within 50 yards grows 100X as fast for the next {{!!duration}}.
8487: All vegetation within 50 yards is frozen solid.
8488: All vegetation within 50 yards turns bone-white for the next {{!!duration}}.
8490: All voices within 50 yards seem to issue from the same person for the next {{!!duration}}.
8491: All voices within 50 yards sound identical for the next {{!!duration}}.
8492: All water within 50 yards is chilled to just above freezing.
8493: All water within 50 yards becomes invisible for the next {{!!duration}}.
8494: All water within 50 yards becomes thick like gelatin for the next {{!!duration}}.
8496: All water within 50 yards doubles in volume.
8500: All water within 50 yards smells and tastes strongly of fish for the next {{!!duration}}.
8502: All water within 50 yards turns to glass for the next {{!!duration}}.
8503: All water within 50 yards turns to milk for the next {{!!duration}}.
8507: All weapons within 50 yards appear to be made of bone for the next {{!!duration}}.
8510: All weapons within 50 yards are affected by the [[magic weapon]] spell for the next {{!!duration}}.
8515: All weapons within 50 yards are caked in sticky clay.
8516: All weapons within 50 yards are cleaned, polished, and sterilized.
8518: All weapons within 50 yards are etched with their owners' names.
8521: All weapons within 50 yards are marked with demonic sigils for the next {{!!duration}}.
8522: All weapons within 50 yards are piled at the target point.
8523: All weapons within 50 yards are repelled from the target point for the next {{!!duration}}.
8524: All weapons within 50 yards are sealed in candle wax.
8525: All weapons within 50 yards are stuck in their sheathes for the next {{!!duration}}.
8526: All weapons within 50 yards are terribly unwieldy for the next {{!!duration}}.
8528: All weapons within 50 yards attract flies and gnats for the next {{!!duration}}.
8529: All weapons within 50 yards exude aromatic smoke for the next {{!!duration}}.
8530: All weapons within 50 yards glow red as though they're very hot for the next {{!!duration}}.
8531: All weapons within 50 yards hum in the presence of spilled blood for the next {{!!duration}}.
8532: All weapons within 50 yards are bent like corkscrews, then revert after {{!!duration}}.
8536: All wheeled vehicles within 50 yards burst into flame.
8537: All wheeled vehicles within 50 yards sink 2 feet into the mud.
8539: All wheels within 50 yards become perfectly square for the next {{!!duration}}.
8541: All who saw this casting are healed of any minor injuries.
8542: All who saw this casting are soaked with cold gravy.
8543: All who saw this casting are stricken mute for the next {{!!duration}}.
8544: All who saw this casting are stricken totally deaf for the next {{!!duration}}.
8545: All who saw this casting vanish for {{!!duration}}, then reappear in the same spot they vanished from.
8548: All who saw this casting giggle like lunatics for the next {{!!duration}}.
8552: All who saw this casting suffer a small amount of necrotic damage.
8553: All who saw this casting are compelled to stare at the target point for the next {{!!duration}}.
8558: All within 10 feet are teleported {{!!2d4}} feet in random directions.
8559: All within 10 feet point suffer a small amount of necrotic damage.
8567: All within 50 yards acquire a distinctive non-local accent for the next {{!!duration}}.
8570: All within 50 yards and in armor are paralyzed for {{!!duration}}.
8571: All within 50 yards appear blurry to each other for {{!!duration}}.
8573: All within 50 yards appear to be covered with festering sores for the next {{!!duration}}.
8591: All within 50 yards are covered in chocolate.
8594: All within 50 yards turn a peculiar shade of blue-gray for the next {{!!duration}}.
8599: All within 50 yards are attacked by locusts for the next {{!!duration}}.
8606: All within 50 yards are carrying an identical iron medallion which vanishes after {{!!duration}}.
8608: All within 50 yards are carrying small discs of carved stone which vanish after {{!!duration}}.
8612: All within 50 yards are covered in coal tar.
8613: All within 50 yards are covered in powdered sugar.
8614: All within 50 yards are covered with honey and feathers.
8617: All within 50 yards are doused with molasses.
8619: All within 50 yards are draped in tough, fibrous filaments.
8620: All within 50 yards are draped with pungent floral garlands.
8621: All within 50 yards are drenched with cold, soapy water.
8622: All within 50 yards are drenched with olive oil.
8623: All within 50 yards are dressed and painted like clowns.
8624: All within 50 yards are have jet-black hair for the next {{!!duration}}.
8626: All within 50 yards are dressed in illusory formal wear for the next {{!!duration}}.
8627: All within 50 yards are dressed in illusory full plate armor for the next {{!!duration}}.
8634: All within 50 yards are affected by the [[hold]] spell for the next {{!!duration}}.
8635: All within 50 yards are holding tiny stone carvings of themselves. The carvings vanish after {{!!duration}}.
8643: All within 50 yards are individually shrouded in fog for the next {{!!duration}}.
8644: All within 50 yards are invisible for the next {{!!duration}}.
8652: All within 50 yards are liberally sprayed with octopus ink.
8654: All within 50 yards are now wearing tap-shoes.
8656: All within 50 yards are overpoweringly thirsty for the next {{!!duration}}.
8661: All within 50 yards are profoundly drunk for {{!!duration}}.
8662: All within 50 yards are pushed {{!!d10}} yards from the target point.
8663: All within 50 yards are ravenously hungry for the next {{!!duration}}.
8664: All within 50 yards are healed of their injuries.
8667: All within 50 yards are showered in maggots.
8668: All within 50 yards are smeared with a foul-smelling gelatin.
8669: All within 50 yards are sprayed with skunk musk.
8670: All within 50 yards are standing on three-foot cast iron discs. The discs vanish after {{!!duration}}.
8672: All within 50 yards are stricken mute for {{!!duration}}.
8674: All within 50 yards are suddenly arranged in a big circle.
8675: All within 50 yards are suddenly barefoot.
8677: All within 50 yards are suddenly seated in the lotus position.
8679: All within 50 yards are thoroughly cleaned, as with the spell [[prestidigitation]].
8681: All within 50 yards are unable to breathe for {{!!d35}} seconds.
8682: All within 50 yards are unable to move their feet for {{!!s_duration}}.
8688: All within 50 yards are wearing ostrich feathers in their hair.
8689: All within 50 yards are wearing wooden shoes. The shoes revert to normal after {{!!duration}}.
8690: All within 50 yards become hopelessly lost for {{!!duration}}.
8695: All within 50 yards dance lasciviously for the next {{!!duration}}.
8700: All within 50 yards exchange places with someone else nearby.
8701: All within 50 yards exhale steam as if the air were very cold for the next {{!!duration}}.
8702: All within 50 yards feel a wildly different ambient temperature for the next {{!!duration}}.
8703: All within 50 yards feel insects crawling over their skin for the next {{!!duration}}.
8704: All within 50 yards feel intense hunger at the sight of blood for the next {{!!duration}}.
8705: All within 50 yards feel overpowering fear for the next {{!!duration}}.
8706: All within 50 yards feel unfocused yet overwhelming disgust for the next {{!!duration}}.
8707: All within 50 yards find mystical tattoos on their bodies for the next {{!!duration}}.
8712: All within 50 yards grow {{!!d7}} inches, then slowly revert to their normal height over the course of {{!!duration}}.
8713: All within 50 yards have a copy of a mysterious brass key. It vanishes after {{!!duration}}.
8716: All within 50 yards have clouded vision for {{!!duration}}.
8718: All within 50 yards have pockets full of butter.
8721: All within 50 yards are overwhelmed with exhaustion.
8723: All within 50 yards laugh like lunatics for the next {{!!duration}}.
8724: All within 50 yards levitate {{!!d4}} feet for {{!!s_duration}}.
8727: All within 50 yards suffer a small amount of necrotic damage every second they stay in this area for the next {{!!d10}}0 seconds.
8731: All within 50 yards move as if they're underwater for the next {{!!duration}}.
8734: All within 50 yards must remain within 10 yards of each other for the next {{!!duration}}.
8741: All within 50 yards are soaked with icy brine.
8744: All within 50 yards are thrown into nearby trees.
8745: All within 50 yards are tightly bound in wire, which vanishes after {{!!s_duration}}.
8749: All within 50 yards sink {{!!d35}} inches into the ground for the next {{!!duration}}.
8750: All within 50 yards suffer blinding pain for the next {{!!s_duration}}.
8753: All within 50 yards are afflicted with burning hair for the next {{!!d7}} seconds.
8758: All within 50 yards now have bright blue hair for the next {{!!duration}}.
8760: All within 50 yards quickly devour any food that they're carrying for the next {{!!s_duration}}.
8761: All within 50 yards run at top speed toward the target point for the next {{!!s_duration}}.
8763: All within 50 yards shrink {{!!d7}} inches, then grow back to their normal height over the course of {{!!duration}}.
8764: All within 50 yards smell like carrion for the next {{!!duration}}.
8765: All within 50 yards smell strongly of alcohol for the next {{!!duration}}.
8766: All within 50 yards smell strongly of brimstone until sunrise.
8767: All within 50 yards smell strongly of manure for the next {{!!duration}}.
8768: All within 50 yards suddenly have perfectly groomed hair.
8782: All within 50 yards weep hysterically for the next {{!!duration}}.
8783: All within 50 yards smell strongly of peppermint for the next {{!!duration}}.
8787: All within 50 yards will be fully healed of their injuries after {{!!duration}}.
8792: All worked stone within 50 yards absorbs water like a sponge for the next {{!!duration}}.
8793: All worked stone within 50 yards begins eroding rapidly for the next {{!!duration}}, then is restored.
8794: All worked stone within 50 yards blazes with illusory flame for the next {{!!duration}}.
8795: All worked stone within 50 yards clangs like bronze bells for the next {{!!duration}}.
8796: All worked stone within 50 yards hums audibly for the next {{!!duration}}.
8798: All worked stone within 50 yards is as shiny as a mirror for the next {{!!duration}}.
8799: All worked stone within 50 yards is briefly pliant as soft clay for the next {{!!duration}}.
8800: All worked stone within 50 yards is clear like glass for the next {{!!duration}}.
8802: All worked stone within 50 yards is now {{!!d20}}0° colder, then slowly warms to ambient temperature.
8804: All worked stone within 50 yards oozes blood for the next {{!!duration}}.
8806: All worked stone within 50 yards turns to ice for the next {{!!duration}}.
8807: All written text within 50 yards appears reversed in sunlight for the next {{!!duration}}.
8809: All written text within 50 yards hums audibly while being read for the next {{!!duration}}.
8810: All written text within 50 yards is reversed for the next {{!!duration}}.
8811: All written text within 50 yards shrinks by 50% for the next {{!!duration}}.
8819: An enormous black disc hovers over the area for the next {{!!duration}}.
8823: An enormous fishing net settles over a 50 yard radius. It vanishes after {{!!duration}}.
8824: An enormous head of sculpted stone bursts from the ground. It vanishes, and the hole is mended, after {{!!duration}}.
8825: An enormous oak tree appears at the target point. It vanishes after {{!!duration}}.
8826: An enormous sand castle appears at the target point. It vanishes after {{!!duration}}.
8827: An enormous volume of acrid smoke spews from the target point for {{!!s_duration}}. It lingers for {{!!duration}}, then vanishes.
8836: An intoxicatingly delightful scent issues from the target point for the next {{!!duration}}.
8837: An intricate maze of panels of ice sprouts in a 50 yard radius.
8838: An intricate maze of tall hedges sprouts in a 50 yard radius.
8839: An intricate sculpture of blown glass appears at the target point. It vanishes after {{!!duration}}.
8840: A whistling octopus slithers through the area, then vanishes after {{!!duration}}.
8841: An overpoweringly foul stench issues from the target point for the next {{!!duration}}.
8843: Ants appear to swarm on all blades within 50 yards for the next {{!!duration}}.
8844: Any active charms and enchantments nearby are negated for the next {{!!duration}}.
8845: Any alcoholic beverages within 50 yards are now 10X as potent for the next {{!!duration}}.
8847: Any alcoholic beverages within 50 yards combust violently.
8861: Any fires now burning within 50 yards are extinguished.
8862: Any fires now burning within 50 yards exude psychedelic smoke for the next {{!!duration}}.
8863: Any fires now burning within 50 yards provide no heat for the next {{!!duration}}.
8864: Any fires now burning within 50 yards provide no light for the next {{!!duration}}.
8866: Any fires now burning within 50 yards quadruple in size for the next {{!!duration}}.
8872: Any food now within 50 yards turns to iron. It reverts after {{!!duration}}.
8888: Any non-living wood within 50 yards becomes clear like glass for the next {{!!duration}}.
8889: Any open wounds in the area heal into scars shaped like runes.
8894: Any ranged spells cast nearby are delayed for {{!!s_duration}} for the next {{!!duration}}.
8901: Any standing water within 50 yards boils violently for the next {{!!s_duration}}.
8914: Anyone carrying food nearby is swarmed by countless wasps for the next {{!!duration}}.
8918: Anyone in armor within 10 yards can't breathe for {{!!d4}}0 seconds.
8923: Anyone in armor within 10 yards is pelted by hail for {{!!d50}} seconds.
8924: Anyone in armor within 10 yards is thrown {{!!d20}} yards away from the caster.
8927: Anyone in armor within 10 yards sneezes repeatedly for {{!!duration}}.
8929: Anyone nearby and facing the target point disappears for {{!!s_duration}}.
8930: Anyone nearby and facing the target point is blinded for the next {{!!duration}}.
8932: Anyone nearby and facing the target point is covered by moss.
8933: Anyone nearby and facing the target point is covered in soot
8934: Anyone nearby and facing the target point is dusted with flour
8938: Anyone nearby and facing the target point loses all hair, but it grows back over the course of {{!!duration}}.
8940: Anyone nearby and less than five feet tall grows {{!!d7}} inches, then reverts to their normal height after {{!!duration}}.
8943: Anyone nearby and more than five feet tall shrinks to that height. After {{!!duration}}, they revert to their normal height.
8958: Anyone nearby who tries to turn invisible glows brightly instead for the next {{!!duration}}.
8960: Anyone nearby who turns invisible over the next {{!!duration}} is bright orange for {{!!l_duration}} after they become visible.
8962: Anyone nearby who used magic in the last 30 seconds is soaked in brine.
8993: Anyone wielding a weapon nearby is knocked to the ground.
8994: Anyone on a horse or other mount within 50 yards falls from it clumsily.
9004: Anyone using magic nearby briefly appears to be made of wood for the next {{!!duration}}.
9005: Anyone using magic nearby gives off a pungent and offensive odor for the next {{!!duration}}.
9006: Anyone using magic nearby over the next {{!!duration}} glows a pale green hue for {{!!s_duration}}.
9016: Blinding smoke issues from the ground when magic is cast nearby for the next {{!!duration}}.
9017: Blinding smoke swirls about the area for the next {{!!duration}}.
9018: Blood sprays from the target point like water from a hose for the next {{!!duration}}.
9019: Celestial voices resonate in the air for the next {{!!duration}}.
9020: Combustion can not occur within 10 yards of the target point for the next {{!!duration}}.
9022: Countless droplets of sticky black tar rain down on the area for the next {{!!duration}}.
9023: Countless sharpened stakes jut from the ground in the area, then vanish after {{!!duration}}.
9024: Countless slugs and snails litter the ground, then slither into the earth over the course of {{!!duration}}.
9025: Countless small lumps of cheese rain down on the area for the next {{!!duration}}.
9026: Countless tiny carvings of wooden ducks rain down on the area for the next {{!!duration}}.
9027: Diabolical voices issue from the target point for the next {{!!duration}}.
9028: Translucent jellyfish drift through the air high overhead for the next {{!!duration}}.
9029: Displays of hostile emotion are impossible nearby for the next {{!!duration}}.
9031: [[Divination|divination]] magic is impossible or wildly unreliable within 50 yards for the next {{!!duration}}.
9033: Eerie and ominous susurrations issue from the air for the next {{!!duration}}.
9034: Enormous birds circle silently overhead for the next {{!!duration}}.
9040: Every tree within 50 yards has an eerie face carved in its bark. The face vanishes after {{!!duration}}.
9041: Every tree within 50 yards has cryptic runes carved in its bark. The runes vanish after {{!!duration}}.
9042: Every tree within 50 yards hums sonorously for the next {{!!duration}}.
9044: Everyone within 10 yards is chained together for the next {{!!duration}}.
9045: Everyone within 50 yards disgorges a large, hairy spider.
9050: Everyone within 50 yards has a big snowball in their pocket.
9051: Everyone within 50 yards has a hen's egg in their pocket.
9052: Everyone within 50 yards has a lit candle in their pocket.
9054: Everyone within 50 yards has a live salmon in their pocket.
9055: Everyone within 50 yards has a lump of quartz in their mouth.
9056: Everyone within 50 yards has a red hot coal in their pocket.
9058: Everyone within 50 yards has a small diamond in their pocket. It vanishes after {{!!duration}}.
9059: Everyone within 50 yards has an iron ring around their wrist. It vanishes after {{!!duration}}.
9060: Everyone within 50 yards has delicate glass globe in their pocket. It vanishes after {{!!duration}}.
9061: Everyone within 50 yards has someone's severed hand in their pocket. It vanishes after {{!!duration}}.
9063: Everyone within 50 yards is holding a wooden cup full of wine. It vanishes after {{!!duration}}.
9066: Everyone within 50 yards is standing in a small bucket. The buckets vanish after {{!!duration}}.
9069: Everyone within 50 yards is suddenly holding a bucket of chum. The buckets and their contents vanish after {{!!duration}}.
9070: Everyone within 50 yards is suddenly holding a chicken. The chickens vanish after {{!!duration}}.
9072: Everyone within 50 yards is suddenly holding a small skull. The skulls vanish after {{!!duration}}.
9073: Everyone within 50 yards is suddenly holding an ingot of lead. The ingots vanish after {{!!duration}}.
9075: Everyone within 50 yards is tattooed with a sequential number. The tattoos fade, in order, over the course of {{!!duration}}.
9082: Everything within 50 yards appears to be lit by blacklight for the next {{!!duration}}.
9084: Everything within 50 yards is drained of color for the next {{!!duration}}.
9085: Everything within 50 yards shakes violently for the next {{!!duration}}.
9090: Fast-drying concrete covers the area to a depth of {{!!d20}} inches.
9091: Fire belches forth from the target point for the next {{!!duration}}.
9092: Fires in this area are drawn toward the target point for the next {{!!duration}}.
9097: For {{!!duration}}, any spells cast nearby turn their casters yellow
9100: For {{!!duration}}, fires lit nearby are visible through metal or stone
9103: For {{!!duration}}, the ground within 50 yards flexes like elastic.
9104: For {{!!duration}}, the ground within 50 yards turns to quicksand.
9112: For {{!!duration}}, flashing lights accompany spells cast in this area.
9117: Gravity is skewed by 45° in this area for the next {{!!duration}}.
9118: Gravity within 50 yards has no effect on wood for the next {{!!duration}}.
9119: Half a ton of iron filings sprays from the target point. It vanishes after {{!!duration}}.
9120: Half a ton of pureed carrots sprays from the target point. It vanishes after {{!!duration}}.
9122: Half of the people nearby are teleported {{!!d10}}0 feet north.
9125: Hallucinogenic mist billows from the target point for the next {{!!duration}}.
9126: Highly flammable gas sprays from the target point for the next {{!!duration}}.
9127: Horrific, deafening laughter echoes through the area for the next {{!!duration}}.
9130: Huge volumes of strongly emetic vapor spray from the target point for the next {{!!s_duration}}.
9131: Huge, cryptic symbols appear on the ground near the target point. They vanish after {{!!duration}}.
9132: Hundreds of highly venomous snakes emerge from the ground. They vanish after {{!!s_duration}}.
9133: Hundreds of hungry dogs appear in the area. They vanish after {{!!duration}}.
9134: Hundreds of thousands of acorns fall from the sky. They slowly shrink over the course of {{!!l_duration}} until they vanish.
9135: Hurricane-strength winds swirl around the target point for the next {{!!duration}}.
9136: Ice cold water sprays from the ground beneath the target point for the next {{!!duration}}.
9137: Ice suddenly covers the ground nearby to a depth of {{!!d4}} inches.
9138: Icy mist issues from the target for {{!!duration}}.
9139: If indoors, all exits are sealed for {{!!l_duration}}; if not, roll again.
9158: Innumerable glowing orbs emerge from the target point for the next {{!!duration}}, then vanish.
9159: It's suddenly night, lasting until dawn would normally occur.
9160: Jagged rocks erupt from the ground in a 100 yard radius.
9161: Large poppies bloom in a 100 yard radius from the target point.
9162: Lightning bolts issue from the spell's target point for the next {{!!s_duration}}.
9163: Loud thunder booms overhead.
9165: Magical healing is not possible within 50 yards for the next {{!!duration}}.
9167: Magical illusions are immediately dispelled within 50 yards for the next {{!!duration}}.
9168: Magical invisibility is impossible within 50 yards for the next {{!!duration}}.
9171: Missiles fired nearby all fly toward the same creature for the next {{!!duration}}.
9174: Missiles fired nearby crash like thunder when they hit for the next {{!!duration}}.
9175: Missiles fired nearby disintegrate while in flight for the next {{!!duration}}.
9176: Missiles fired nearby explode into embers in flight for the next {{!!duration}}.
9177: Missiles fired nearby fly straight up into the sky and vanish for the next {{!!duration}}.
9178: Missiles fired nearby have an absolute range limit of 10 yards for the next {{!!duration}}.
9179: Missiles fired nearby hit the spell's target point for the next {{!!duration}}.
9181: Missiles fired nearby invariably miss their targets for the next {{!!duration}}.
9182: Missiles fired nearby leave colorful trails of light for the next {{!!duration}}.
9191: Natural animals in this area flee from magic for the next {{!!duration}}.
9194: Nearest bridge appears to be a rainbow for the next {{!!duration}}.
9195: Nearest bridge appears to be made of thick fog for the next {{!!duration}}.
9196: Nearest bridge can't be crossed by anyone wearing footwear for the next {{!!duration}}.
9197: Nearest bridge collapses after {{!!duration}}.
9198: Nearest bridge is as pliant as rubber for the next {{!!duration}}.
9199: Nearest bridge is flashes in flames for {{!!s_duration}}.
9200: Nearest bridge is clear like glass for the next {{!!duration}}.
9201: Nearest bridge is made of teeth for the next {{!!duration}}.
9203: Nearest bridge takes {{!!2d4}} hours to cross, but time seems to be moving at a normal speed to those on the bridge. The effect lasts for {{!!l_duration}} to those outside.
9205: Nearest bridge turns invisible for the next {{!!duration}}.
9206: Nearest building can only be entered by walking backwards for the next {{!!duration}}.
9207: Nearest building is exactly duplicated at the target point for the next {{!!duration}}.
9208: Nearest door appears at the target point. 
9212: Nearest door opens to a point {{!!d10}}0 yards in the air. It reverts to normal after {{!!duration}}.
9213: Nearest door opens to the target point for the next {{!!duration}}.
9215: Nearest doorway can't be traversed by anyone wearing armor for the next {{!!duration}}.
9216: Nearest doorway causes all who pass through it to age {{!!d20}} years. They revert to their actual age after {{!!duration}}.
9221: Nearest horse or quadrupedal animal becomes bipedal for the next {{!!duration}}.
9222: Nearest horse or mount sprouts two additional pairs of functional legs for the next {{!!duration}}.
9248: Nearest tree periodically shoots poisonous thorns over the next {{!!duration}}.
9249: Nearest tree turns to bronze for the next {{!!duration}}.
9250: Nearest tree turns to solid gold for the next {{!!duration}}.
9251: Nearest tree uproots and goes on a rampage for the next {{!!duration}}.
9272: Nearest river freezes solid over the next {{!!s_duration}}, then thaws after {{!!duration}}.
9276: Nearest river is now twice as deep as it was this morning. It reverts over the course of {{!!duration}}.
9277: Nearest river is blood red but is otherwise unchanged. It reverts over the course of {{!!l_duration}}.
9308: Reroll on this table. The next {{!!2d4}} spells cast in this area also trigger random magical effects.
9325: A person in within 50 yards disgorges a large steel bowl. It vanishes after {{!!duration}}.
9366: Next person nearby to use magic is turned to wood for the next {{!!duration}}.
9367: Next person nearby to use magic is wrapped in a cocoon for the next {{!!duration}}.
9368: Next person nearby to use magic loses the ability to feel pain for the next {{!!duration}}.
9372: Next person nearby to use magic turns bright pink for {{!!duration}}.
9373: Next person nearby to use magic turns into a frog or a dove for the next {{!!duration}}.
9375: Next person nearby to use magic turns invisible above their nose for the next {{!!duration}}.
9378: Next person slain nearby crumbles into a heap of toxic ash.
9379: Next person slain nearby disappears without a trace.
9380: Next person slain nearby explodes messily.
9381: Next person slain nearby flies into the air and vanishes.
9385: Next person slain nearby transmutes into hundreds of mice that scatter in all directions.
9388: Next person slain nearby is immediately plated in chrome.
9389: Next person slain nearby is resurrected as the spell [[raise dead]] after {{!!s_duration}}.
9393: Next person slain nearby slowly transforms into solid gold, then vanishes after {{!!duration}}.
9394: Next person slain nearby sputters about like a deflating balloon.
9395: Next person slain nearby turns into a large swine as they die.
9400: Next person to cross the nearest bridge turns into a [[troll]] for the next {{!!duration}}.
9403: Next spell cast nearby affects {{!!d4}} other targets nearby.
9404: Next spell cast also [[polymorph]]s the target into a random beast.
9433: Next weapon drawn nearby hurls itself into the sky.
9437: Next weapon drawn nearby instantly quadruples in size. It reverts to normal after {{!!duration}}.
9439: Next weapon drawn nearby is attracted to the spell's target point for the next {{!!duration}}.
9440: Next weapon drawn nearby is instantly struck by lightning.
9446: Next weapon drawn nearby pulses with strange lights and music for the next {{!!duration}}.
9449: Next weapon drawn nearby vanishes until the melee is over.
9507: Night falls in {{!!s_duration}} and lasts for {{!!duration}}.
9508: No bipedal creatures can come within 10 yards of the target point for the next {{!!duration}}.
9509: No bipedal creatures can speak within 50 yards of the target point for the next {{!!duration}}.
9530: No one within 50 yards can draw a weapon for {{!!duration}}.
9531: No one within 50 yards can leave the area for {{!!duration}}.
9543: No plants can grow within 50 yards of the target point for the next {{!!d7}} weeks.
9556: One random sword nearby opens like an umbrella. It reverts after {{!!duration}}.
9560: One random sword nearby turns into a flock of doves. They revert after {{!!duration}}.
9572: Rats and similar vermin are drawn to this area in great numbers over the next {{!!duration}}.
9574: Scalding steam sprays violently from the spell's target point for the next {{!!duration}}.
9576: Several large saw blades whirl through the area for {{!!s_duration}}.
9577: Shadows in this area seem to conceal malicious, mischievous [[imp]]s for the next {{!!duration}}.
9578: Small pebbles pelt all within 50 yards for the next {{!!duration}}.
9579: Snow falls heavily in the area for {{!!duration}}.
9615: Someone nearby dances like a marionette for {{!!s_duration}}.
9619: Someone nearby disgorges {{!!2d4}} large housecats, which vanish after {{!!duration}}.
9620: Someone nearby disgorges {{!!2d4}} severed hands, which vanish after {{!!duration}}.
9621: Someone nearby disgorges a tin bucket of hot coals, which vanishes after {{!!duration}}.
9622: Someone nearby disgorges a copy of themself, which vanishes after {{!!duration}}.
9623: Someone nearby doubles in weight suddenly, then reverts to normal after {{!!duration}}.
9645: Someone nearby glows from within as though they're swallowed a torch for the next {{!!duration}}.
9646: Someone nearby goes berserk and is invulnerable for {{!!duration}}.
9654: Someone nearby has two extra thumbs jutting from their forehead for the next {{!!duration}}.
9656: Someone nearby inflates like a puffer fish for the next {{!!duration}}.
9672: Someone nearby is chained high in the branches of a nearby tree for the next {{!!duration}}.
9681: Someone nearby is dragged towards the target point for {{!!s_duration}}.
9684: Someone nearby is encased up to their chin in a large glass cube for the next {{!!duration}}.
9685: Someone nearby is entangled in a massive snarl of ribbons for the next {{!!duration}}.
9688: Someone nearby is hit by lightning.
9689: Someone nearby is immobilized at the spell's target point for the next {{!!duration}}.
9699: Someone nearby is possessed by {{!!d4}} [[quasit]]s.
9706: Someone nearby is sheathed in candle wax.
9709: Someone nearby is suddenly hideously deformed for the next {{!!duration}}.
9714: Someone nearby is unable to bend their legs for the next {{!!duration}}.
9716: Someone nearby is wearing a suit of solid gold plate armor, until it vanishes {{!!duration}} later.
9717: Someone nearby is wearing a suit of the finest sheer silk, until it vanishes {{!!duration}} later.
9718: Someone nearby leaves footprints that smolder harmlessly for the next {{!!s_duration}}.
9722: Someone nearby turns into a large frog. They revert to normal after {{!!duration}}.
9727: Someone nearby freezes solid for {{!!s_duration}}, then thaws rapidly.
9733: Someone nearby is suddenly attacked by their clothing for {{!!duration}}.
9735: Nearby, someone's head doubles in size. It reverts after {{!!duration}}.
9741: Someone nearby now has a blowhole but no nose for the next {{!!duration}}.
9742: Someone nearby now has baleen instead of conventional teeth for the next {{!!duration}}.
9743: Someone nearby now has three legs spaced evenly around their pelvis for the next {{!!duration}}.
9744: Someone nearby now has two feet jutting from each ankle for the next {{!!duration}}.
9764: Someone nearby shrinks by 50% from the waist up for the next {{!!duration}}.
9767: Someone nearby spins and spits water like a garden sprinkler for the next {{!!s_duration}}.
9768: Someone nearby sprays blood-red foam from their nose for {{!!s_duration}}.
9769: Someone nearby sprouts a [[troll]]'s arm from the center of their chest. It vanishes after {{!!duration}}.
9770: Someone nearby sprouts a turtle's shell atop their head. It vanishes after {{!!duration}}.
9771: Someone nearby sprouts non-functional bat wings, which vanish after {{!!duration}}.
9772: Someone nearby sprouts inflatable sacs from their shoulder blades, which vanish after {{!!duration}}.
9773: Someone nearby sprouts ornate feathers from their tongue, which vanish after {{!!duration}}.
9774: Someone nearby sprouts plates from their back like a stegosaurus, which vanish after {{!!duration}}.
9775: Someone nearby suddenly has a neck like a giraffe, which reverts to normal after {{!!duration}}.
9776: Someone nearby suddenly has eight eyes like a spider for the next {{!!duration}}.
9777: Someone nearby suddenly has eight legs for the next {{!!duration}}.
9778: Someone nearby suddenly has feet like a chicken for the next {{!!duration}}.
9782: Someone nearby teleports {{!!2d4}} yards in a random direction.
9790: Someone nearby tries to eat their own hands for the next {{!!duration}}.
9793: Someone nearby tries to swallow their own arm, elbow first, for the next {{!!duration}}.
9794: Someone nearby triggers two random magical effects when they next cross a bridge
9795: Someone nearby triggers two random magical effects when they next traverse a doorway
9797: Someone nearby turns to a heap of gold dust. They revert after {{!!duration}}.
9798: Someone nearby turns to a heap of moist sand. They revert after {{!!duration}}.
9799: Someone nearby turns to salt. They revert after {{!!duration}}.
9800: Someone nearby turns to stone. They revert after {{!!duration}}.
9801: Someone nearby turns to water. They revert after {{!!duration}}.
9802: Someone nearby turns to wood. They revert after {{!!duration}}.
9820: Suddenly it's raining harder than anyone has ever experienced for the next {{!!duration}}.
9821: Suddenly the area is covered in 6-inch snow that vanishes after {{!!duration}}.
9823: Temperature within 100 yards drops 1° per minute for {{!!l_duration}}, then climbs back to regular temperature.
9824: Temperature within 100 yards rises 1° per minute for {{!!l_duration}}, then drops back to regular temperature.
9825: The arms of someone nearby turn into wings like those of a duck for the next {{!!duration}}.
9826: The complete skeleton of a huge [[red dragon]] tumbles from the sky. It vanishes after {{!!duration}}.
9830: The entire area gives an impression of peace and tranquility for the next {{!!duration}}.
9831: The entire area gives off a powerful impression of loneliness for the next {{!!duration}}.
9833: The entire area hums as if vast machinery is buried in the ground for the next {{!!duration}}.
9852: The entire area is shrouded in a thick and pungent fog for the next {{!!duration}}.
9853: The entire area is strewn with jellyfish like a shore at low tide for the next {{!!duration}}, at which point they all vanish.
9854: The entire area is thickly shrouded by dust and cobwebs for the next {{!!duration}}.
9859: The entire area suffers an intense blizzard for {{!!s_duration}}.
9867: The ground beneath the target point is charged with electricity for the next {{!!duration}}.
9875: The ground within 50 yards is carpeted for the next {{!!duration}}.
9878: The ground within 50 yards is incredibly sticky for the next {{!!duration}}.
9879: The ground within 50 yards is now perfectly smooth steel for the next {{!!duration}}.
9880: The ground within 50 yards is swampy and waterlogged for the next {{!!duration}}.
9881: The ground within 50 yards is tangled with invisible vines for the next {{!!duration}}.
9886: The ground within 50 yards swarms with biting insects for the next {{!!duration}}.
9889: The largest creature within 50 yards nearby doubles in size for {{!!duration}}.
9933: The scent of honey and roses permeates everything within 50 yards for the next {{!!duration}}.
9934: The scent of rotten eggs permeates everything within 50 yards for the next {{!!duration}}.
9936: The sky appears to teem with a vast host of angels for {{!!s_duration}}.
9937: The sky overhead swirls with dark colors for {{!!s_duration}}.
9938: The sky whirls with dazzling colors for the next {{!!s_duration}}.
9939: The sound of hundreds of barking dogs fills the air for the next {{!!s_duration}}.
9940: The sound of mighty winds fills the air, but the air is calm, for the next {{!!s_duration}}.
9941: The spell that triggered this effect discharges randomly every few seconds for the next {{!!duration}}.
9950: The tallest person in the area grows by 50% for the next {{!!duration}}.
9963: The target point is sealed in a 10 foot globe of force for the next {{!!duration}}.
9964: The target point is the center of an [[antimagic field]] for the next {{!!duration}}.
9967: The target point radiates intense cold for {{!!duration}}.
9968: The target point radiates intense heat for {{!!duration}}.
9969: The target point scrambles any effort to teleport near it for the next {{!!duration}}.
9974: Thousands of teeth rain down from the sky for the next {{!!duration}}, then they all vanish.
9975: Thousands of tiny glass ovoids fall from the sky for the next {{!!duration}}, then they all vanish.
9980: Triumphant fanfare fills the air for the next {{!!s_duration}}.
9982: Very salty rain falls for {{!!l_duration}}.
9985: Volcanic ash blankets the area to a depth of {{!!d4}} inches.
9988: Water consumed in this area tastes like the finest wine.
9989: Water consumed in this area tastes strongly of manure.
9990: Water gushes from the target point for {{!!duration}}.
9996: While in this area, no one can include nouns in their speech for the next {{!!duration}}.
9997: While in this area, no one can inflict or suffer any injury for the next {{!!duration}}.
9998: While in this area, no one can speak of anything outside the area for the next {{!!duration}}.
9999: While in this area, no one can speak to anyone else in the area for the next {{!!duration}}.
10000: The caster casts [[darkness]].
10001: The caster casts [[stinking cloud]].
10002: A rhinoceros appears a few feet away from the target. It vanishes after {{!!duration}}.
10003: An elephant appears a few feet away from the target. It vanishes after {{!!duration}}.
10004: {{!!2d4}} rats appear a few feet away from the target. They vanish after {{!!duration}}.
10005: A cloud of {{!!d7}}00 oversized butterflies fills a 30-foot radius centered on the target. The butterflies vanish after {{!!duration}}.
1: Sealed burial mound or pyramid
2: Plundered burial mound or pyramid
3: Faces carved into a mountainside or cliff
4: Giant statues carved out of a mountainside or cliff
5: Intact obelisk etched with a warning, historical lore, dedication, or religious iconography
6: Ruined or toppled obelisk
7: Intact statue of a person or deity
8: Ruined or toppled statue of a person or deity
9: Great stone wall, intact, with tower fortifications spaced at one-mile intervals
10: Great stone wall in ruins
11: Great stone arch
12: Fountain
13: Intact circle of standing stones
14: Ruined or toppled circle of standing stones
15: Pillar carved with elemental or fey symbols
1: no precipitation
2: no precipitation
3: no precipitation
4: no precipitation
5: no precipitation
6: no precipitation
7: light precipitation
8: light precipitation
9: light precipitation
10: heavy precipitation
11: heavy precipitation
1: 1 second
2: 2 seconds
3: 3 seconds
4: 4 seconds
5: 5 seconds
6: 6 seconds
7: 7 seconds
8: 8 seconds
9: 9 seconds
10: 10 seconds
11: 12 seconds
12: 15 seconds
13: 20 seconds
14: 25 seconds
15: 30 seconds
1: Normal temperature for the clime
2: Normal temperature for the clime
3: Normal temperature for the clime
4: Normal temperature for the clime
5: Normal temperature for the clime
6: Normal temperature for the clime
7: Normal temperature for the clime
8: Normal temperature for the clime
9: Normal temperature for the clime
10: Normal temperature for the clime
11: 10°F hotter than normal
12: 20°F hotter than normal
13: 30°F hotter than normal
14: 40°F hotter than normal
15: 10°F colder than normal
16: 20°F colder than normal
17: 30°F colder than normal
18: 40°F colder than normal
1: no wind
2: no wind
3: no wind
4: no wind
5: no wind
6: no wind
7: light wind
8: light wind
9: light wind
10: strong wind
11: strong wind
Pasha Raqashtar of Gold Ash is the most cosmopolitan
of the [[efreet|efreeti]]. He has many friends in the [[Immeasurable Market]] of [[Syrania]], and enjoys betting on the outcome of
battles in [[Shavarath]]. His appetite for gambling could draw
the adventurers into his orbit in the [[City of Brass]], as he might make a wager
with another [[immortal]] about the outcome of a particular
adventure—then seek to put a burning finger on the scales.
Each [[magic item]] (and some "mundane" items) has a rarity: common, uncommon, rare, very rare, or legendary. Common magic items, such as a [[potion of healing]], are the most plentiful. Some legendary items, such as the [[breastplate of Kamvuul Norek]], are unique. The secrets of creating the most powerful items arose in past [[era]]s and then were gradually lost as a result of wars, cataclysms, and mishaps.

Rarity provides a rough measure of an item's power relative to other items. Use the below guide to estimate the cost of a magic item of a given rarity.

!! Rarity Values

* ''Common'': worth 1-10c
* ''Uncommon'': worth 11-50c
* ''Rare'': worth 51-500c
* ''Very Rare'': worth 501-5000c
* ''Legendary'': worth 5001+c
1: common
2: uncommon
3: rare
4: very&nbsp;rare
5: legendary
6: —
''[[Rarity|rarity]]: ''''<$transclude tiddler="RarityNames" index={{!!rarity}}/>''
This tavern caters primarily to
the shifters of [[Lower Northedge]], and serves food and
drink in the style of the [[Eldeen Reaches]]. The customers of the Rat's Nest are more inclined to gossip than to
violence; the [[shifter]]s of [[Northedge]] are as industrious
and honest as any other citizen of the ward. However,
the presence of [[Fathen's Shrine|Shrine of Fathen the Martyr]] hangs over the tavern
like a shadow, and the regulars have an unfriendly
attitude toward any follower of the [[Silver Flame]]. 

Shifters gain an advantage when gathering information in the Rat's Nest.
''District Type:'' Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor
residences (220)<br/>
''First Impression:'' The housing towers in this district are packed with people. The district shows its
age. Cobblestones are cracked or missing, and the
worn stone walls have been marred by time and vandalism. However, the people seem cheerful enough
despite the squalid conditions.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Stormhold]] (north); [[Kenton]] (southeast); [[Warden Towers]] (bridge, northeast); [[Cassan Bridge]] (bridge, east); [[Fallen]] (below); [[Highhold]] (above)

The inhabitants of Rattlestone are poor, but most
have jobs of one sort or another in the [[Bazaar]]. Many
of the [[Watch|Sharn Watch]] patrols that protect this district are
made up of native Rattlestoners. In comparison to
most members of the [[Dura]] Watch, the Rattlestone
guards are more likely to risk life and limb to protect
the people of the district. But this doesn't apply to
strangers, outsiders, or adventurers, and members of the Watch may actually help the local pickpockets
and charlatans carry out their scams. 
Ravar Orioth, or "the Jungle of Scimitars", is a large forest located in the southern tip of [[Valenar]].
They hide in the secret places,
scavenging among the ruins where the Glass Tower
and [[Fallen]] mingle in a jumble of glass and stone.
Few ever see the ravers, but the evidence of their
passing can be discerned amid the wreckage of old.
Whether they were once citizens of the district or
some strange breed released from the Depths by the
shattering disaster, the ravers have been connected
with the Day of [[Crystalfall]] and the troubled spirits
said to haunt the mournful ruins. Most people never
encounter the ravers, but those that do rarely survive
to tell the tale.
A frigid beam of blue-white light streaks toward a creature within 60 feet. If it hits, the target experiences biting cold that slows their movement speed for 5-10 seconds.
Ask anyone on [[Sarlona]] about the vast open spaces of the
[[Tashana Tundra]], and you're likely to hear the same refrain—it is a land
of strange weathers. The native [[shifter]] tribes can tell you more
specifically: The Tundra is home to //aukaraks// or reality storms.

//Aukaraks// are actually free-floating planar breaches, remnants of a long-ago era in which terrible magics rent the very fabric of the planes. They move about the Tundra, blowing in just as a rainstorm might, and blowing over again just as quickly. Reality storms usually function as small, temporary [[manifest zone]]s to one of the twelve [[plane]]s that have coterminous phases with Eberron. They tend to be more intense and powerful than typical manifest zones, but they are unpredictable and impermanent. Reality storms also have a chance of "porting in" natives of a particular [[plane]], as if summoned—these creatures are effectively unsummoned at the end of the storm's duration, and return to their native plane. Finally, some aukaraks simply produce bizarre, random effects that have no apparent connection to any individual plane. Consult the table below for descriptions and effects.

A reality storm takes a few minutes to fully manifest, sometimes simply materializing overhead, sometimes rolling over the horizon and toward the characters. The duration of an aukarak is between 1 and 7 hours, with exceptions for burst storms. Encountered aukaraks can be chosen from the table or randomly rolled. 

| !<<dr d50>> |!Aukarak&nbsp;Type |!Description |!Possible&nbsp;Encounters |
| 1-3 |[[Daanvi]], the Perfect Order |Translucent geometrical shapes float in the air; items intermittently shift to "ideal form"; a field of wildflowers could appear as a cultivated garden |[[modron]]s, [[formian]]s |
| 4-6 |[[Dolurrh]], the Realm of the Dead |Muted colors and sounds; feelings of despair; heavy gravity |[[shadow]]s, [[meld]]s, [[lemure]]s, [[sorrowsworn]], [[nalfeshnee]] (rarely) |
| 7-9 |[[Fernia]], the Sea of Fire |Embers and ash swirl through the air; uncomfortable heat; fire magic enhanced |fire or earth [[elemental]]s, magma [[mephit]]s |
| 10-12 |[[Irian]], the Eternal Dawn |Intense sunlight; illusory landscapes of fields of crystal and sand |benign [[ember]]s |
| 13-15 |[[Kythri]], the Churning Chaos |Random, intense environmental effects—noise, snow, steam, lightning |[[slaad]], never-before-seen [[monstrosities|monstrosity]] |
| 16-18 |[[Lamannia]], the Twilight Forest |Illusory overgrowth of plant life and verdant terrains; pockets of the [[First Storm]] |[[dire beast]]s, [[elemental]]s |
| 19-21 |[[Mabar]], the Endless Night |Near-total darkness |[[shadow]]s, [[wraith]]s, [[mezzoloth]]s |
| 22-24 |[[Risia]], the Plain of Ice |pieces of the [[Boundless Blizzard]]; enhanced ice magic |Usually none. Rarely: [[remorhaz]]es, [[ice devil]]s |
| 25-27 |[[Shavarath]], the Eternal Battleground |Illusory scenes of ghostly combatants eternally at war; cacophonous noise; whirling blades |[[devil]]s, [[demon]]s, [[angel]]s, or the [[manifestation]] of literally any kind of warrior |
| 28-30 |[[Syrania]], the Azure Sky |Bright, vibrant colors; cloudless blue sky; feelings of calm; light gravity |Syranian [[angel]]s, no combat |
| 31-33 |[[Thelanis]], the Faerie Court |Dancing lights and phosphorescence; landscapes with exaggerated features; the smell of perfume|[[dryad]]s, [[satyr]]s, [[sprite]]s, any [[fey]] |
| 34-36 |[[Xoriat]], the Realm of Madness |Illusions of utterly alien phenomena, [[random magical effect]]s |[[beholder]]kin, native [[aberration]]s (not necessarily hostile) |
| 37 | Binary storm: [[Daanvi]]/[[Kythri]] |Storm toggles between opposing planes once every 20-60 seconds ||
| 38 | Binary storm: [[Irian]]/[[Mabar]] |Storm toggles between opposing planes once every 20-60 seconds ||
| 39 | Binary storm: [[Fernia]]/[[Risia]] |Storm toggles between opposing planes once every 20-60 seconds ||
| 40-42 | Antimagic storm |An eerie dead stillness and dimming of light; [[antimagic field]] effect ||
| 43 | Temporal storm |A light sleet descends, causing time to speed up or slow down in the area ||
| 44-45 | Temporal burst |A light sleet descends, causing time to speed up or slow down in the area only for 30-90 seconds ||
| 46-47 | Gravity burst |A shimmering air mass descends, causing heavy or light gravity for 30-90 seconds ||
| 48-50 | Teleportation burst |A cloud of sparkling snow descends, teleporting creatures in a 100-foot radius to another randomly determined location in the Tashana region ||
No one knows the extent or depth of the ancient [[dwarven|dwarf]] empire deep beneath the [[Ironroot Mountains]]. Great wealth and arcane secrets remain hidden in these halls,
along with endless hordes of [[aberration]]s. 

!

Each [[clan|Mror clan]] holds dominion over a spire, with the ruling clans
laying claim to all remaining land within a hold. Critically,
a clan holds domain both over its territory and all that lies
below it. Early in the tenth century, miners in multiple holds
broke through to the Realm Below. Wide tunnels shaped by
elemental magic led to grand halls and subterranean cities
crafted with techniques far beyond those of the modern
[[Mror|Mror Holds]] earthmovers. Avenues were lit by [[continual flame]],
and environmental enchantments ensured purity of air and
comfortable climate. One might think the dwarves would
have been more curious about the fate of the builders, but the
ancient halls were entirely empty, with no signs of blood or
bone. To those who discovered them, these empty halls were
not foreboding, but a gift from the [[Sovereigns|Sovereign Host]]—a wondrous
realm waiting for residents.

Clan leaders proceeded with caution, but were lured in as
greater wonders were discovered. Ancient forges held the
promise of forgotten techniques that could yet be reclaimed.
Explorers returned with ornaments of gold and silver, found
simply lying around the avenues for the taking. And there
were mines—mines far safer and grander than those above,
yet still containing riches. In time, explorers would realize
that some of the richest mines were not entirely natural—that
some shafts connect to [[demiplane]]s where the rules of reality don't always apply, like mines where emeralds grow like moss. This, too, could have been a warning, but the clan rulers were dazzled by wonder and opportunity. Expeditions moved into these upper levels, establishing colonies in the Realm Below. Miners began working the ancient veins, and smiths brought some of the forgotten foundries back online.

!! The War Below

For a time, it seemed like a golden age. No one knows exactly
what brought it to an end. It may be the fault of adventurers
and explorers who pressed too deep, ever searching for
greater treasures. Or it could be that [[Dyrrn]] and its minions
were watching the [[Mror|Mror Holds]] expansion all along, waiting for
the civilian population in the subterranean colonies to
reach a critical level. At first, scouts brought back reports of
newly exposed tunnels and chambers, of passages coated
with unnatural fluids and strange things growing among
mushroom gardens. Then the scouts stopped returning and
the first wave of attacks began. Squads of [[dolgrim]]s. [[Chokers|choker]]
lurking in the shadows. [[Soldorak]]hold faced howling mobs
of [[derro]]—possibly the twisted survivors of [[Noldrunhold]], the
Lost Clan. Strange plagues and implacable [[ooze]]s spread through the sunken colonies
of [[Londurak|Lanarak and Londurak]]. It was a time of terror, but also determination:
whatever this unknown threat was, it must be held in the
depths at any cost.

Armies were rallied, clans sending their finest soldiers into
the depths, while every citizen trained with axe and hammer
in preparation for [[dolgrim]] raids or a more dramatic surface
assault. While some [[clans|Mror clan]] considered withdrawal, pride and
a hunger for the wealth and wonders still hidden kept the
[[dwarves|dwarf]] fighting. They believed if they didn't hold them below,
the [[aberration]]s would merely follow them to the surface.
The years that followed were a time of endless terror and
uncertainty. As the horrors were driven back in one hold, they
would strike with redoubled force in another. New threats
appeared with alarming regularity; [[dolgrim]]s and [[derro]] were
common foes, but there was no telling when a previously
unknown danger would rise.

Two major discoveries shaped the second decade of the
war. The first was the revelation of the enemy the [[Mror|Mror Holds]] faced:
the [[daelkyr]] known as [[Dyrrn]] the Corruptor. In 943 YK, the
[[illithid|mind flayer]] Dyrrashar seized the colony below Loran's Gate in
[[Soldorak]]hold, and broadcast a psychic message known as
''Dyrrn's Promise''. This telepathic message didn't take the
form of words, and attempts to transcribe it have produced
widely varied translations. But the thrust was this: 

<<<
“You have drawn the gaze of the Overmind.<br/>
You walk the Foul Labyrinth.<br/>
Everything will change.” 
<<<

Clan [[Soldorak]] eventually retook
Loran's Gate and forced Dyrrashar to retreat, but the illithid
general has risen elsewhere and remains at large today. None
who experienced Dyrrn's Promise can ever forget it.

Even as Dyrrn's Promise spread fear, a second discovery
brought hope. Following grave losses, Clan [[Londurak|Lanarak and Londurak]]
withdrew its forces to the surface. The Londurak prepared
their defenses for a surface attack... but it never came. This
pattern was repeated in other spires and holds; though the
reasons are unclear, Dyrrn's forces won't pursue their enemies
beyond Sol Udar.

!! Stalemate in the Depths

Nobody's sure why the [[aberration]]s avoid attacking the surface
in force. Sages theorize it's tied to the wards that bind [[Dyrrn]]
within its [[demiplane]], and the aberrations only venture so far from the realm of their master. Or perhaps it's just a tactical
choice. Regardless of the reason, the war has been in a
stalemate over the last few years. But many sages believe that
complacency is foolish, and until they know with absolute
certainty what keeps [[Dyrrn]]'s forces from rising to the surface,
they can't know their protection will last. And even if the
[[dolgrim]] hordes won't leave the tunnels and there's no threat
of a large-scale assault, the Slithering Lord could be unfolding
more subtle schemes.

[[Londurak|Lanarak and Londurak]]hold and [[Tordannon]]hold have both pulled back
from the war, fortifying all passages to the Realm Below and
forbidding any traffic with the depths; they ignore the Realm
Below, believing that if they don't poke the hornet's nest, the
[[aberration]]s won't threaten them. Most of the other major clans
maintain lines in the depths, defending claimed mines and
colonies with steel and blood. These territories are secured
by heavy fortifications, strong enough to repel attack, though
serving on the line is a dangerous job. But the [[dwarves|dwarf]] aren't
trying to press beyond their current lines, for if they venture
across it, their fate is unknown.

The future of the war remains unclear. Many of the [[clan|Mror clan]]
lords yearn to press deeper. But there have been all too
many casualties over the past few decades, and there is still
considerable fear that the current lull is a trick—that [[Dyrrn]]
is building forces for a renewed assault. And no one knows if
there is a way to win the war once and for all, or if it's just a
matter of advancing the line another hundred feet. Ultimately,
it's up to the DM to decide whether the war remains as a
lurking threat, or if it heats up and dominates the story.

!! Ripples on the Surface

While the [[aberration]]s have yet to come to the surface in force,
the war is ongoing, and it can be felt on the surface. Individual
aberrations occasionally come to the surface; a lone [[choker]]
might carry out a spree of killings, or an [[illithid|mind flayer]] could rise to
work with a [[dwarf]] cult. Psychic attacks, unnatural diseases,
and other threats can emanate from the depths.

In the past three decades, the touch of [[Dyrrn]] has become
seen even in the children born to the [[Mror|Mror Holds]] dwarves. Very
rarely, an infant born to ordinary parents is different. Known
as [[ruinbound]] dwarves, these unusual infants are born with a
personal [[symbiont]] bound to them, along with other unnerving
mutations—and unexpected powers. 

The Influence of Dyrrn table below gives examples of threats that
could arise either in a subterranean colony or on the surface
itself. These things aren't common, and clan soldiers are ever
wary to repel threats, but these ideas could drive a story set in
a Mror community.

!!! The Influence of Dyrrn

| !<<dr d8>> |!Event |
| 1 |''Haunting Whispers.'' The people of a community are tormented by telepathic whispers. These whispers may be the fears or cruelest thoughts of neighbors, or they may reveal and reinforce the fears of the listener. While there's no physical effect, a plague of whispers can trigger discord and violence. The whispers could be blocked by an effect that prevents telepathic communication (such as a [[ring of mind shielding]]) or that prevents a creature from being charmed by an [[aberration]]. |
| 2 |''Gray Water.'' An infected well or a point within a sewer system begins to spawn [[gray ooze]]s. |
| 3 |''The Frenzy.'' A psychic curse takes root in a victim, driving them to irrational violence. A victim of the Frenzy immediately pursues a course of action that leads to violence. Some retain enough self-control to seek out an existing enemy; others simply turn on the closest creature that annoys them. If someone cursed by the Frenzy strikes another creature with a melee attack, the target must resist the psychic curse or contract the Frenzy. If someone kills a victim of the Frenzy, they are also at risk of infection themselves. The Frenzy can be blocked by any effect that prevents a victim from being charmed by an [[aberration]], or removed instantly by the [[greater restoration]] spell. Otherwise, if a victim is restrained and prevented from acting on their violent impulses, they may overcome the Frenzy after a few hours. |
| 4 |''Alien Persona.'' This victim of this psychic curse believes that they are an [[aberration]], such as a [[mind flayer]]. They attempt to follow their unnatural instincts, such as killing people and consuming their brains. This curse isn't contagious, but victims can be cunning and may be able to hide the affliction. [[Greater restoration|greater restoration]] can remove the curse. |
| 5 |''Cultists.'' A [[cult of the Dragon Below|Cults of the Dragon Below]] takes root in the local community. [[Transcendent Flesh]] and revenant cults are common options. A cult may be led by an [[intellect devourer]] or [[mind flayer]], or spring up on its own. |
| 6 |''Freshly Formed.'' An [[aberration]] is spontaneously created by the [[transmutation]] of local creatures. [[Dolgrim|dolgrim]]s could be formed by fusing two [[dwarves|dwarf]] together; a [[gibbering mouther]] could be the result of victims being liquefied and blended together. These creatures need not look like the traditional aberrations, but can use the standard stat blocks. |
| 7 |''Lone Hunter.'' A single intelligent [[aberration]]—an [[intellect devourer]], a [[dolgaunt]], or even a [[mind flayer]]—moves through a community. It may kill seemingly at random, or it could have a mission it seeks to fulfill. |
| 8 |''Mindstorm.'' A wave of psychic force drifts through a community in the same way a hurricane might. Those caught in the area of effect must resist the storm or suffer the effects of the [[phantasmal force]] spell. The area of effect, duration, and strength depend on the intensity. A minor storm could affect a 20-foot radius, and only last twenty seconds; a powerful storm might cover hundreds of feet and last for up to an hour. Likewise, the visions vary. Sometimes a mindstorm is bizarre, but not harmful; inanimate objects might melt or move, and time could run backward or slow down. Another mindstorm could take the form of an attacking horde of [[dolgrim]]s—and due to the effects of [[phantasmal force]], these attacks can be deadly. |

It's important to recognize the scope of the conflict in the
depths. No one knows the full size of the Realm Below, though
it appears to stretch across the [[Ironroot Mountains]], and
connects to multiple [[demiplane]]s in [[Khyber]]. There's a good
chance it exists below every major [[Mror|Mror Holds]] city, but not every
spire has broken through and made a connection to Sol Udar.
When creating adventures in a Mror city, decide if there is an
established passage to the Realm Below; if so, is it a simple
passage, or is there a subterranean fortress or colony? In
a spire with no known connection, a cult could be secretly
digging to try to reach their aberrant masters. Or a clan could
have opened a passage beneath its keep but lacked the courage
to explore it—a job for adventurers.

!! Venturing Below

To an outsider, the idea of pressing into the Realms Below
may seem like madness, but several factors drive the ongoing
[[Mror|Mror Holds]] presence in the depths. The first is a hunger for the
wonders that lie below. The ancient dwarves possessed
the ability to craft legendary objects and artifacts. They
understood [[Khyber]]'s systems of [[demiplane]]s in a way even
the [[Dhakaan]]i haven't mastered; many clan lords dream
of bottomless mines or resources that can't be found in
the natural world. Beyond the innate desire for these
things, for the Mror, it's a matter of pride. Sol Udar is
the work of their ancestors. The knowledge that it
holds, the untold wealth, this is their birthright. It's
a burning reminder that they could be more than
they are now—they could be greater than the [[Five Nations]] or the [[Aereni|Aerenal]]. Additionally, many dwarves are driven by their desire to know the story—to understand who their ancestors were and what became of them.

If a player character is a Mror noble, the Realm Below can be a tempting opportunity for advancement. The [[clans|Mror clan]] hold all lands below their territory. If a noble with a stalwart band of allies can secure an outpost in Sol Udar and fortify against the
forces of [[Dyrrn]], they can claim it as their personal
estate. This could be a remarkable keep for a party of
adventurers—if they are powerful enough to maintain
it! The table below contains some
more story hooks for why adventurers might delve into the Realm
Below.

!!! Realm Below Story Hooks

| !<<dr d6>> |!Event |
| 1 |An explorer possesses a wondrous relic from the Realm Below. But terrible things keep happening around them. Is the relic cursed, or has another threat followed the traveler? |
| 2 |A relative who's settled in a subterranean colony sends a disturbing letter; when the adventurers investigate, soldiers have sealed off all contact with the colony. What are the [[dwarves|dwarf]] afraid of? |
| 3 |A [[clan|Mror clan]] champion was lost in Sol Udar a decade ago, along with the legendary weapon they carried. Does the clan want it back, or do the adventurers discover it on their own—and learn what became of the fallen hero? |
| 4 |An infectious curse is spreading in a community; the only cure lies in the tunnels below. |
| 5 |A character is troubled by vivid visions of a sacrifice occurring in Sol Udar. Are these visions of the past, or the future? |
| 6 |The ruling clan is preparing for a major offensive, pushing the defensive line of a colony down multiple levels, but the commander is worried that there are cultist spies among her staff. Can the adventurers expose the traitors? Or is it the commander herself who's fallen under [[Dyrrn]]'s influence? |

The lines between regions secured by the [[Mror|Mror Holds]] and those
held by [[Dyrrn]]'s forces are clearly marked. As the [[aberration]]s
generally don't come to the surface, there are places where
the uppermost passage has simply been sealed with magic
and steel. In other places where the dwarves have established
colonies, the edge of the colony is heavily fortified and patrolled
by soldiers, ever alert for some new attack. In most cases,
soldiers won't prevent someone from proceeding into the
depths—but anyone returning goes through careful scrutiny to
ensure they haven't been infected by unnatural influences. And
if an explorer has returned with treasures, it's considered polite
to offer a gift to the guardians.

!! Into the Silent Halls

The Realm Below blends the civilization of Sol Udar with
the alien touch of the [[daelkyr]]. The dwarves of Sol Udar were
an advanced civilization employing arcane science beyond
that currently possessed by the [[Five Nations]]. The halls were
shaped by elemental magic—an improved form of the [[move earth]] spell—and reinforced to be stronger than any natural
stone. Barring any alien influence, the air is renewed by
magic and remarkably fresh; a permanent [[prestidigitation]]
effect keeps these halls clean after thousands of years and
untold conflicts. Ultimately, venturing into this environment
can be somewhat eerie: though there may have been a brutal
battle there just months ago, the halls are silent and pristine.

Widespread magic was a part of daily life in Sol Udar.
Explorers might find a chamber where illusory music begins
to play as soon as someone enters, or discover a theater still
performing ancient entertainment. Many doors are sealed by
[[arcane lock]]s, and high-security areas may have self-restoring
[[glyphs of warding|glyph of warding]] or more sophisticated security. The people
of Sol Udar weren't warlike by nature. Their halls contain great
forges and foundries, but many of their wonders are utilitarian.
An Udar kitchen has tools that replicate the heating, chilling,
and flavoring effects of [[prestidigitation]], and might have a built-in [[alchemy jug|Ghallan jug]] to dispense whatever liquids are needed. Of
course, not all enchantments are automatically noticeable, and
many effects require some form of command word or gesture
to activate; modern colonists who have settled in the upper levels of Sol Udar are still struggling to understand the full
capabilities of their new home.

The dwarves of Sol Udar also took advantage of the many [[demiplane]]s that lie within [[Khyber]], identifying passages to them and building around them, just as the people of the surface build around [[manifest zone]]s. A typical demiplane portal is clearly marked and heavily secured, of great potential value—and danger—as they can break the laws of the natural world. Demiplanes are entirely unpredictable in size, some no larger
than a town, with others the size of [[Khorvaire]] itself. Within
a demiplane, time might run differently. Gemstones could
grow on trees. A demiplane can have its own sun, and provide
vegetation and other resources that couldn't be found in any
natural cave. But a demiplane could also hold strange curses,
unnatural diseases, or deadly creatures—or in the case of
[[Dyrrn]]'s [[prison-realm|Palace of Sinew]], all three.

The Realm Below isn't one single contiguous community.
It was an entire nation, one that stretched at least the length
of the [[Ironroot Mountains]]. There are major cities, small
outposts, and long passages connecting them. The Realm
Below likely had some form of rapid transit: Teleportation
circles? Something similar to the [[lightning rail]]? A system tied
to demiplanes? Whatever this was, it has yet to be discovered,
and may lie on the lower levels held by Dyrrn's minions. In
creating a section of the Realm Below for an adventure, the DM
should think about the purpose of this particular area. Was it
an industrial center? A residential community? A hospital? A
prison? If it contains a passage to a demiplane, the nature of
the demiplane should relate to the function of the community; if
it's a hospital, perhaps the local demiplane has alien vegetation
that has remarkable medicinal properties. But what unknown
threats could dwell in the demiplane—threats the ancient
dwarves knew to avoid?

!! Denizens of the Deep

[[Dyrrn]]'s minions have spread throughout the lower reaches
of Sol Udar. Areas inhabited by [[aberration]]s are generally
easy to spot. Often, organic matter covers the surfaces of
the buildings. Explorers have encountered fleshlike coating,
with tendrils of muscle spread out like spiderwebs; organic
fluids that move along the walls, a harmless form of living
ooze; floating, bioluminescent globes that could be neurons
in a vast brain; and other, stranger things. There are strange
smells and sounds. People often experience telepathic static,
hearing thoughts of people around them or having flashes of
alien imagery. Areas infested by the [[daelkyr]] may encounter living traps and hazards. A web-like membranes secreted by the ceiling fall on adventurers. Chitinous
stingers grown by the walls fire at random intervals. These traps can still be evaded by
the standard methods, though at the DM's discretion, unusual
skills could also apply; perhaps an organic poison needle trap
could be disarmed with surgical tools instead
of using [[thieves' tools]].

Dyrrn's specialty is corruption, both mental and physical.
Thus it has created creatures like the [[dolgrim]]s and [[dolgaunt]]s—[[goblinoid]]s physically transformed into monsters, the most
prolific denizens of the dark—as well as the [[derro]], who still
bear some resemblance to the dwarves they once were, but
whose minds have been altered.

Dolgaunts often command units of dolgrims, but dolgaunts
can also be found acting alone or maintaining strange shrines.
Unique dols can have greater abilities. Dols are capable of acting with surprising discipline and precision, but their strategies are often
unorthodox and enigmatic.

[[Derro|derro]] are believed to be dwarves twisted by [[Dyrrn]]'s power. There may be derro whose roots go back to the ancient dwarves who built Sol Udar; however, the common assumption is that the derro are the descendants of the lost dwarves of [[Noldrunhold]]. Other derro could be more recent victims, created from Mror settlers captured in the War Below. The derro are nomadic scavengers who remain
in constant motion, roaming the deep tunnels of the Realm
Below. They completely ignore Dyrrn's aberrations, and seem
to be ignored in turn; one scout reported seeing a derro band
walk through a dolgrim camp, without acknowledgment from
either side. Some scholars believe that the derro can't perceive
the aberrations, and that some believe themselves to be in a
reality in which Sol Udar is still in its time of glory, and the
derro are its lords. They don't appear to serve Dyrrn directly,
but they definitely see all outsiders from above as enemies.
A derro warlord calling himself Lord Mror has repeatedly
attacked Mror colonies; however, it's unclear if this is a single
powerful derro with followers across the realm, or if several
derro savants use this title.

The [[daelkyr]] often hold the most important areas of an Udar
site; as such, these dungeons contain both treasures created
by the dwarves and the organic tools of the daelkyr. However,
the purpose of areas claimed by [[Dyrrn]]'s forces varies widely.
In some cases, there's a clear logic to what these creatures
are doing: [[dolgrim]]s could have seized an ancient foundry and
begun forging weapons. Explorers could find some sort of
spawning pit where new [[aberration]]s are being produced. But
the behavior of aberrations is often alien and inexplicable; a
chamber could contain a giant, beating heart that serves no
apparent purpose, or a pool of liquid that reflects another
location. The inhabitants of the depths are unpredictable,
and aberrations may not have the same biological needs as
natural [[humanoid]]s; for example, [[dolgrim]]s don't need to work
subterranean farms for food.

Some [[aberration]]s are permanently settled in a region, but
others may spill out of portals to [[Dyrrn]]'s domain, and others
may be grown on the spot by the organic matter spread
throughout infested regions, or created from the corpses of
foolish explorers. A [[gibbering mouther]] may whisper with the
voices of the [[dwarves|dwarf]] who ventured into the depths last week.

While [[mind flayer]]s can be found serving any [[daelkyr]], [[Dyrrn]]
the Corruptor is their creator. Sol Udar is thus a logical
place to encounter mind flayers or any creatures associated
with them: [[intellect devourer]]s, [[ulitharid]]s, [[neothelid]]s, and
the like. A neothelid may be an intentional creation,
as opposed to an accidental abomination. Elder brains are
tools used as telepathic anchors, linking local mind flayers,
while the elder brains are linked to Dyrrn itself. In general,
mind flayers serve as Dyrrn's emissaries and lieutenants—directing lesser aberrations or humanoid cults, or engaged in inscrutable research. The most infamous mind flayer is
Dyrrashar, the ulitharid who delivered Dyrrn's Promise. It
has appeared multiple times since then, often leading subtle
attacks against Udar colonies.

Most other threats are encountered in isolation, and almost
any sort of [[aberration]] could be found in the darkness; you can
also use unusual variations of aberrations or [[monstrosities|monstrosity]],
shifting the creature to fit your story. For example, [[beholder]]s
primarily serve [[Belashyrra]], the Lord of Eyes, but Dyrrn could
have beholder servitors with beaks surrounded with tentacles,
as opposed to toothy maws.

! Sol Udar Trinkets

In addition to more valuable treasures that can be found, the following table presents some interesting items, both magical and mundane, that might be found adventuring in the Realm Below.

| !<<dr d12>> |!Trinket |
| 1 |An ancient compass-like tool points unerringly toward a location in Sol Udar. |
| 2 |A scarab-like creature, the size of a small gold coin. If you attach it to your neck, it telepathically projects eerie music into your mind. |
| 3 |A hexagonal playing card of unfamiliar design, bearing the number 5 and the image of a dwarven woman in heavy armor. |
| 4 |A set of living thieves' tools, with flexible tentacles instead of steel picks. |
| 5 |An [[adamantine]] key of ancient design. |
| 6 |An eel-like [[symbiont]] that wraps around your wrist like a bracelet, reducing the effects of motion sickness and hangovers. |
| 7 |A battered locket that contains an animated image of a dwarf. It's possible it's sentient and understands what you say—but probably not. |
| 8 |A leather choker with leech-like mouths on the inside. While attached to your throat, it amplifies your voice to three times its normal volume. |
| 9 |A battered brass mug that chills any liquid placed inside, but with a hole punched through the bottom. |
| 10 |A preserved eye of an unknown creature; the iris still expands and contracts. |
| 11 |A hexagonal metal disk engraved with a Dwarven word that means “play.” When you hold it and speak that word, it loudly plays an ancient marching tune that can be heard up to 60 feet away. |
| 12 |An organic pen made of a leathery substance, with a talon as the nib. It generates ink as you write—which seems to be made of blood. |
The reath vine is a parasite that grows on trees in the [[Eldeen Reaches]]. It is sometimes used as an [[alchemical|alchemist]] or [[spell]] component for any effect that targets plants or [[plant creature]]s.
Red dragons have a reputation for arrogance, even among dragons. These creatures see themselves as kings and emperors, and often view the rest of dragonkind as inferior.

The odor of sulfur and pumice surrounds a red dragon, whose swept-back horns and spinal frill define its silhouette. Its beaked snout vents smoke at all times, and its eyes dance with flame when it is angry. Its wings are the longest of any chromatic dragon, and have a blue-black tint along the trailing edge that resembles metal burned blue by fire.

The scales of a red dragon wyrmling are a bright glossy scarlet, turning a dull, deeper red and becoming as thick and strong as metal as the dragon ages. Its pupils also fade as it ages, and the oldest red dragons have eyes that resemble molten lava orbs.

!! Magic and Breath Weapon

The red dragon can exhale the mightiest fire breath of any dragon. As innate spellcasters, adult red dragons can cast spells such as [[immolation]], [[invisibility]], [[wall of fire]], [[elemental bane]], and [[control winds]].

{{DragonAgeCategories}}
This unusual business is an inn—for [[warforged]]. Warforged do not need to eat,
drink, or sleep, but they can still hunger for camaraderie. The Red Hammer is a place for warforged to gather, make new friends, and exchange stories. The Hammer is owned by two warforged, Blue and Crucible. The official story is that Blue bought the Hammer with a cache of gold she found during the [[Last War]], but in truth it
was paid for by [[Merrix d'Cannith]]. Crucible is one of Merrix's experimental warforged produced in [[Sharn]], and Merrix also wants to provide the warforged with an outlet for social development. Blue and Crucible are on good terms with [[Smith|Pool of Onatar's Tears]], and both support his views as opposed to those of the [[Lord of Blades]].

In addition to companionship, the Hammer is a source for repairs and cosmetic improvement for [[warforged]]; costs are equivalent to those of a house of healing. 
The {{!!title}} is a [[Sharn]] street gang of 
primarily [[shifter]]s and [[half-orc]]s who live
in the [[sewers]] below [[Menthis|Menthis Plateau]] and clash
with anyone who invades their territory.
This tavern caters to members of the
[[Deathsgate]] [[adventurers' guild|Deathsgate Guild]], though anyone can
buy ale here. The tavern has a few special services to
offer that make it particularly popular with its usual
clients. “Redblade” Rraac ([[half-orc]]) owns the tavern. He retired from fighting after his age began to slow him down, and now he
leads the Deathsgate Guild services to the [[Mockery]].

Rraac's wife Myssian ([[human]]) is
a skilled [[alchemist]] who maintains a workshop in the
back of the tavern, and Rraac sells [[wrath]], [[silverhaste]],
and a range of [[poison]]s to his favored clients. 
The Redcliff Bay lies the coast of [[Zilargo]] and [[Breland]], near the [[King's Forest]].
The soldiers of the Redcloak Battalion are among the
deadliest warriors in [[Sharn]]. When a situation calls for
extreme military force, both the [[Sharn Watch]] and the
[[King's Citadel]] turn to the Redcloak Battalion. This elite
unit fought in the forefront of the [[Last War]], and the
bards in [[Menthis|Menthis Plateau]] today sing of the exploits of Khandan the Hammer and Meira the Huntress. At the end of the war, the battalion was split up, and one unit was assigned to Sharn. Its [[headquarters|Talain Garrison]] is located in the [[Daggerwatch]] district of [[Upper Dura]], and is led by Captain [[Khandan Dol]].

Many of the members of the Redcloak Battalion resent
being relegated to mere law enforcement, and there is a strong rivalry between the Redcloaks and the [[King's Swords]] of the [[Citadel|King's Citadel]], who generally have less military experience even though they enjoy far greater authority and prestige.

As veterans and heroes of the Last War, many of the
Redcloaks are unfriendly toward travelers from other
nations. As far as the Redcloaks are concerned, the
[[Treaty of Thronehold]] is merely an intermission, and
soon King [[Boranel|Boranel ir'Wynarn]] will come to his senses and finish
the job that [[Wroann ir'Wynarn]] began. 

The Redcloaks are absolutely faithful to [[Breland]]: they are willing to lay
down their lives in the service of their nation. Trying
to bribe a Redcloak is a good way to lose a hand.
''District Type: ''Shops<br/>
''Buildings:'' Temple ([[Kol Korran]]), Shrines ([[Olladra]],
[[Onatar]]), average lodging (25), average food (60),
exotic trades (24), upscale trades (120), average
trades (190), poor trades (30), upscale services (30),
average services (60)<br/>
''First Impression:'' Handsome towers of red marble
and granite packed with various shops and crafters
offer a seemingly endless array of goods. The brick
hanging streets are filled with milling customers and the occasional unfortunate begging for copper
and silver.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Overlook]] (west); [[Hope's Peak]] (northeast); [[Daggerwatch]] (south); the [[Bazaar]] (below)

One of the newer districts, Redstone is less than
two hundred years old and many of the respectable crafters from the [[Bazaar]] of [[Middle Dura]] have
moved here in recent years. The architects sought
to overcome the negative perceptions of [[Dura]], and
the stonework is beautiful. Much of it was crafted
using red marble from Rose Quarry, once a thriving [[Cyran|Cyre]] supplier which now lies in ruins in [[Darguun]]. The rest of the towers consist of red granite
and brick. With a host of subtle variations in shade,
the towers present a striking sight, especially in the
light of the setting sun.

Redstone has grown into one of the largest centers for commerce in the city, nearly twice the size of [[Granite Halls]]. Almost any sort of honest trade
can be found in Redstone, from bakers to wigmakers. There are two banks in Redstone, including a [[Kundarak]] [[enclave]] and the smaller Lorrean Bank, a
family business belonging to one of the [[sixty great families|Sixty]] of [[Sharn]]. The district also contains workhouses that draw on the population of [[Overlook]],
including a glassworks and a textile factory.
Redwatch is an island in the [[Lhazaar Principalities]].
The Redwater is a large river in [[Valenar]] that flows past [[Taer Valaestas]] into the [[Bay of Swords]].
The Refuge of [[Irian]] is a vast fortress-monastery, though it has aspects
of a spa as well. It's filled with tranquil groves, soothing baths,
and places to rest and reflect. The fortress walls don't represent
potential conflict, but rather speak to the absolute security of
the place—within its walls, you are safe from all threats. The
Refuge holds healers who can treat your injuries, mediators
who can talk through problems, and sages who may not know
the answers you need, but can point you in the right direction.
This isn't a place where adventures occur; it's where you
recover from your injuries and plan your next move, knowing
that you're safe and that there are answers to every problem. [[Araam]] is the [[Architect]] of the Refuge and embodies the concept of hope. 

While not all layers of Araam's realm provide the security
and succor of the Refuge itself, they all can provide comfort
and hope. They don't have the absolute peace of [[Syrania]],
but they make people feel there's hope. Irian has no match
for the [[Immeasurable Market]] of Syrania, so if you're looking
for commerce, the Azure Sky has more options. But for
adventurers who seek a relaxing vacation in the planes, the
Refuge is unparalleled.
The seat of the High Prince [[Ryger|Ryger ir'Wynarn]] and the [[Seadragon|Seadragons]] Principality, Regalport is the grandest city in the principalities. The [[patriarch|Elar d'Thuranni]] of House [[Thuranni]] resides in Regalport, and House [[Ghallanda]] has a significant outpost here. 

The Pirate Exchange is the largest market east of the [[Ironroot Mountains]]. Despite its name, the authorities crack down on market goods actually obtained through outright piracy; Regalport is the most regulated port in the region. The market features goods from the other islands and the [[Mror Holds]], as well as goods from [[Seren]] and [[Sarlona]]. Recently, tribal art from the [[Tashana Tundra]] [[shifter nations|Culture of the Tashana shifters]] has become a popular mainstay in the market.
The westernmost city in Karrnath is Rekkenmark,
a community known for its [[military academy|Rekkenmark Academy]]. Once
called the door to Karrnath, thanks to the great
White Arch Bridge spanning [[Scions Sound]], Rekkenmark’s importance fell in the last century, when the bridge tumbled into the sound. Given that the bridge
served as a major artery to the heart of Karrnath,
many soldiers marveled that it stayed intact as long
as it did. Cut off from the west by the river and
surrounded or behind enemy lines for significant
portions of the [[Last War]], this border city suffered greatly
during the conflict.

Rekkenmark’s survival and continued viability is
a testament to Karrnathi stubbornness. Its citizens
still work to bring the city back to its prewar magnificence. The people emphasize the city’s prewar charm, with buildings, temples, and structures surviving from when Karrnath was part of [[Galifar]]. Their
efforts have not seen much success because the loss of
the bridge also destroyed the [[lightning rail]] spanning
it and greatly curtailed commerce and access to visitors. The city’s waterfront cannot replace the bridge’s
access because Rekkenmark sits atop steep cliffs
overlooking the sound. In addition, few elemental
[[airship]]s forgo the relatively near and more important
berths in [[Korth]] to stop at the border city. Despite all
these hindrances, the people refuse to give up; plans
to rebuild the great bridge fill them with hope that
better days lie ahead.
Until the [[Last War]], the
Rekkenmark Academy was the premier military school for well-born sons and daughters all over [[Galifar]]. It offered a full education but focused on
leadership principles, strategy, and warfare, based largely on the lessons of the [[Analects of War]]. Graduating from this school was a mark of pride for a student
and their family.

The [[Last War]] and [[Rekkenmark]]’s isolation all but
destroyed the institute. No parents outside [[Karrnath]]
wanted to send their children to an active
war zone, and few of Karrnath’s noble families were
willing to enroll their children in an academy that
was behind enemy lines for years at a time. The academy was shut down during the war, and enrollment remains low to this day.
The Rekkenwood is a small forest in [[Karrnath]], near [[Rekkenmark]].
Religion plays an important role in [[Eberron]]. The gods
don't manifest physically, but people of faith believe that
divine forces shape everyday life. Shared beliefs unite
communities and can provide hope in difficult times.

Most Khorvairians acknowledge the pantheon of
the [[Sovereign Host]] and its malign shadow, the [[Dark Six]]. The Sovereign Host was the dominant faith of the
Kingdom of [[Galifar]] and holds sway over most of [[Khorvaire]]—except for [[Thrane]], which favors the Church of the
[[Silver Flame]]. Other religions connect specific cultures
or communities; the [[kalashtar]] observe the [[Path of Light]],
and the [[Undying Court]] guides the [[elves|Aereni]] of [[Aerenal]].

Religion is especially important for a [[paladin]], [[cleric]],
or [[druid]], yet any character can have faith in a higher
power. Following a religion is a way to give your character a deeper connection to the world and a bond to other
members of the community. The Foundation of Faith
table can provide ideas for the source of your beliefs.

| !<<dr d6>> |!Foundation of Faith |
| 1 |You were raised in the faith. Your religion is an important part of your family and community. |
| 2 |Someone you care about—a mentor, a friend, or a lover—introduced you to the faith. |
| 3 |You were raised in a different religion but became drawn to the ideals and beliefs of your current faith. |
| 4 |You never took your faith seriously. Then you made a vow during the [[Last War]], pledging your devotion if a disaster was averted... and it was. |
| 5 |You're devoted to your religion, but you've never been formally educated in its ways. You follow your own personal interpretation. |
| 6 |You had a transcendental experience and believe you have a divine purpose to fulfill. |

Conversely, a lack of faith can also be a meaningful
part of your story. If you don't believe in any divine
power, what caused such doubt? The Rejection of Faith
table offers ideas that can help shape your story. 

| !<<dr d6>> |!Rejection of Faith |
| 1 |You believe that the magic of [[cleric]]s and [[paladin]]s doesn't come from deities, but from the caster's inner power or belief. |
| 2 |You come from an agnostic community and give little thought to spiritual matters. |
| 3 |You were once deeply devout, but a tragedy during the [[Last War]] caused you to question your faith. |
| 4 |A personal loss or betrayal shook your faith. |
| 5 |You were spiritually scarred by an encounter with a [[fiend]] or [[aberration]]. |
| 6 |You've created your own personal religion and believe that all the established faiths are flawed. |

!! Religions in Eberron

<<list-links-article "[tag{!!title}!title[Becoming God]sort[title]] -[tag{!!title}tagging[]]">>
At your touch, all curses affecting one creature or object end. If the object is a cursed [[magic item]], its curse remains, but the spell breaks its owner's attunement to the object so it can be removed or discarded.
A reparation apparatus enhances the [[mending]] ability of a person with the [[Mark of Making]]. 

This item fits over the hand like a fingerless gauntlet, and numerous implements sprout from it. A golden Siberys [[dragonshard]] is mounted at the wrist, and engravings on the metal of the gauntlet resemble the pattern within the shard. When the item is activated, the implements spring to life, helping to repair any object the mark wielder is working on.

The [[mending]] takes half the time or less, and can be used to repair breaks or tears up to 5 feet in any dimension. The wearer can reassemble any number of broken fragments of an object which can fit inside a 1-foot cube. The apparatus can also be used to remove scratches and rust from metal objects, and restore burned cloth and leather as long as 80% of it is intact.

An uncommon-rarity version of the reparation apparatus exists that can assist a Making mark wielder to repair breaks or tears up to 10 feet in any dimension, or reassemble any number of broken fragments of an object that can fit inside a 5-foot cube.
This shining golden circlet glows with holy light. When worn, it hovers above the wearer's head like a halo.

While worn, this halo gives the wearer an intense holy aura. If the wearer is capable of casting [[divine magic]], they can cast [[divine favor]] and [[radiant wave]].
Priests of the Restful Watch specialize in embalming, funerals,
and cemetery maintenance. They can be found in every major
city in the [[Five Nations]], and even smaller towns may have a
devotee of the Watch tending the boneyard. The Restful Watch
maintains that the souls of the dead pass through [[Dolurrh]] into
the realm of the [[Sovereigns|Sovereign Host]]—unless they are snatched by the
[[Keeper]]'s greedy talons. One of a priest's most important duties
is helping bereaved choose appropriate grave goods or sacrifices
sufficient to distract the Keeper and ensure the deceased's soul
reaches Dolurrh. For a simple person with few achievements,
a single coin might suffice. But the more remarkable the
deceased, the greater interest the Keeper will have in their
soul—requiring a more significant sacrifice to distract him.

Faithful of the Watch rarely discuss another aspect of their
faith with outsiders—that once a soul rises to the realm of the
Sovereigns, it can never return. The Restful Watch believes that
if [[Aureon]] knows that a dead hero will be needed in the future,
he has the [[Keeper]] snatch the soul before it reaches [[Dolurrh]], so
it can be restored when the time is right. Thus, while the Restful
Watch primarily reveres Aureon, they also understand and
respect the Keeper, and believe that he serves a vital purpose.

!! Player Character Options

Members of the Watch often serve as mediums and exorcists,
considering it a sacred duty to lay restless spirits to rest. 

The Restful Watch believes that Aureon is preserving the souls of heroes in preparation for an apocalyptic conflict that lies ahead. It's said that this will involve
the collapse of the [[Silver Flame]] and the subsequent unleashing
of the dreadful [[overlord]]s. You may have been sent out in the
world to watch for signs that this conflict is coming to pass;
this could require you to investigate the [[Mournland]] or clash
with the [[Lords of Dust]].

The Restful Watch also occasionally identifies people they
believe [[Aureon]] has marked as a hero whose soul will be
preserved. This could be one of your fellow adventurers—and
as an acolyte or sage of the Restful Watch, you've been assigned
to follow this person around, chronicling their life and making
sure to perform the appropriate rituals when they die. //“Don't mind me, I'm just going to follow you around until your heroic death. Trust me, you're going to accomplish amazing things!”//
With a touch, you restore a creature's health by removing a temporary or mild affliction. These include temporary blindness or deafness, mild poisoning, or common diseases.

If you can cast rare-tier spells, you can cast this as such to remove more serious afflictions, including petrification, curses, extreme exhaustion, or magical diseases. Performing a greater restoration requires the expenditure of material components worth about 10c.
This spell requires a one-hour ritual and 100c worth of ritual components, which are expended.

You touch a dead creature that has been dead for no more than a century, that didn't die of old age, and that isn't [[undead]]. If its soul is free and willing, the target returns to life.

This spell neutralizes any poisons and cures nonmagical diseases afflicting the creature when it died. It doesn't, however, remove magical diseases, curses, and the like; if such effects aren't removed prior to casting the spell, they afflict the target on its return to life.

This spell closes all mortal wounds and restores any missing body parts.

Coming back from the dead is an ordeal. The target must spend at least a week recovering before returning to their former strength. In addition, casting this spell to restore life to a creature that has been dead for one year or longer taxes the spellcaster greatly. For up to 24 hours, you can't cast spells again, and are at a disadvantage for all actions.

Performing this spell is risky; drawing a spirit back from [[Dolurrh]] might catch the attention of a Dolurrhi [[marut]], or even bring back the wrong spirit, causing a ghost to manifest or ending up with a hostile personality in your friend's body. This is why [[Jorasco]] healers capable of resurrection typically cast [[augury]] first, and will refuse service if the result is "woe". For more information, see the "Concerning Resurrection" section of [[Dolurrh]].
While holding this tuning fork, you can tap
it against an instrument and cause it to be instantly tuned. 
! The Book

''Color:'' Pale blue<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Scribing|Mark of Scribing]]<br/>
''Associated Plane:'' [[Thelanis]]

The smallest of [[Eberron]]'s [[moon]]s, Rhaan looks more like a bright star. When viewed with a spyglass, one may see a series of ridges that vaguely resemble scribblings on a page. The [[druid]]s say that Rhaan empowers creative thought, and they believe that dancers, musicians, poets, and artists of all stripes draw inspiration from the Book.
Rhashaak is an ancient [[black dragon]] and guardian of the wards that bind the [[overlord]] [[Masvirik]], in its prison in [[Haka'torvhak]]. Although he remains bound to that duty, he has been corrupted by his task, and serves as the voice of the archfiend. Today, dragon magic keeps the presence beneath the volcano quiet, but
Haka'torvhak is home to lesser [[fiend]]s that are subject
to Rhashaak’s will.

The [[Poison Dusk]] has worshipped Rhashaak for generations.
Rhesh Turakbar is [[minotaur]] [[warlord]] of [[Droaam]] who commands a clan of [[demon]]-worshipping barbarians from the fortress of [[Turakbar's Fist]]. He is a massive creature covered in dark fur and scars, as well as fiendish body modifications.

Rhesh follows the demon lord known as the Horned Prince, thought to be an aspect of the [[Rage of War|Rak Tulkhesh]]. Many of
the victims of Turakbar raids are brutally sacrificed
to slake the blood thirst of the [[overlord]] of [[minotaur]]s.
Rhesh and his followers are said to wield [[demon]]ic
power bestowed by their dark lord. They believe the Horned Prince's favored servants are the [[goristro]]s, and file their teeth to jagged points to better resemble them.

Though the [[Daughters of Sora Kell]] tolerate Rhesh Turakbar, they and the minotaur
are not strong allies. However, the warlord’s bloody
sorties into western [[Breland]] are useful to the hags,
since they provide critical information on the state of
Breland’s defenses—and stoke the fear of a full-scale
[[Droaam]] invasion that grips that land.
The Rhiakelne River in [[Sarlona]] flows from [[Kelneluun]] into [[Rhialuun]], connecting the continent's two massive inland lakes.
Rhialuun is a large inland sea in central [[Sarlona]], located between the [[Riedra]]n provinces of [[Rhiavhaar]] and [[Nulakesh]].
The coastal nation of Rhiavhaar was the homeland of
[[Lhazaar]], the "explorer" who paved the way for the human
settlement of [[Khorvaire]]. The sailors of Rhiavhaar often
took to slaving and piracy, and Rhiavhaarian ships were
feared throughout the [[Sea of Rage]]. Today this region is the
westernmost outpost of [[Riedra]], and authorized trade with
[[Q'barra]] and the [[Lhazaar Principalities]] passes through
the old Rhiavhaar port of [[Dar Ulatesh]]. Rhiavhaar is an
important hub for the Riedran navy—known as the [[Harmonious Sail]]—and a gateway to Khorvaire, so significant military forces are deployed here. The [[Thousand Eyes]] are
especially active in this region.

The province of Rhiavhaar includes the [[Aventus Islands]], which serve as a staging area for the Harmonious Sail. These islands hold ruins of the lost [[aventi]] nation,
but the [[Riedrans]] shun these areas.

Although the province seems to be under the thumb
of the [[Inspired]], having a high concentration of spies and
secret police, the Rhiavhaarians aren't as devoted as the
[[Corvagura]]ns. A variety of dissidents hide here. 
The Rhiavhaar River in the [[Riedra]]n province of [[Rhiavhaar]] flows from [[Rhialuun]] into [[Rhlash Bay]]. 
Rhlash Bay is part of the [[Sea of Rage]] off the west coast of [[Sarlona]]. It is fed by the [[Rhiavhaar River]]. The [[Thousand Eyes]] of [[Riedra]] observe all ship activity in the bay via their fortress at [[Kintam Rhlash]].
The Rhlia Forest is locaed in central [[Corvagura]], [[Riedra]], near the city of [[Dar Myan]].
The largest city in [[Darguun]] serves as the seat of Lhesh
[[Haruuc Shaarat'kor]]. As the hub for trade, travel, and
diplomacy, it also a provides a haven for fugitives and
smugglers. 

The heart of Rhukaan Draal was once a frontier [[Cyran|Cyre]] town; over the
last two decades it has grown into a sprawling [[goblinoid]]
metropolis. Rough yet functional [[Ghaal'dar]] architecture
creates a city of patchwork styles and materials. The most
impressive structure is the royal palace; dissatisfied with
the work of his kindred, the Lhesh [[Haruuc|Haruuc Shaarat'kor]] hired the stonemasons of House [[Cannith]] to build his home and fortress, called //Khaar Mbar’ost//, or Red House (literally, “blood-colored fortified dwelling”). This ten-story tower of red granite dominates the skyline of Rhukaan Draal. Virtually all the [[hobgoblin]] clans have representatives at Haruuc’s court, though the [[Dhakaani clans|Heirs of Dhakaan]] maintain a particularly low profile; their agents monitor events for their lords but try not to attract attention to the activities of their clans.

House [[Deneith]] occupies
a large [[enclave]] in Rhukaan Draal, as well as maintaining the nearby [[Gathering Stone]]—a fortress that serves as a staging area for goblins interested in selling their
services to the house. House [[Tharashk]] has also established an outpost here, but their racial heritage works against them; throughout the history
of [[Dhakaan]], [[orc]]s and [[goblin]]s were mortal enemies,
and the [[Darguuls|Darguun]] still harbor strong prejudices
against orcs and their kin.
This magically gifted member of the [[Broken Throne]] in [[Dar Jin]] might be a street sweeper, a dock worker, a clerk in the
[[Mercantile Center]], or in any number of other guises. If
the PCs come to his attention, Rhuun might seek them out,
perhaps asking their help in exploring a ruin of the [[Twelve Kingdoms|Sarlonan province]]. Of course, while Rhuun claims to be a Broken Throne devotee seeking to restore lost knowledge, he could in fact be one of the [[Heirs of Ohr Kaluun]]—in which case he
could be considerably more powerful and dangerous. 
''Capital:'' [[Durat Tal]]<br/>
''Hallmarks:'' [[Inspired]], [[psionics]], agriculture, peace, [[monoliths|hanbalani alta]], [[crysteel]] 

Monolithic Riedra, also called the “Land of Unity”
and the “Land of the Inspired,” now stands where
once many human nations squabbled for power.
Riedra is ruled by the [[quori]]—spirits of nightmare who
reached out from [[Dal Quor]], the Region of Dreams, to
dominate [[Sarlona]] through psionic obfuscation and
control. Although Riedra appears to be peaceful and
orderly, this image is a lie perpetrated by the [[quori]],
who possess the [[Inspired]] leaders of Riedra. 

!! History of Riedra

Three thousand years ago there were a [[dozen kingdoms|Sarlonan province]] in
[[Sarlona]]. Today there is only one: the empire of Riedra.
The change began some fifteen hundred years ago, when
the [[quori]] first came to Sarlona. Initially, the quori spirits
could not completely dominate their hosts. Instead, they
could only whisper into susceptible minds, fanning ambitions and aggravating existing feuds. Within two centuries, Sarlona had collapsed into [[chaos and war|Sundering]]. By this point,
the quori had full control over a handful of hosts, enabling
them to produce the first of the [[Inspired]]. These [[psions|psionics]]
and psychic warriors stepped into the political void, using
their mental powers to systematically seize control from
the weakened warlords.

They proclaimed themselves to be souls inspired
by divine forces, sent to guide [[Sarlona]] to a new age of prosperity and glory. All they required was absolute loyalty. It took another two centuries of mental manipulation, military conflict, and pure guile, but when the
battles finally ended, the [[Inspired]] held sway over all
of lowland [[Sarlona]]. They named this empire Riedra.
For the next thousand years, the Inspired consolidated
their power, strengthening their hold on the people
of Riedra. They purged the land of any traditions that
could be a threat to their power—notably any form of
magic, which could provide the people with a counter to
the natural [[psionic|psionics]] powers of the Inspired—and hunting down the [[kalashtar]], who had unwittingly shown the
[[quori]] the path to [[Eberron]]. Some of their enemies took
refuge in the mountains of [[Adar]]; others fled to [[Khorvaire]], settling in the kingdoms of the [[Five Nations]] or
establishing new colonies in the [[Shadow Marches]] or the
[[Demon Wastes]].

For the past thousand years, the borders of Riedra have
been closed to foreigners. Even today, the [[Inspired]] have
no interest in allowing the people of other nations to spoil
their terrestrial paradise. But after centuries of scheming
and planning, the Inspired are finally beginning to turn
their attention to [[Khorvaire]], and Riedran ambassadors
can be found in courts across the continent.

!! Riedra Today

The Inspired hide their secrets well. Those who have
managed to breach the borders of Riedra speak of titanic
monoliths that lie within. The sages of the [[Twelve]] believe
that these monoliths enhance the psionic powers of the
Inspired, drawing on the mental energy of the populace
in order to supply their masters with vitality.

The [[people of Riedra|Riedrans]] follow the [[Path of Inspiration]] and believe that the [[Inspired]] are divine avatars, sent to guide and protect their nation. Most are willing to die for their Inspired lords. Most communities are agricultural villages, designed to be as self-sufficient as possible. Inspired overseers manage the work force. A
vast fortress-metropolis at the center of each web of villages
is home to the bulk of the armed forces of the region and
the high-ranking Inspired nobles.

!! Interesting Things about Riedra

* The members of the sinister network of the [[Dreaming Dark]] serves as the eyes of [[Dal Quor]]. They are spies, saboteurs, and psychic assassins. These agents receive their orders directly from the [[quori]] on Dal Quor and have considerable authority among the [[Inspired]].
* Where the Dreaming Dark works to undermine other civilizations, the members of the [[Thousand Eyes]] protect Riedra itself. They observe the people of Riedra, seeking any sign of internal dissension or outside infiltration. Any time a threat is identified, the Eyes strike without warning or mercy. 

!! Everyday Psionics

In [[Khorvaire]], [[arcane magic]] is part of everyday life; [[magewright]]s are found in most villages. In Riedra, both magic and [[psionic|psionics]] power are tightly controlled
and largely confined to the [[Inspired]] and the [[Chosen]].
However, a few psionic effects have an impact on daily
life. For the people of Riedra, such wonders are proof of the miraculous power
of their benevolent overlords.

All of these functions draw power from the [[hanbalani alta]]s, the massive monoliths spread across the nation. If a
monolith is shut down or destroyed, any community tied
to it loses access to these functions.

These are the most common effects, but the
[[Inspired]] can develop new techniques, and you should
feel free to invent effects unique to a specific bastion or
village. A bastion might have an inner sanctum shielded
by an impenetrable wall of ectoplasm; the only way to get
past this field is to shut down the local monolith. 

* [[Riedran climate control]]
* [[crystal illumination]]
* [[dreamshaping]]
* [[psionic scry shielding]]
* teleportation between bastion cities and fortresses
* the [[Soothing Voice]]

!! Provinces, Spheres, and Bastions

The eight [[provinces|Sarlonan province]] of Riedra are divided into territories known as "spheres". A sphere is a circular region centered on a fortress-city called a bastion, which is ruled by a particular [[Inspired]] lord. The territory takes its name from its master—the city of [[Durat Tal]] is in the Sphere of [[Surasek]],
in the province of [[Corvagura]]. All Inspired hold the title
of Lord or Lady; the ultimate leader of a bastion carries
the title of Eidolon.

The typical bastion is a metropolis, and many of them
rival [[Sharn]] in population. They are centers of industrial
production, supporting the bulk of a sphere's troops.

Surrounding a bastion is a network of villages,
spread out in as orderly a manner as possible, taking
environmental factors and resources into account. A
sphere contains dozens of villages. Most villages focus
on agriculture and simple industry. Although some
variance in styles and customs exists from province to
province, villages within a sphere are virtually identical. No thorps, hamlets, or towns can be found—when a
populations rises to a sufficient level, the Inspired draw
off the excess to create a new village.

Riedran villages are functional and ascetic in
design. The [[community|Riedrans]] is centered around a building
that serves as a dining hall and a public assembly, where
people gather to listen to the sermons of the local priest
or to hear stories of the glorious deeds of the [[Inspired]].
Villagers live in communal dormitories, with separate
houses for children.

While [[Riedra]] has no [[lightning rail]], villages and
spheres are linked by a comprehensive network of maintained roads. The [[Inspired]] also have a secret system of psionic teleportation circles at their disposal, passing through the central hub of [[Durat Tal]]. The number of gates is
limited. The [[Inspired]] can teleport cargo directly from
[[Dar Jin]] to Durat Tal, but getting those goods to the village of Keloor requires a caravan. 

!!! Notable Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]:filter[get[text]length[]compare:integer:gt[300]]">>

!!! Notable Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[300]]">>

!! Who Rules Riedra

The rulers of Riedra are the [[quori]]. All important decisions concerning the fate of the nation are made in [[Dal Quor]]. The bastion lords don't gather in Riedra to debate
policy, because such councils are held in Dal Quor. To
a foreigner, it seems that the bastion lords and generals
of the [[Harmonious Shield]] operate unilaterally; however,
they all act in perfect accord with the plans formulated
in the Region of Dreams.

While the destiny of Riedra is set in dreams, a complex
bureaucracy manages its daily affairs. The [[Inspired]] hold
the top tier. A powerful Inspired noble rules each bastion
city, and Inspired serve as generals, ambassadors, inquisitors, and high ministers. Although mighty Inspired are
rare, lesser Inspired serve throughout society, in positions
where trust or psionic power are required.

Beholden to the Inspired, the [[Chosen]] dedicate themselves to being worthy of inhabitation by an [[il-altas|Path of Inspiration]]. They manage the bulk of the administration of Riedra, also serving as officers in the military. Chosen overseers govern most villages. The most important positions are granted to
Chosen who served as Inspired before their quori spirits
moved on to other hosts; after decades of possession, the
minds of these individuals have been molded by the quori,
and they are fully trusted by the overlords.

Whether [[Inspired]], [[Chosen]], or commoner, [[Riedrans]]
serve in one of four groups: the [[Unity]], the [[Thousand Eyes]],
the [[Harmonious Shield]], or the [[Dreaming Dark]]. 

See also [[Laws of Riedra]].

!! Riedra and Khorvaire

The first contact between the [[Five Nations]] of [[Khorvaire]] and Riedra occurred
on the neutral ground of [[Xen'drik]], and much trade has
passed through this gateway. During the [[Last War]], Riedra
provided nonmilitary assistance to many of the warring nations. [[Inspired]] ambassadors came to the courts of the Five Nations, occasionally serving as mediators
between opposing forces. Seen as impartial outsiders,
they're respected for their apparent wisdom and empathy.
During this time, the [[Dreaming Dark]] gained a foothold
in Khorvaire. For the last century its agents have been
spreading across the continent, sowing dissension and
subverting agents for future use.

Today, [[Inspired]] ambassadors can be found in every
major metropolis and many of the lesser large cities of Khorvaire.
Most ports have small Riedran communities. Riedran
goods are becoming more common. On the sordid side of trade, the sale of [[dreamlily]] has become a major industry in the underworld of Khorvaire.

While the Inspired have been providing material
aid to many nations, their strongest foothold in Khorvaire is in [[Q'barra]]. King [[Sebastes|Sebastes ir'Kesslan]] is currently receiving military support from Riedra; the [[Harmonious Shield]] has established garrisons in the region around
[[Newthrone]] to help defend the settlers from [[lizardfolk]]
attacks. In the process, they are working to spread Riedran values. Rumors say that construction has begun on
a [[hanbalan|hanbalani alta]].

Given their extensive presence, the Inspired have
much to offer. If war looms anew, [[Aundair]] could seek
Riedran aid to defend itself from the larger armies of
[[Thrane]] or [[Karrnath]]. A desperate move, certainly, but
perhaps Queen [[Aurala|Aurala ir'Wynarn]] will be swayed by vivid dreams of
the power such an alliance might bring.

Kings and queens are not the only people who deal
with the [[Inspired]]. Even though Riedran commoners
rarely mingle with foreigners, Inspired ambassadors
and their staff are active in their communities. Exotic
and clever, these beautiful strangers fascinate the upper
crust of [[Khorvaire]]. In [[Sharn]], Ambassador [[Jorasesh]] often
gives impromptu lectures at [[Morgrave University]]. Both
Jorasesh and his aide [[Helkashtai]] can be found at all of
the major galas and social events of the city.

Although the Inspired have extended their hand
to Khorvaire, they have been reluctant to let foreigners visit Riedra. It is only recently that any outsider has been granted permission to venture beyond the foreign
quarter of [[Dar Jin]] and [[Dar Ulatesh]].

!! Getting There

The borders of Riedra have been closed for a thousand
years. However, the [[Inspired]] have recently softened
this policy of isolation. The foreign quarters of [[Dar Jin]]
and [[Dar Ulatesh]] were established to serve as centers for
international commerce. A few scholarly expeditions
have been allowed to venture into the heart of the land.
With this precedent, it is possible for outsiders to travel
into Riedra legally, but it's not easy. 

In order to explore Riedra, a traveler must acquire
a transit visa from the [[Iron Gate]], the foreign relations
office, in [[Dar Jin]] or [[Dar Ulatesh]]. This scroll provides
a description of the travelers, states the nature of their
business, and delineates any restrictions on travel. A
bearer might be limited to traveling in specific provinces
or spheres, and the visa usually has a set expiration date. The document is notarized with a [[sentira]] seal, a [[psionic|psionics]] sigil that carries the thought-signature of the [[Inspired]]. Every patrol challenges foreigners abroad in Riedra, and every
village overseer asks to see their visas. 

The [[Iron Gate]] does not charge for transit visas, but
it rarely grants them. Riedra isn't for tourists. Travelers
must provide a valid reason for entry and show that they
have no criminal tendencies or intent, as well as enough
knowledge to avoid accidentally breaking [[Riedran laws|Laws of Riedra]]. Finally, [[mind probe]] is often brought into play to ensure that the travelers have no
hidden motives. If the request is especially intriguing or
risky, the [[Iron Gate]] might allow travel but send a member
of the [[Thousand Eyes]] along as a chaperone and observer.
Unless the party is deemed a serious risk, this observer
is a [[Chosen]]; the controlling spirit only takes possession
of the vessel every few hours to check on the situation.

Travelers who have shady connections and talents can acquire a notarized parchment from the [[Dream Merchants]] for 20 c. Once they have the sentira seal, travelers can either forge the visa or pay another 5 c to have one forged by the merchants. In this latter case, someone examining the document must closely examine it to discern the falsity of the visa.

Once out into wider Riedra, foreigners face other
problems. Most of the [[people|Riedrans]] speak only Riedran and are
illiterate. They possess the skills the [[Inspired]] deem necessary. Military officers, overseers, priests, and members of the [[Iron Gate]] are all literate, and some speak Common or Quori. Riedrans avoid all contact with foreigners, and
they are typically unfriendly.

Supplies pose another challenge. No inns exist in Riedra. Every village has a dormitory reserved for Riedran travelers and troops, and a transit visa might specify
that the bearers should be given access to such shelter.
Otherwise, travelers must contend with the unfriendly attitude of a local overseer. Food is provided along with shelter, but travelers can't buy goods, since money is an alien concept to Riedran villagers. The wilderness survival skills are the simplest way to get along in Riedra, allowing travelers
to live off the land.

Travel is safe along the main roads of Riedra. Soldiers
patrol regularly, and most monsters were wiped out long
ago. Danger rises when one strays too far from the roads.
After a thousand years of silence and secrecy, the
[[Inspired]] have emerged from the shadows of
[[Sarlona]]. [[Riedra]] itself remains a mystery; visitors are not welcome in the land of the Inspired. But the ambassadors of Riedra can be found in all of the
courts of [[Khorvaire]]. They are charming and urbane,
generous with gifts and eager to help the nations of
Khorvaire recover from the physical and psychological damage of the [[Last War]]. Most are happy to receive the assistance of the Riedrans. But there are some who wonder about the true motives of the Inspired—some who suspect that the lords of the silent empire
are preparing to expand their dominion. 

Ambassador [[Jorasesh]] is the [[Inspired]] diplomat who manages the embassy. Most of the other members of the embassy staff are
[[human]]s from Riedra. Chosen for their complete
loyalty to the Inspired, these people rarely speak
to outsiders; many do not even understand the
Common tongue. In addition to scribes, servants,
and soldiers, the embassy staff includes the following
special operatives:

* [[Maleshari]]
* [[Helkashtai]]
* [[Minharkhad]]
The [[hanbalani|hanbalani alta]] network in [[Riedra]] provides [[psionic|psionics]] power for many functions that promote order and provide comfort to the [[populace|Riedrans]]. One of these functions is climate control. [[Inspired]] architects have developed crystal plating that, through kinetic manipulation,
can be heated or cooled and can even draw moisture out
of the air. This effect uses considerable power, and it's
rarely seen outside the palaces of the [[Inspired]] or the
[[Chosen]]. Nonetheless, in the tropical climate of [[Corvagura]], entering a cool, dry palace can have a considerable impact on a traveler. 
Over centuries, the [[Inspired]] have built a network of monoliths
in [[Riedra]], psychic anchors called [[hanbalani alta]]s. These allow
them to control everyone's dreams over a vast radius. Dreams
are typically tailored to the region, including local news and
instructions. However, if they choose, the Inspired can broadcast
a single dream to all of [[Sarlona]]. Within [[Dal Quor]], this manifests as a distinctive region of the [[Ocean of Dreams]]—an array of
hundreds of thousands of islands, dream-bubbles arranged in
perfect symmetrical rows, with identical images in each bubble.
The hallmark of all people of [[Riedra]] is devotion, unswerving dedication to country, companions, and work. Each Riedran's
path has been laid out by those wiser than she is, and it
is a road that leads to eternal salvation. Her challenge is
to resist the temptations the cunning //altavars// place in her
way—temptations such as the words of foreigners, who
could attempt to turn her against the glorious [[Inspired]].

At its heart, [[Riedra]] is a cult. Its people have been
brainwashed from birth; the [[hanbalani|hanbalani alta]] shape the dreams of
children before they can even speak. Anyone who would
challenge the [[Inspired]] swiftly vanishes, so most people
never hear opposing views. Even if they did, they would
fear such words as deadly blasphemy.

The people of [[Riedra]] truly love the [[Inspired]], and
they love their lives. Most Riedrans don't want to be rescued from the Inspired; they consider the "freedom" so treasured by foreigners to be a weakness that threatens
the evolution of the soul. A Riedran farmer has a roof over his head, food on the table, and clothes on his back. He might not be able to live wherever he wants, choose
his food, or even pick the color of his clothes, but in his
eyes, he has a good life, secure and stable. He doesn't need
luxuries in this world. Such things are certainly tempting, but it is by resisting that temptation that he ensures his advancement in the next life.

Riedrans place high value on honesty and community; the [[Path of Inspiration]] says, "A liar sells his soul with every word." A follower of the Path strives to be honest and
to be a good neighbor, contributing to both their village
and their nation. A Riedran always helps out a fellow citizen
unless that person advocates a course of action that goes
against the Path of Inspiration.

Work means everything to Riedrans. Each vocation
and task is a lesson to be mastered for forward movement
on the Path. Riedrans work long hours without complaint,
and they often regret having to leave work to participate
in community activities. This devotion often means that
Riedrans are surprisingly skilled at their professions, but
they lack versatility.

Time away from work is usually spent with other
members of the community. Riedrans dine together in
central halls, participate in group athletic exercises,
and gather in the evenings for storytelling and religious
instruction. They are allowed a brief amount of unstructured time each day, ostensibly for meditation on the day's events; however, many prefer to remain among friends
even during this private time. Privacy is not something
the Riedrans treasure—solitude can be a painful and
disturbing experience for a Riedran.

Young Riedrans are raised communally. They are
often transported to new villages as soon as they are old
enough to travel, to prevent birth parents from forming an
unhealthy bond with the child. Youths live in segregated
dormitories, tended by dedicated caregivers (part of the [[Guiding Path]]). As they grow, children serve as apprentices to other members of the community, allowing
the caregivers and priest to determine their aptitudes. A
youth is usually set on his path in his thirteenth year and
moves into an adult dormitory at this time.

At eighteen, a Riedran is "paired" with another. This
is the Riedran equivalent of marriage, and the pair occupies the same dormitory. Those in control of this process, the pathfinders, prefer for people to be pleased with their
bonding, and thus they accept mutual requests. Still, pairing is done for the sake of producing children, and if two people are genetically incompatible, their pairing isn't
allowed. Riedrans are expected to be monogamous, and
sex outside of a pairing relationship is punished. 

Riedrans control strong emotions and focus their
energy in positive ways. Religious ceremonies provide an
outlet for emotion under the guidance of the local priest.
In these rituals, people are instructed to unleash a particular emotion in response to a recent event. For example, if another villager has succumbed to spiritual corruption
and been taken by the [[Thousand Eyes]], the people gather
to feel pity, sorrow, and hope for their lost companion. If
news comes of [[kalashtar]] treachery, people gather to unleash
anger and hate. Between these periods of release, people
are expected to keep their emotions under control or to
speak with a priest if they cannot.

Xenophobia is common in Riedra. Violent and chaotic,
foreigners practice dark magic, eat the flesh of beasts, and
destroy their nations in the name of "freedom." Foreigners should be pitied. Lacking the direction of the [[Inspired]], they have no protection against the //altavars//. It is only natural that they fall prey to lust, greed, and other lower emotions.
Nonetheless, they are like wild animals and cannot be
trusted. A Riedran must always be wary when dealing with
foreigners, never allowing them to sway her from her path.

!! Riedran Names and Speech

Family is downplayed in Riedra: loyalty to the nation is
more important than any bond of blood. As such, Riedrans do not use surnames. If additional identification
is required, a Riedran gives the name of his village or, if
he lives in a bastion city, the ward he resides in.

//''Masculine Names:''// Aan, Aleel, Bhiman, Bhalaan,
Dalaan, Danan, Fuulgan, Gurhaak, Gusan, Helac,
Heruun, Jharee, Jukyan, Julaan, Ilaan, Heel, Khern,
Kyamun, Kyaruun, Lanan, Leel, Olaan, Oleel, Rhaak,
Rhuun, Sulaan, Suyamun, Taan, Tulac, Vusgaar.<br/>
//''Feminine Names:''// Aali, Aag, Bhuji, Biir, Duaali, Dujiira, Dujyag, Gilaali, Jhaasha, Jhalaar, Jhazala, Khelaar,
Khuliira, Lhazaar, Manaar, Miir, Quaali, Quush, Palaar,
Praagya, Shiazala, Shiaali, Tyag, Tyalaar, Vyed, Vyuji. 

The [[Inspired]] often choose to keep an aspect of their
[[Chosen]] host's name; when Julaan is inspired by Gatesh,
he might take the name Julgatesh. However, this practice
varies from spirit to spirit, and is always the choice of the
[[quori]]. Inspired attached to the [[Dreaming Dark]] sometimes
adopt [[kalashtar]] names as a way of mocking their prey.

The use of double vowels is traditional in many
parts of Riedra. In the Riedran language, it is typical
for both vowels to be given a distinct sound; a Riedran
pronounces "Lhazaar" as a three-syllable word. However,
most of the people of [[Khorvaire]] are unfamiliar with this
custom and simply extend the vowel sound.

!!! Phrases

Riedrans are raised not to fidget, to stand
perfectly still when talking. It is considered a token of
respect to meet the gaze of someone you are speaking
to. Riedrans never verbally interrupt a speaker, but they
indicate intent with their gaze, looking down if they have a
comment to make, looking to the side if they disagree with
the speaker or are not interested in what he has to say. The
degree of motion is as expressive as tone of voice. Thus,
Riedrans often maintain an outward appearance of calm,
but a sharp turn of the head can be the same as a yell.

The following turns of phrase are uniquely Riedran.

* "//Follow the Path.//" The most basic maxim of the [[Path of Inspiration]]; also used as a polite form of farewell.
* "//The fish does not seek to fly.//" A proverb encouraging the listener to accept the life he has been given and learn the lessons set before him; often said when someone suggests change.
* "//Gold is the tongue of the altavar.//" A maxim against greed or any other form of temptation; a warning that anything that could pull a Riedran from the Path is likely to be the work of evil spirits.
* "//No one is alone.//" As reassurance, a reminder that a Riedran always has his community, the [[Voice|Soothing Voice]], and the Inspired behind him; as warning, a reminder that the [[Thousand Eyes]] is always watching.
* "//Lesson of (pain/grief/anger/joy).//" A reserved way to express emotion about a situation, whether frustration or pleasure. Whether good or bad, everything is a lesson.
* "//Darkspirits!//" or "//Altavar!//" An aggressive statement of frustration—one that is discouraged in daily use. 

!! Riedran Religion

Only one religion is tolerated in [[Riedra]]—the [[Path of Inspiration]]. Its practice is mandatory. Omnipresent yet subtle, the Path is easily overlooked. For a Riedran, work
is worship, and life itself is an act of devotion. According
to the Path of Inspiration, dedicated and hard-working
souls ascend a ladder of spiritual evolution over the course
of many lifetimes, traveling from beast, to nonhuman,
to [[human]], to [[changeling]], to [[Chosen]], to the //il-altas//—the
"great spirits" that cannot be perceived in this world, but
that continue to guide lesser beings by acting through
the [[Inspired]]. A follower of the Path should embrace the
life he is given and learn the lessons he is meant to learn from it, resisting the temptation to rise above his station or change his lot in life.

For the [[Inspired]], this system accomplishes many ends. It encourages citizens not to question their roles in life—spiritual advancement is the goal, and only by following the path set forth by the //il-altas// (as announced by the Inspired) can such advancement be attained. It also allows the Inspired to fail without shattering their status in the eyes
of the people. The Inspired are mortal vessels of godlike
beings, not actual gods, and any defeats or setbacks are the
fault of the vessel. Finally, it contains just enough truth to
weaken any attempts to expose the true nature of the [[quori]].
The Riedrans know that their rulers are possessed by outsiders, and using banishment to drive out the possessing spirit proves nothing aside from the fact that the exorcist is a foul being to challenge the noble //il-altas//. Since most Riedrans
fear or at least distrust magic, they are unlikely to accept
the evidence provided by [[spell]]s that reveal the true nature of the quori.

Riedrans are warned to beware of the //altavars//, spirits
that have fallen off the [[Path of Inspiration]]. These beings
suffer eternal torment and assuage their pain by corrupting and torturing others. The precepts of the Path teach that the "gods" worshiped by other cultures are in fact
altavars, and that these dark spirits are also the source of [[arcane magic]]. As a result, Riedrans are taught to fear and despise arcanists and priests of other religions.

No temples have been erected to the Path of Inspiration; the holiest sites are the palaces of the [[Inspired]] and
the [[hanbalani|hanbalani alta]]. On days of celebration, people often gather
around the nearest monolith to join their thoughts (in the
process, unwittingly channeling more of their spiritual
energy to [[Dal Quor]]). Priests of the Path of Inspiration
are charged with maintaining discipline and morale among the people of their communities. Only the most loyal priests are entrusted with [[divine magic]]. [[Inspired]] can't actually grant spells, but they can certainly eliminate [[cleric]]s whose devotion to the state is in question. As a result, true Riedran clerics and adepts are usually trusted envoys of the Inspired, often working with the
[[military|Harmonious Shield]] or the [[Thousand Eyes]].

!! Riedran Style

The common folk of Riedra live ascetic lives. A Riedran
must focus every moment on mastering his assigned profession, giving no thought to luxury, vanity, or comfort.
On the other hand, the [[Chosen]] and the [[Inspired]] live in
a different world, a world touched by the alien aesthetics
of [[Dal Quor]].

The Inspired have sought to create a unified culture,
but faint echoes of the old kingdoms remain. Accent and
manner often provide hints to national origin. Furthermore, the varying climates of the provinces call for different clothing and have led to differences in style. 

!!! Art

The most wondrous works of art produced in [[Riedra]] are [[sentira]] sculptures. Sentira is a product of [[psionics]]—in essence, emotion given form. Shapers create mosaics of sentira shards; the patterns are often dizzying and strange, but each
piece carries a powerful emotional charge. Sentira works are
solely produced by the [[Inspired]] and the [[Chosen]]. All bastions
have emotional parks, where people meditate around the
sentira patterns to purge their own emotions.

Creativity is discouraged among the commoners,
and crafts emphasize function over form. One exception
is a practice known as altsen (spirit writing). This takes
the form of embroidery or engraving, featuring complex
patterns of lines similar to a maze or labyrinth. Altsen
designs are often used as a focus for meditation or placed
on the hem of clothing; common belief holds that evil
spirits can be trapped in the patterns, protecting the
wearer from temptation. Altsen carpets and tapestries
are breathtaking, and merchants in [[Stormreach]] have
been trading in [[Sarlona]]n textiles for centuries.

Another common artistic effort in Riedra is crystal
and glassware. Although such creations are primarily
functional, the smooth contours of Riedran glasswork
are noteworthy. Many people appreciate the novelty of a
[[crysteel]] glass that won't shatter when it is dropped.

Storytelling and song are an important part of the
daily life of most Riedrans. However, both arts are formulaic and mired in tradition, and always revolve around tales of the Unification, the glory of the [[Inspired]], or the
[[Path of Inspiration]]. Foreigners usually find them tedious
and repetitive. 

!!! Architecture

Riedran villages are simple and functional. Buildings
are formed from wood or stone, whichever is most convenient in the region. Structures are typically smooth
and rounded. Crystal shards are embedded into walls to
provide light; these are tied to the local [[hanbalan|hanbalani alta]] and fade
if pried loose from their housings. Doors in Riedran
villages rarely have locks or bars. Given the high level of
illiteracy, iconic imagery is used to identify the function
of buildings instead of printed signs.

Compared to the villages, Riedran bastion cities are
dazzling and strange. They are built from stone, [[crysteel]],
and [[sentira]]. The surfaces of buildings are curved and bent, and structures are magnificently illuminated from within. The sentira walls resonate with thoughts; inhabitants are often struck by traces of trapped and reflected ideas or dreams. Usually these echoes are faint and incoherent, but occasionally a clear image comes through.

!!! Cuisine

The people of [[Rhiavhaar]], [[Pyrine]], and [[Ohr Kaluun]] eat
fish. Those of [[Dor Maleer]] are hunters by tradition.
Few other Riedrans eat meat, and many consider the
practice barbaric.

The mainstay of the Riedran diet is the [[pomow]] plant.
Riedrans use a wide range of spices to add flavor
and variety to their common meal of pomow gruel. They
abstain from any sort of intoxicants. 

!!! Fashion

The average Riedran dresses in black, white, or brown
clothing. While simple and functional, these garments are often adorned with intricate altsen patterns. Colors
carry social implications. Green cloth is reserved for
agents of the [[Thousand Eyes]]. Orange and yellow are set
aside for elite soldiers of the [[Harmonious Shield]]. Purple
is reserved for the [[Chosen]] (or the [[Inspired]]). Blue and red
are the colors of the [[Inspired]].

Riedran commoners do not wear jewelry or use
cosmetics; people are encouraged not to stand out from
the crowd. Commoners often wear veils and head cloths,
both to provide protection from the sun during long
days in the fields and to deemphasize the importance of
personal appearance.

The Chosen and the Inspired are expected to dress in
a manner that honors their elevation from the masses; they
wear elaborate gowns and robes covered with colorful altsen
patterns traced in shining thread. The Inspired often wear
[[sentira]] accessories, especially armor and headdresses.
These curved coverings and horned crowns of glass often
add to the strange, alien beauty of the Inspired. 

!! Rebellion in Paradise

The [[Inspired]] aren't omniscient. The Riedrans might
believe that the //il-altas// are all-seeing, but the [[quori]] are
not. In a nation of nearly fourteen million people, the
[[Thousand Eyes]] can't watch everyone all the time. This
is especially true in the outer villages. Indoctrination
keeps most people from turning against the Inspired,
and villagers report any strange behavior to the overseer
or priest (for the "victim's" own good, of course). But a
cautious dissident who takes care in his choice of confidants can certainly survive in a border village. 

Dissidence arises from many sources. The first path
is simple human nature. The [[Path of Inspiration]] restricts
emotion, choice, even the ability to dream. Perhaps a
villager hates the job he has been assigned. Maybe he has
been paired with someone he doesn't like. Regardless of
his devotion to the Path, frustration can grow and fester,
until it finally explodes.

Another possibility is that a child develops forbidden
powers. A youth discovers a gift for [[sorcery|sorcerer]] or talent as a
[[wilder]]. He knows it only as the touch of an //altavar//. Does
he reveal his curse to the priest—likely disappearing
forever—or explore this birthright in secret, knowing
that he places his soul in jeopardy?

Some come to doubt the Path due to life experiences. A
friend is hauled away by the [[Thousand Eyes]], a child is taken
to another village, a request for pairing is turned down.
Perhaps a villager sees something she can't explain—an
inexplicable act of cruelty from an [[Inspired]] lord. Maybe she
discovers a magnificent ancient relic, and she can't understand why these kingdoms needed to be destroyed. Such experiences can be exacerbated by peaceful contact with
foreigners—jolly [[Syrk|Syrkarn]] traders, strange sailors from the [[Five Nations]], [[Adarans]] or [[dromite]]s who swear that the Riedran
is being led astray. These seeds of doubt take years to grow,
but slowly, a Riedran could realize just how oppressive her
homeland is. At that point, the prison walls become visible.
If she speaks to anyone about her true feelings, she's likely
to be reported. Even if she doesn't, the Thousand Eyes
might pluck the truth from her dreams.

Some manage to hide their heresies and remain in
their homeland, possibly even spreading their beliefs to
others. A few collapse under the strain, suffering violent
emotional breakdowns that priests are quick to blame on demonic influence. Others flee, seeking the [[Summit Road]] to [[Adar]], braving the [[Andnemun]] desert in hopes of
reaching [[Syrkarn]], or stowing away on a vessel bound for
[[Khorvaire]]. The life of such a fugitive is a hard one, even
after the journey to freedom is over. Foreign customs are
strange, people are cruel, food and shelter are no longer
free. The night is full of chaotic thoughts—terrible after
years of soothing dreams. Many feel lost and alone,
yearning for the innocence that has been torn away. Some
channel that angst into fury, becoming bitter mercenaries or criminals. Others fill the void with fanatical devotion to a new cause. Either way, the loss is always there,
and PCs who are Riedran rebels should consider what
drove them away and what price they've paid.
The Ring makes up the bulk of the city of [[Zarash'ak]]. It surrounds the [[Heart]] and is constantly expanding. New levels are added to existing buildings, and new platforms are attached to the old.
This work is done by different architects with wildly
varying levels of skill, and the result is a ramshackle
patchwork of a city. Some platforms have wide paths
that could almost be considered roads; on and around
other platforms, rope ladders are the only way to
move from place to place. Most of the respected heirs
of the house live in the [[Heart]], leaving the Ring to
traders, laborers, and travelers who can afford to stay
out of the [[Webs]]. However, as the city’s population
continues to grow, some members of the [[Tharashk]]
clans are forced to settle in the Ring.

In general, the Ring is a bustling place. Merchants abound, offering everything from broiled slugs and handmade knives to healing salves and
[[Gatekeeper|Gatekeepers]] charms. Beggars and thieves watch for
unwary foreigners, and cultists of the [[Dragon Below|Cults of the Dragon Below]]
take to the streets in search of new recruits. It’s a
wild and chaotic environment, with opportunities
for those seeking to make contact with Gatekeeper
druids, followers of the Dragon Below, or guides to
the deeper [[Marches|Shadow Marches]].
The wearer of this copper wire ring can cast the spell [[alarm]] on a point centered on the ring once per day. In addition to the listed conditions that can trigger the alarm, the wearer of this ring can also have the ring trigger at a certain time of day.
This ring is molded in the shape of two clasped hands. 

The wearer of this ring instantly falls into a magical sleep. Their heartbeat slows, their skin grows cold, and for all intents and purposes, the wearer appears dead. While in this state, the wearer does not need to breathe, eat, or drink. The user can exist in this state for thirty days before they begin to die. 

The wearer is not capable of removing the ring themselves.
This ring is in the shape of a tiny blade, bent back on itself to form a band. The ring allows the user to easily and painlessly remove and reattach the hand that wears the ring. The user retains complete control of the hand up to 60 feet away. 

If the ring is removed from a detached hand, the hand acts as if it has been severed, and is unable to be reattached.

See also [[helm of head removal]].
This ring is a band of solid iron, wrought with a simple scale pattern. When worn, the ring stains the wearer's skin a deep green.

Once per day, the wearer of this ring can summon a circle of large, magical kite shields that rotate slowly around the user, creating a solid barrier and protecting them from attacks for up to 10 minutes.
When you fall while wearing this ring, you descend at a rate of 10 feet per second and take no damage from falling.
This golden ring is wrought in the shape of a delicate quill.

The ring of forgery allows the wearer to perfectly emulate another's handwriting. The user must first see an example of the handwriting they wish to copy, but the end result is nearly infallible.
While you wear this ring, magic can neither reduce your movement speed nor cause you to be paralyzed or restrained, and difficult terrain does not slow you down.
This silver ring has a large white stone set in the middle. When activated, the gem emits a bright beam of white light in a 60-foot cone.
While wearing this ring, you are immune to magic that allows other creatures to read your thoughts or determine whether you are lying. Creatures can telepathically communicate with you only if you allow it.

You can cause the ring to become invisible until you choose to make it visible, until you remove the ring, or until you die.
This band of iron resembles a skull and is cold to the touch. Once per day, while you are wearing the ring, you can speak its command word to create a 20-foot-radius sphere of fog centered on you; the area becomes heavily obscured for up to an hour.
This ring is a heavy iron band, wrought in the shape of a wilting rose.

The wearer of this ring is incapable of feeling physical pain. 
While wearing this ring, you recover from injury extremely rapidly. If you lose a body part, the ring causes the missing part to regrow and return to full functionality after only a few days.
This solid black band has a humanoid molar set in the center. The ring allows the user to absorb health from a creature within 10 feet, siphoning their living essence to heal the wearer's wounds. This effect can be used once per day, or more times if in a [[Mabar]] [[manifest zone]].
A creature wearing this ring can activate it right before they suffer blunt force damage. The wearer becomes immune to bludgeoning damage for 6 seconds. Once this feature has been used, it cannot be used again for 7 days.
While wearing this ring, you can conjure a translucent, purple
shortbow into your hand for 1 minute. The bow conjures a
nocked arrow when you draw the bowstring. The arrows
disappear when they strike something, or when the bow
disappears.

If you drop the bow, or fire more than 3 arrows, it disappears early. Once you have used the ring, it can't be used again until the next dawn.
This delicate golden ring has a clear diamond set in the center. Inside the gem is a rolling cloud of mist that swirls and presses against the barriers of the diamond.

A living soul is sealed within the gem. Whenever the wearer is dealt a mortal wound, the spirit inside of the ring dies in the user's place, passing on to [[Dolurrh]]. The spirit in the gem can be replaced, but only by a willing soul.
While wearing the ring, you can expend some of its magic and punch in the direction of a target within 60 feet of you. The ring produces a spectral ram's head that flies towards the target; if it hits, the target is struck with magical force and pushed 5 feet away from you. You can also break objects in this way.

The ring can be used three times per day before needing to recharge.
While wearing this ring, you can conjure metal claws from your fist for 1 minute. Your
unarmed strikes gain a slashing aspect for the duration,
and your attacks are considered magical if they aren't already.
You can choose to end this effect early. 
A slightly discolored and dirty ring made of intertwining silver threads, this band feels as if it could fall apart at any moment.

This ring allows the user to turn back time five minutes. Only the user is aware of this magic, and only they retain memories of the time that was overwritten. 

The ring disintegrates after one use.
This silver ring allows the wearer to magically and instantaneously know the name of any [[humanoid]] in sight.
While wearing this ring, you can stand on and move across any liquid surface as if it were solid ground.
This ring is a simple band of black metal. A small "X" has been carved on the inside of the band.

When slipped onto one finger, the ring grows into a knife, short sword, or longsword, depending on the user's preference. The sword is the same black metal as the ring, and a low hum seems to emanate from the blade. Unless the ring is taken from their finger, the user cannot be disarmed.
These rings come in linked pairs. If you possess the [[Mark of Sentinel]], you can form a link to the creature attuned to the other ring; from then on, whenever that creature suffers damage, they only suffer half of that damage and you take the rest. This effect continues until you end it or until you or the other creature removes their ring. This effect isn't limited by range. A creature cannot be attuned to more than one //ring of shared suffering//.
Risia is known as the Plain of Ice, for that's the vast majority of what's found within it. Risia is defined by endless arctic wastes, and what appear to be mountains are just peaks of solid ice. But like [[Fernia]], Risia's appearance can be deceiving. Because it's filled with glaciers and snow, many sages assume that this is its defining principle. But in [[Lamannia]], there are also endless blizzards and majestic glaciers—ice in its natural state. By comparison, the core ideas that define Risia are isolation, stagnation, and preservation. The endless frozen plane isn't about snow, it's about the utter stillness, the empty and unchanging landscape. Risia
is sparsely populated, because that's one of its core concepts; it's bleak
and lonely, a realm in which you could walk for days and never
see another creature. Where a desert of sand can at least shift
in the breeze, the frozen landscape of Risia is unchanging.
Yet, unlike a stone plateau, it reflects a substance that could
change at one point—but is now caught, frozen, stagnant.

Though this isolated and unchanging plane might not
seem appealing to adventurers, it's important to remember
that the plane represents preservation—and ancient secrets
forgotten for ages could be frozen within the ice. And while
the realm itself is barren, it's not completely deserted; over
millennia, hardy creatures have come to Risia and settled in
this desolate realm.

!! Universal Properties

Risia is bitterly cold, and unprotected creatures quickly
succumb to the deadly temperatures. Here are a few of the
consistent properties of the plane.

* //''Lethal Cold.''// All regions of Risia are subject to extreme cold. In addition, all creatures gain resistance to fire damage, and a creature that is usually resistant to fire damage becomes immune to it.
* //''Empowered Ice.''// Spells and other magical effects involving cold are enhanced.
* ''//Preservation.//'' Creatures that are incapacitated are stabilized and enter a state of suspended animation. If an unconscious creature remains in contact with the ground for more than one minute, it's drawn below the surface and encased in an ice-encrusted stasis. While encased in this way, time ceases to flow for the creature and it doesn't grow older.
* //''Stagnation.''// Creatures recover stress at a much slower pace.
* //''Stillness of Flesh.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers. However, the passage of time has no effect on a mortal creature's body, and creatures don't age or grow while in Risia. Exhaustion, starvation, and disease merely incapacitate a creature, and don't immediately kill it. [[Dwarves|dwarf]] are immune to this property's effects, and in Risia they can grow, age, and die, just as they would on the Material Plane.

!! Denizens

Risia's few natives are rarely seen. The concept of the [[plane]]
is bleak isolation, and an active population would defeat this
purpose. A few layers hold creatures that have crossed into
Risia from [[Eberron]], ones that can thrive in arctic conditions;
there are [[remorhaz]]es hunting in the [[Frozen Sea]] and [[yeti]]s
in the [[Frostmantle]]. But these things come and go. The two
primary forces in Risia are the native spirits of the plane and
the [[frost giant]]s that have carved out a home in the ice.

!!! Spirits of Ice

At first glance, Risia appears to be barren and empty. But
some travelers have described a presence, a sense of being
watched, and most feel this presence is malign. On the surface,
the concept of Risia seems entirely neutral; there's nothing
inherently evil about ice. But there's a hunger to Risia—an
innate desire to consume warmth and to bury living things in
ice. In the //Planar Codex//, [[Dorius Alyre ir'Korran]] calls this force
the //Killing Cold//. This greatest power of the plane of isolation
is uninterested in being known, and has never interacted
directly with outsiders, but its presence can be felt through its
[[manifestation]]s. These include [[fiend]]s such as [[ice devil]]s and [[chain devil]]s, but also icy [[hag]]-like creatures or [[salamander]]s who wield frost rather than flame. The
appearance and nature of manifestations reflect the themes of
Risia—a chain devil might be shrouded by frost-mist and can
bind its enemies with chains of ice. Regardless of their form,
these spirits don't speak with outsiders. Their intelligence
reflects the cunning with which they stalk their prey, but they
are spirits of the Killing Cold, of bitter isolation, and of the ice
that entombs and preserves.

When these manifestations aren't active, they're absorbed
into their layer; they manifest when they're needed, in the form
that's needed. And in the meantime, as spirits of stagnation and
isolation, they're perfectly content to sit in silence for centuries
before something compels them back into physical form.

!!! Frost Giants and Dwarves

The archarcanist Il'Ara of the [[Group of Eleven]] was devoted to the study of Risia, and she magebred her own lineage of [[frost giant]]s over millennia. When the forces
of [[Argonnessen]] began to lay waste to [[Xen'drik]], Il'Ara gathered
her faithful children and passed through to Risia, certain that
they could find sanctuary in the isolation of the Plain of Ice.

Il'Ara's children have since established themselves across
the layers of Risia. There are a few citadels where multiple
[[giant]]s live together, while others have established their own
solitary outposts. Each has found a different path to surviving
the endless tedium of immortality in the icy wastes. Some have
become artists, writing poetry or sculpting massive works of
art that take centuries to complete. Others pursue physical
diversions such as wrestling, hunting [[fiend]]s, or crafting ornate
games. These denizens always take great interest in outsiders
as a source of diversion. The crueler giants take joy in hunting
newcomers, but others can be excellent hosts. Many artists
yearn for an audience—though a genteel giant artist can be
deadly if guests don't show proper appreciation for their
work. As these Risian frost giants are remnants of the grand civilization of [[Xen'drik]], the DM may wish to increase their
intelligence and abilities as suits the story.

Il'Ara continues her arcane studies in her fortress, Winter.
She may have found ways to wield vast power over Risia and
to protect her children from the [[fiend]]s... or she could be bored
of her immortal existence, considering entering the ice and
embracing stasis.

The frost giants of Risia have [[dwarf]] servants. Their origin
is a mystery: the giants know that Il'Ara produced these first
dwarves, but they don't know—or at least remember—if she
created them herself or pulled them through from [[Eberron]].
These dwarves know no other existence than their servitude to
their giant masters, and Risia holds few other options for them.
Mysteriously, these dwarves—and //all// dwarves—are immune to
the //Stillness of Flesh// property of Risia. They age just as they
would on Eberron, and unlike other mortals on this plane, they
can give birth to children who grow and mature. So every giant
in Risia came from [[Xen'drik]], and as they die, no new giants
replace them; but the dwarves that dwell in Risia were born
there, and know nothing of the ancient past.

!! Layers

The [[layer]]s of Risia are few in number but vast in size,
connected by great archways of ice. Sometimes, travelers
find pools of ice that show images from other layers; breaking
through this ice sometimes allows passage, while other times,
the images are simply lost. While depictions of Risia often
show it with terrifying storms, these are only found in the
[[Boundless Blizzard]]; most of Risia is utterly still, silent, and deadly. Risia's spirit [[manifestation]]s can be found in all of these
layers. The [[giant]]s are concentrated in [[Frostmantle]], but outliers
can be found in other layers.

The most noteworthy layers are discussed below, but others
exist as well. One is a vast, featureless glacier, which may be
the inspiration for the title “The Plain of Ice.” A small layer
holds immense ice sculptures of unknown [[humanoid]]s; this
could be a reflection of primal beings, or perhaps the work
of a [[frost giant]] artisan who's been sculpting for thousands of
years. Another plane contains a series of rivers flowing over an
icy plain, but they aren't natural water; the liquid is so cold it
shatters any mundane material placed within it.

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Here are a few of the ways Risia can affect the Material Plane.

!!! Manifest Zones

[[Manifest zone|manifest zone]]s to Risia are often found in cold or arctic
regions, where their impact isn't immediately obvious. In
warmer climes, most manifest zones tied to Risia create
regions of unnatural cold, often taking on the plane's
//Lethal Cold// and //Empowered Ice// properties of the plane,
regardless of the regional climate.

In a few Risian zones, the effects of //Stillness of Flesh// can
be felt, slowing or completely stopping the aging, growth, and
reproduction of all creatures—except for [[dwarves|dwarf]], that is.
While a manifest zone that prevents aging could be otherwise
considered quite a boon, these zones can be quite small, and
often tied to deadly cold that makes it difficult to live there.

It's unusual for a Risian zone to transport people to Risia,
but it can happen when the planes are coterminous.

!!! Coterminous and Remote

While Risia is coterminous, temperatures drop sharply,
and areas that would normally be chilly but otherwise safe
can take on the //Lethal Cold//, //Empowered Ice//, and //Stillness of Flesh// universal properties. During these times, on rare occasions, creatures caught in an area of exceptionally intense cold can be unexpectedly transported to Risia. However, this effect is unpredictable; while it can happen if it serves the story, it's not something most people are afraid of.

When Risia is remote, intense cold loses some of its bite. Creatures have advantage against the effects of extreme cold.

Traditionally, Risia becomes coterminous once every five
years for the full month of [[Zarantyr|Khorvaire calendar]]. Once every five years,
exactly two and a half years after it is coterminous, it's remote
during the month of [[Lharvion|Khorvaire calendar]]. However, this isn't always the
case. Historians have recorded times when the cycle has
extended far longer; in 657 YK, Risia entered a coterminous
phase that lasted for three years.

!!! Risian Artifacts

An object carved from [[Risian ice]]  can be used as an implement for casting spells or creating magical effects related to cold or
stasis. While it can develop in both [[manifest zone]]s and
on the plane itself, Risian ice is relatively rare even within
Risia; you can't just find giant sheets of it spread across
[[Frostmantle]].

The [[frost giant]]s possess [[magic item]]s and artifacts that
they brought with them from [[Xen'drik]], and Il'Ara has surely
created new wonders over the years. Adventurers could
also find treasures from any civilization there, either buried
in the [[Frozen Sea]] or still clutched in the hands of people
entombed within the ice.

!! Risian Stories

Risia is barren, isolated, and unwelcoming; it's not a place
that wants adventurers. Nonetheless, there are many ways it
could affect a story.

//''Frozen History.''// Il'Ara and her [[giant]]s possess wondrous
relics whose like haven't been seen in [[Eberron]] since the [[Age of Giants]]. They're a living link to the [[elven|elf]] uprising; a giant
might have personally fought a [[Tairnadal]] elf's ancestor, and
it could possess a trophy taken from them. If the adventurers
need information or an object from the Age of Giants, they
might find it here. The adventurers could seek a ritual found
only in Il'Ara's colossal spellbook, or perhaps the titan has kept a collection of prisoners from the Age of Giants preserved in [[Risian ice]]; this could be a way to meet a
[[Qabalrin]] elf or one of the first [[drow]]!

//''Buried Treasures.''// In searching for a vital artifact, the
adventurers might learn it's on a ship trapped in the [[Frozen Sea]]. The trail of a lost explorer could lead to the [[Boundless Blizzard]]. While adventurers could recover valuable treasures from the ice, it's also possible to recover people from it. A
legendary hero—or infamous villain—could have been trapped
in Risia for centuries. What would happen if adventurers
discovered the pirate queen [[Lhazaar]] in an icy stasis on her
ship in the Frozen Sea?

//''Dwarves.''// What's the origin of the [[dwarves|dwarf]] of Risia? Did
the titan Il'Ara truly create the dwarves, or did she steal
them from the [[Frostfell]]? Could dwarf adventurers free their
distant cousins from the domination of the giants?

//''The Killing Cold.''// What is the sinister presence that drives
the spirits of ice? No mortal has ever interacted directly with
the Killing Cold. When the adventurers are caught in the
[[Boundless Blizzard]], they are stalked by deadly [[manifestation]]s
of the Cold. Can they find some way to communicate with
these spirits—or the power that drives them?
[[Risia]]n ice is vivid blue and charged with the essence of the [[plane]]. This ice maintains its temperature under any conditions and never melts, even on the Material Plane. 
The Riverwood is a forest in the eastern [[Eldeen Reaches]], near the [[Wynarn River]].
A robe of serpents is a stylish silk garment that is popular among wealthy nobles and retired assassins. The robe is emblazoned with <<dr "1d4 + 3">> stylized serpents, all brightly colored.

You can transform one of the robe's serpents into a giant poisonous snake. The snake instantly falls from the robe, slithers into an unoccupied space next to you, and obeys your commands. The snake can tell friendly creatures from hostile ones and attacks the latter. The snake disappears in a harmless puff of smoke after 1 hour, when it is incapacitated, or when you dismiss it. Once detached, a snake can't return to the robe. When all of the robe's snakes have detached, the robe becomes a nonmagical garment.
At first sight, a roc's silhouette looks much like any other bird of prey. As it descends, however, its unearthly size becomes terrifyingly clear. In flight, a roc's wingspan spreads two hundred feet or more. At rest, perched upon the mountain peaks that are its home, this monstrous bird rivals the oldest [[dragon]]s in size. Native to [[Lamannia]], rocs are a type of megafauna of the [[plane]] of primal energy.

Rocs treat even [[giant]]s as potential prey. They fly great distances in search of food, soaring high above the clouds to reach their favored hunting grounds. A roc seldom hunts swift or small creatures, and it ignores towns and forests where prey can easily take cover. When it locates a large and slow-moving target such as a giant, a whale, or an elephant, a roc dives down to snatch its prey in its massive talons.

Rocs are solitary creatures that can live for centuries. They lair in nests made from trees, tents, broken ships, and the remains of caravans they carry off, placing these massive tangles in mountain clefts out of the reach of lesser creatures.
This [[adamantine]] rod is tipped with a glowing crystalline eye. The rod has 3 charges and regains all its expended charges daily at dawn.

When a creature you can see within 60 feet of you damages you while you are holding this rod, you can instantly expend 1 of the rod's charges to zap that creature with lightning.
This rod of varnished oak is capped at both ends with a Siberys
[[dragonshard]]. To use it, the wielder must have the [[Mark of Handling]].

While holding the rod, you can comprehend and verbally communicate with beasts, and have advantage on Persuade rolls against beasts.

If persuasion fails, you can use the rod to attempt to magically dominate a beast. If successful, you form a telepathic link with the beast as long as the two of you are on the same plane of existence. For as long as the link lasts (up to 1 hour), you have total and precise control of the beast. After the rod is used to cast this spell, it can't be used to do so again until the next dawn.

The commander of the small military contingent in [[Mokush]]
and a militia captain, Roorprek is a dour and pragmatic
man who takes the [[Path of Inspiration]], and his position,
seriously. Roorprek has compassion for the [[ogre]]s and
wants to help them on their journey along the Path. His
patience with [[Galshani]] has been strained, but he's happy
now that the [[Chosen]] lady seems to be more involved in
Mokush's running. 
This 60-foot length of silk rope weighs 3 pounds and can hold up to 3,000 pounds. If you hold one end of the rope and speak the command word, the rope animates. You can command the other end to move toward a destination you choose. You can also tell the rope to fasten itself securely to an object or to unfasten itself, to knot or unknot itself, or to coil itself for carrying.

If you tell the rope to knot, large knots appear at 1-foot intervals along the rope. While knotted, the rope shortens to a 50-foot length and grants advantage on attempts made to climb it.

The rope slowly mends itself over time, repairing minor damage. If it is completely severed, it is destroyed.
This rope is 30 feet long and weighs 3 pounds. If you hold one end of the rope and speak its command word, the other end darts forward to entangle a creature you can see within 20 feet of you. You can release the creature by speaking a second command word.
You can cut this 50-foot coil of hempen rope into any number of smaller pieces, and then speak a command word and cause the pieces to knit back together. The pieces must be in contact with each other and not otherwise in use. A //rope of mending// is forever shortened if a section of it is lost or destroyed.
This thin rapier can be used as the bow for a stringed
instrument, such as a fiddle or a viol. When you play the first few notes of a song on your instrument with this sword, your instrument will continue to play your intended song for up to one minute on its own.
Decay is part of nature, and this is reflected in the swamp-like
Rot, a relatively small [[layer]] of [[Lamannia]] filled with fallen, rotting trees.
Corpses of megafauna beasts lie scattered around the layer,
and giant insects and other massive scavengers prey on their
remains. There's a community of wererats thriving in the Rot,
and there could be a small outpost of the [[Children of Winter]]
who found their way here. While the Rot is a symbol of death and decay, it's entirely natural, and undead have no place here. It's possible a [[necromancer|necromancy]] could arrive here, hoping to animate the massive corpses; however, this would violate the
theme of the [[plane]], and if there's any higher power at work
in Lamannia, it would certainly direct forces to counter this.
While most layers of Lamannia are free from disease, disease
itself is part of nature; a [[manifest zone]] tied to the Rot could
spread plagues into the surrounding region.
Rotting Bal derives his name from the sores that cover his skin, an apparent side effect of his powerful [[aberrant dragonmark]]. Bal was born in the [[Shadow Marches]], in a hidden monastery dedicated to the [[Dragon Below|Cults of the Dragon Below]]; he learned martial arts at the feet of a [[dolgaunt]] master. But he always felt a certain distance from the other monks. The promises of [[Xoriat]] felt empty: Bal was driven by different visions. When [[Thora Tavin]] came to his monastery, he knew she held the key to his destiny. 

Bal is utterly devoted to Thora and would give his life to protect her. With his lethal touch, he is one of the deadliest people in [[Sharn]], and he serves House [[Tarkanan]] as assassin and enforcer. While he is fanatically devoted to the Tarkanan cause and has no compunctions about killing, he is no fool; he can be reasoned with and would rather avoid unnecessary conflict if possible.
Though a majority of the [[Demon Wastes]]’ denizens
are devoted to [[demon]]s or [[rakshasa]]s, some serve other creatures of
evil. Rotting Blade is a tiny settlement set in the permanent gloom of the [[Shadowcrags]], where a powerful [[night hag]] named ''Vraria'' rules over a community of [[kobold]]s, [[human]]s, and [[orc]]s captured from
the [[Eldeen Reaches]] and the [[Shadow Marches]]. Subjected to
unspeakable cruelty and driven mad by the taint of
the Wastes, these thralls have come to regard the hag
as their queen and mistress. She uses them for labor, sport, and (when their bodies give out) food for their fellows. To maintain Rotting Blade’s population, her
servants range beyond the Wastes, rounding up new
batches of slaves to subject to their mistress’s spite.

Rotting Blade is little more than a collection of
hovels in a barren landscape. Vraria lurks out of sight
when visitors arrive, emerging with her servants in
the hope of overwhelming intruders and adding them
to her stable of thralls.
[[Aundair]] is renowned for its [[wizard]]s, and the Royal Eyes of Aundair excel at spellcraft and [[divination]]—almost every agent of the Royal Eyes has an
arcane advantage. Agents spy on other nations, pursue
notorious criminals, and engage in a host of other
wand-and-dagger missions for the crown. 

The Royal Eyes lack the sheer number of sources and boots on the ground that the [[Dark Lanterns|King's Dark Lanterns]] cultivated prior to the outbreak of the [[Last War]]. Stil, they are one of the premier intelligence agencies in [[Khorvaire]].

While the Royal Eyes ultimately report to Queen [[Aurala|Aurala ir'Wynarn]], the day-to-day operations are handled by her spymaster [[Thuel Racannoch]]. The headquarters of the Royal Eyes is the [[Tower of the Eyes]] in [[Fairhaven]].
Lord Ruken ir’Clarn is the speaker of the upper chamber and one of the most influential democracy activists. Lord ir'Clarn is a plump man with straight dark hair and fair skin, his figure showing years of privileged living. Willing to pursue any means to ensure that the parliament triumphs over the monarchy, he’s enlisted a number of sympathetic nobles to carry out his dirty work, including [[Hass ir'Tain]] of [[Sharn]]. Once he secures control over the military from [[Boranel|Boranel ir'Wynarn]] he wishes to start a campaign to reclaim [[Droaam]]. For him, the [[Five Nations]] were made by [[human]]s, for humans, and the idea of giving monsters or [[construct|warforged]]s rights is an aberration. His support for the [[Cyran refugees|Mourning]] is an extension of this, Ruken seeing the importance of caring for the people of [[Cyre]] even if they no longer have a home.
Ruukosi, one of eight monastery-fortresses of [[Adar]], guards the mouth of the [[Ruukosi River]] where that waterway spills under a natural arch and into
the wide [[Jathara Sound]] below. The stronghold occupies
the cliffs on both sides of the river, and the wondrous
arch that bridges the river has been hollowed by muscle
and mind to serve as a towering overlook. Monks here can
see into [[Syrkarn]] when weather permits. Farther upriver,
the Ruukosi river widens and slows. There, the small Adaran
town of [[Khada]] thrives not only on the abundant fish, but
also on the farm goods grown on the narrow flood plain
and hills near the river. Khada supplies the monks, and
the monks in turn guard the town against the dangers of
the mountains. Many Khadan youths are educated at the
monastery, and some join the monks for good. Since it
is the fortress closest to [[Xephanan]], Ruukosi also enjoys
a sizable population of [[xeph]]s. 
The Ruukosi River in [[Adar]] flows into the [[Jathara Sound]] near [[Ruukosi]].
This [[oni]] is an imposing sight, ten feet of
muscle sheathed in chainmail. Her skin is icy blue, and
her horns are glistening black ivory. Ruukra is especially
devoted to the [[Path of Inspiration]] and the belief that
through good works, she can purify the [[demon]] within.
She is dedicated to honor and grace, and when she is off the battlefield
she goes out of her way to show compassion to others. In
battle, she acts with honor—she shows no mercy to those
she believes to be tools of evil, but she will not condone
unnecessary cruelty among her companions. Although
brave, she is a wise warrior and knows when to retreat to
fight another day. If she is seriously injured, she typically
turns invisible and takes to the air, staying out of her
enemy's reach while she regenerates. As with all members
of the [[Horned Guard]], she has been forbidden from using
her //change shape// power. The priests say that the body of the
[[oni]] is designed to hold the //altavar//, and changing
shape weakens those bonds and lets the spirit influence
the individual. 

Ruukra can be encountered on the borders of [[Adar]],
or as a guardian of the peace in a bastion city. She initially opposes the PCs, but if they act with honor, she
might come to respect them. Ruukra is violently opposed
to the [[Horned Shadow]], and a joint battle against the
Shadow could easily cement a bond between her and the
PCs. Eventually, she might come to realize that the PCs
are more honorable than her [[Inspired]] masters. Although
she will never abandon the [[Path of Inspiration]], she could
turn against the Inspired.

Despite her fearsome appearance, Ruukra is calm and
compassionate. She never lets anger show, even in battle.
She pities her opponents rather than hating them.
High Prince Ryger ir’Wynarn is lord of the [[Seadragon Principality|Seadragons]] and nominally the leader of all the [[Lhazaar Principalities]]. He has held his position of High Prince of the [[Lhazaar Sea]] for over a decade, since wresting the crown from the head of [[Horget Black]]. However, Ryger and his allies (and enemies) know that he could be overthrown by one of the region’s other princes at any time. 

Ryger claims descent from the kings of [[Galifar]] and dreams of
rebuilding a united kingdom. So far, though, he has been unable to unite
the squabbling princes to do anything more than present a unified face
(Ryger’s own) to the [[deliberations|Treaty of Thronehold]] at [[Thronehold]] that ended the [[Last War]] and established the [[Lhazaar Principalities]] as a sovereign nation. 

Ryger is remarkably clever and charismatic, with skills in diplomacy as well as the blade. He has earned a reputation as a man of his word, though he will not give his word carelessly. However, he is a [[Lhazaarite|Lhazaar Principalities]], and he respects the traditions of his people—including piracy. Merchants who sail the [[Bitter Sea]] can pay for the protection of the [[Seadragons]], and Ryger will strike at any ship that dares to raid near [[Regalport]]. But he feels no obligation to hunt down Lhazaarites who engage in piracy. 

One of Ryger's earliest acts as prince was to grant House [[Thuranni]] land on [[Greentarn]]. This alliance between House Thuranni and the [[Seadragons]] is one more weapon in the high prince's arsenal. Some say that Ryger wanted to bring House Thuranni to the Principalities to guard against of the [[Gray Tide]] principality; if anyone can counter [[changeling]] schemes, it's the house of shadow.
The Saartuk [[shifter]] tribes occupy the entire western coastline of the [[Tashana Tundra]] in [[Sarlona]], from the [[Eska Mountains]] to the [[Riedra]]n border. The Saartuk harvest virtually all of their resources
from the sea, and individual tribes move up and down
the coastline and among various inland waterways.
The Saartuk maintain the permanent coastal village of
[[Whitetooth]] and coexist peacefully with [[maenad]] colonists
in the settlement of [[Winterstead]].

See also [[Culture of the Tashana shifters]].
Flame-like radiance descends on a creature that the spellcaster (e.g. a [[cleric]] or [[Thrane]] [[wandslinger]]) can see within 60 feet. If the creature is unable to dodge, it is seared by the fiery light.
While in this saddle on a mount, you can't be dismounted against your will if you're conscious, and the mount is harder to hit with attacks.
Sahuagin are a predatory, piscine race that ventures from the ocean's black depths to hunt the creatures of the shallows and shore. Though they dwell in the deepest trenches of the ocean, sahuagin view the entire aquatic realm as their kingdom and the creatures in it as blood sport for their hunting parties.

The self-styled rulers of sahuagin ocean domains are massive mutant males that grow second sets of arms. They are terrible foes in battle, and all sahuagin bow down before these powerful barons.

The sahuagin inhabit the ocean depths surrounding
Shargon's Teeth, an island chain between [[Xen'drik]] and
[[Khorvaire]]. Today, the sea devils live within the sunken
ruins of their ancient empire. Most have turned to the
worship of the dark god known as the [[Devourer]]; a popular
belief among the followers of this god is that a sahuagin
gains power and knowledge by eating other intelligent
creatures, which can make a trip to the ancient empire a
dangerous experience. 

Some sahuagin tribes can't be reasoned with; they attack
any who attempt to pass through Shargon's Teeth to reach
the jungles of [[Xen'drik]]. Other tribes, however, make a
living by selling their services as guides and leading ships
through the hard-to-navigate waterway. These friendlier sahuagin regularly trade with and assist explorers and merchants from
[[Khorvaire]], and many people in [[Sharn]] have standing deals
with these tribes.
Saidan Boromar is the current patriarch of the [[Boromar Clan]]. Saidan learned his trade on the streets of [[Lower Dura]], and he has a quick tongue, silent feet, and a swift hand with a knife. Saidan and his wife [[Mala|Mala Boromar d'Jorasco]] can usually be found at the [[Tain Gala]]. He is a member of the Gold Concord of the [[Aurum]].

Saidan is in his late seventies, and has fierce dark eyes and white hair. He is intelligent and charming, but impatient at times.
Salamanders sail across the Sea of Fire in [[Fernia]] in ships forged from blackened steel, their sinuous coils and jagged spines smoldering. Intense heat washes off their bodies, while their yellow eyes glow like candles in the deep-set hollows of their hawkish faces.

The primary servants of the [[efreet|efreeti]],
salamanders can be found serving as soldiers or performing
domestic tasks. For every salamander officer carrying an
ornate spear, there's a salamander butler carrying a brass
tray. Salamanders are extremely proud, and within their
ranks there is great competition over rank and position.
Most are dismissive of mortals, but they can be jealous of
adventurers who receive too much attention or favor.
Known for its extensive
wine collection, Sannid's is one of [[Sharn]]'s finest
restaurants. The cuisine is mostly spicy [[Brelish|Breland]] fare,
with selected entrées representing the best of [[Khorvaire]]'s other cuisines, including [[Karrnath]]i sausage,
[[Aundair]]ian veal with tomato gravy, and [[Mror|Mror Holds]]ian
stroganoff. Its wines come from all over the world,
and Sannid's proudly offers [[Aerenal]] spirits to its most
selective customers. Jaetha Sannid is the third-generation owner and head
chef of the restaurant, a sophisticated and charming
middle-aged woman with silvered auburn hair. 
Sar Saeran creates tools of war, from personal armor and
weapons to grand siege engines. The [[efreeti]] [[Azhalar]] is his
best client, but all of the efreet value his peerless work.
He has spent eons trying to create the perfect sword, and
often seeks out legendary blades on the Material Plane—sometimes to keep, sometimes to study for a few minutes,
and sometimes to destroy.

Sar Saeran occasionally visits the [[Immeasurable Market]] of [[Syrania]] to sell his wares and discuss commissions.
In {{!!title}}, you could...

* Infiltrate an empire ruled by psychic overlords.
* Defend an ancient mountain monastery.
* Disable a monolith used to control the dreams of a city.

Tens of thousands of years ago, the vast continent of
Sarlona was the cradle of [[human]] civilization. Three
thousand years ago, the first human colonists left, setting in motion events shaping modern-day [[Khorvaire]].

Sarlona was once home to over a [[dozen distinct kingdoms|Sarlonan province]], but wars devastated the continent. From this
chaos, a band of saviors rose up to forge a new world.
Guided by [[celestial spirits|quori]] and endowed with vast
[[psionic|psionics]] powers, these champions became known as the
[[Inspired]]. Today, the Inspired have united the broken nations into a single realm: the Empire of [[Riedra]]. Outsiders aren't welcome in Riedra, and little is known of the
nation. Merchants tell stories of massive monoliths that
control the dreams of the [[people|Riedrans]], and of secret police
who use [[psionics]] to root out dissidents.

A single nation stands against the might of Riedra:
the mountain refuge of [[Adar]], homeland of the [[kalashtar]]. The Adarans lack the numbers to challenge Riedra, yet they hold their fortress monasteries
against endless waves of Riedran assaults. The Adarans
possess remarkable psychic and martial disciplines. 

!! Notable Locations

Like [[Khorvaire]], Sarlona primarily occupies the northern hemisphere of [[Eberron]], and it has all the climatic
and topographic variety one would expect given its immensity. A few places in Sarlona known to Khorvairians
are described below. 

* [[Dar Jin]]
* [[Kasshta Keep]]
* [[Ohr Kaluun]]

Other than [[Riedra]], the main regions of [[Sarlona]] are:

* [[Adar]]
* [[Syrkarn]]
* the [[Tashana Tundra]]

!! {{!!title}}'s Influence in Khorvaire

In [[Khorvaire]], you might...

* Struggle to expose the schemes of an order of psychic assassins.
* Steal a memory crystal from an Inspired ambassador.
* Help an [[Adar]]an envoy deliver a vital message to a [[kalashtar]] elder. 

Although outsiders aren't welcome in [[Riedra]], the empire is a powerful nation and a valuable trading partner. Riedra offered assistance to multiple nations during
the [[Last War]]. [[Karrnath]] relied on Riedran aid to survive
a wave of terrible famines, and [[Aundair]] also received
support from Riedra. King [[Sebastes|Sebastes ir'Kesslan]] of [[Q'barra]] has used
Riedran troops to maintain order in [[Newthrone]].

[[Riedrans]] rarely appear on the streets of [[Khorvaire]],
but [[Inspired]] ambassadors attend every court. Although
the Inspired present themselves as generous and kind, a
darker force followed them across the sea. The [[Dreaming Dark]] is an enigmatic order of monks, assassins,
[[warlock]]s, and mystics. Their ultimate agenda remains
unknown, but they hunt the [[kalashtar]] and some believe
they can control people by manipulating their dreams.
While most people dismiss the [[Dreaming Dark]] as a foolish story, you might uncover the truth behind the tales.

Both the [[Inspired]] of [[Riedra]] and the [[kalashtar]] of [[Adar]]
possess psychic powers, and treasures from Sarlona
reflect this. A set of Sarlonan sending stones might take
the form of crystals that allow telepathic communication. The rod of rulership, ring of mind shielding, ring of
telekinesis, potion of mind reading, and the medallion of
thoughts could represent psychic items from Sarlona.
In addition to psychic treasures, Sarlona is a source of
a number of exotic plants and medicines. [[Dreamlily|dreamlily]] is a useful Sarlonan narcotic, but over the course of the past few decades it has become a
common recreational drug. 

!!! Trinkets from {{!!title}}

| !<<dr d8>> |!Trinket |
| 1 |A polished crystal sphere; when you clutch it in your fist, a telepathic voice recites a story in your mind |
| 2 |A teardrop pendant made from polished shell; when you hold it, you see the image of a young Riedran man |
| 3 |A six-sided crystal die; when you roll it, you feel a surge of emotion for six seconds |
| 4 |A sealed vial filled with faintly luminescent blue mist |
| 5 |A crystal disk engraved with a labyrinthine pattern |
| 6 |A leather-bound collection of [[kalashtar]] poetry called Shards of the Light |
| 7 |A sphere of polished crystal; when you hold it in your palm, you feel that it knows you and understands you |
| 8 |A cup and ball toy; when you successfully catch the ball in the cup, you feel a momentary surge of joy |
The [[Sarlona]]n nation of [[Riedra]] and region of [[Syrkarn]] are composed of provinces, each of which shares a name with the ancient Sarlonan kingdom that once stood in its place.

!! Before Riedra: The Twelve Kingdoms

By the time [[Sarlona]]'s history was finally codified, the continent's dozens of city-states had become a land of twelve kingdoms, remaining so through long years of conflict.
[[Riedra]]n provinces now bear the names of eight of those
kingdoms—[[Dor Maleer]], [[Rhiavhaar]], [[Khalesh]], [[Nulakesh]],
[[Borunan]], [[Ohr Kaluun]], [[Pyrine]], and [[Corvagura]]. Where
the steppes of [[Syrkarn]] spread, the four kingdoms that
once stood there exist now only as names—[[Mae-Kree]],
[[Sunyagir]], [[Khunan]], and [[Lamecha]].

In northern and eastern [[Sarlona]], the largest powers
were [[Nulakesh]] and [[Corvagura]], each the conqueror of a
dozen smaller states and city-states whose names are lost
to history. For much of the twelve kingdoms' early history, Nulakesh was the dominant military force in central Sarlona, building its rule on a fanatical and disciplined
military caste. Though the [[sorcerer]]-kings of [[Corvagura]]
were renowned, it was secretive [[Ohr Kaluun]] and majestic
[[Khunan]] where Sarlona's sorcerous might truly rose and
ultimately fell. [[Rhiavhaar]] on the west coast cemented its
rule using a different kind of power, controlling the [[Sea of Rage]] largely by means of piracy and slaving.

Having stitched itself together from smaller territories, the inland state of [[Khalesh]] continued to practice conquest of a different sort. As a nation dedicated to the
worship of the [[couatl]], Khalesh had a long history of crusades and attempts at conversion (some benevolent, others less so) among its neighbor states. Likewise, [[Pyrine]] sought to spread its faith—a pantheon of nine deities known as
the [[Sovereign Host]]—throughout Sarlona.

In the steppes and savannah of what is now [[Syrkarn]],
[[Mae-Kree]], [[Sunyagir]], and [[Lamecha]] effectively orbited
the more powerful [[Khunan]], carving out specific niches
for themselves (agriculture for Lamecha, horses for Mae-Kree, mining for Sunyagir). At the same time, each
nation made a point of maintaining armies and magical
might just powerful enough to keep Khunan and the
northern nations from getting any ideas.

The most unusual kingdom of Sarlona's past remains
the oddest of modern [[Riedra]]. [[Borunan]] was and remains
the homeland of "civilized" [[ogre]]s and [[oni]].

!! The Provinces

!!! Riedra

<<list-links-article "[tag[province]tag[Riedra]sort[title]]">>

!!! Syrkarn

<<list-links-article "[tag[province]tag[Syrkarn]sort[title]]">>
While wearing this sarong, your clothes remain dry even
while underwater. 
Sasik d'Vadalis is the royal consort (husband) of Queen [[Aurala ir'Wynarn]] of [[Aundair]] and brother of House [[Vadalis]] patriarch [[Dalin d'Vadalis]]. While he has renounced all formal ties to House Vadalis, Sasik's critics point out that he has kept his Vadalis name (a decision mandated by the [[Korth Edicts]]).

While Sasik has truly renounced all formal power within the house, his relationship with Aurala is integral to her long-term plans for the [[Eldeen Reaches]]. The heirs of the House of Handling seek to usurp the [[Wardens of the Wood]], who currently hold the formal reins of power in the Reaches. Aurala intends to capitalize on this, stabilizing the [[Eldeen Reaches]] as an ally, ensuring a reliable supply of food and other resources if and when war breaks out again.
Satyrs are raucous [[fey]] that frolic in wild forests, driven by curiosity and hedonism in equal measure.

Satyrs resemble stout male [[human]]s with the furry lower bodies and cloven hooves of goats. Horns sprout from their heads, ranging in shape from a pair of small nubs to large, curling rams' horns. They typically sport facial hair.

//''Hedonistic Revelers.''// Satyrs crave the strongest drink, the most fragrant spices, and the most dizzying dances. A satyr feels starved when it can't indulge itself, and it goes to great lengths to sate its desires. It might kidnap a fine minstrel to hear lovely songs, sneak through a well-defended garden to gaze upon a beautiful lad or lass, or infiltrate a palace to taste the finest food in the land. Satyrs allow no festivity to pass them by. They partake in any holiday they've heard of. Civilizations of the world have enough festivals and holy days among them to justify nonstop celebration.

Inebriated on drink and pleasure, satyrs give no thought to the consequences of the hedonism they incite in others. They leave such creatures mystified at their own behavior. Such revelers might have to scrounge for excuses to explain their disordered state to parents, employers, family, or friends.

Sava Kharisa ([[human]] councilor for [[Lower Central]]), one of the most outspoken members of the council, espouses a wide range of radical philosophies and political views. She honestly does the best she can to help all of the people of [[Sharn]],
instead of trying to advance her political career or protect her personal supporters. This has earned her many enemies on the Council, and if she's not careful the [[Boromar Clan]] could try to have her removed from office—permanently. Due to her radical views, connections, and desire to fight corruption, Sava makes an excellent choice as a patron for adventurers. 
Savia Potellas ([[human]] councilor for [[Lower Menthis]]) owns a [[brothel|Savia's]] in [[Firelight]], and the conservative members of the Council were outraged by her appointment. She is extremely sharp at business, but she is currently caught in a bind. She has grown tired of paying tribute to the [[Boromar Clan]] and the
[[Tyrants]] in order to run her business, but she is afraid
to openly move against the powerful crime lords.
She could become a valuable
ally for adventurers that oppose the Boromars. 
The most elegant bordello in [[Firelight]] claims that its clientele comes from [[Upper Central]] and [[Skyway]] as well as closer districts. Its
real claim to fame, however, is that its owner, [[Savia Potellas]], is
[[Lower Menthis]]'s representative on [[Sharn]]'s [[city council|Sharn Council]]. Her election outraged many of her fellow
council members, but she claims to fairly represent
the interests of the businesses in her ward, and the
merchants of Lower Menthis have never complained
about her leadership.
This scabbard magically forms to fit any blade, as small as a dagger or as large as a greatsword. A blade placed into this scabbard is cleaned of any grime, blood, or rust, and gains the "magical" property (for the purpose of overcoming resistance and immunity to "nonmagical" attacks). This effect lasts until another blade is placed in the scabbard.
[[Dragonborn|dragonborn]]. [[Lizardfolk|lizardfolk]]. [[Kobold|kobold]]s. [[Troglodyte|troglodyte]]s. To the typical [[human]] of [[Q'barra]], they are all the same... derisively referred to as //scales//. Even those who know that dragonborn and
lizardfolk are different species rarely care; at the end of the
day, they are still scales.

Superstitions about the scales are as wild as they are
unfounded. In some of the tales, the scales hunger for
human flesh. In others they consume [[dragonshard]]s to
survive, and this is why they attack [[Tharashk]] miners.
It’s common knowledge that the scales sacrifice their
prisoners; the only question is whether their altars are
dedicated to [[dragon]]s or to [[demon]]s. Everyone knows
that the scales are savages, and that those with metal
tools have traded for them or more likely stolen them
from humans. 

In the wake of the [[Mourning]], the scales are growing restless. Every miner knows a story of a caravan raided or a village razed. Children frighten one another with tales of the obsidian palace in the deep jungle and the army massing there.

For decades, the relationship between settler and
scale has been uneasy but stable. The [[Poison Dusk]]
has remained a constant threat, but a balance was
struck with the [[Cold Sun Federation]], and an elder
of the [[Ka'rhashan]] [[dragonborn]] accompanied King
[[Sebastes|Sebastes ir'Kesslan]] to [[Thronehold]] in [[996 YK|Treaty of Thronehold]]. Now that fragile peace is beginning to snap. Cold Sun [[lizardfolk]] are
raiding [[Tharashk]] mines. The attacks of the Poison Dusk are worse than ever. And there are rumors of scaled armies massing in the jungle—a force that could
wipe the settlers from the land.

What has changed in recent years? Lord [[Khalar|Khalar Velderan]] of
House [[Tharashk]] blames the [[Mourning]], claiming that
the scales have heard of the cataclysm and believe
that the settlers are weak. This is a theme that resonates with the settlers, who are as troubled as any by the devastation of [[Cyre]]. However, Tharashk’s recent
actions have had a greater impact on [[Q'barra]] than
the Mourning has. Over the last decade, Tharashk
has exponentially increased its [[dragonshard]] mining
operations. Khalar believes that the [[lizardfolk]] are savages who have no idea what treasures they possess, and he would like nothing better than to assemble a
force of [[ogre]]s, [[troll]]s, and [[orc]]s to drive the [[Cold Sun|Cold Sun Federation]]
tribes from their lands.

This ignorance is dangerous. The [[lizardfolk]] of the [[Cold Sun Federation]] aren’t superstitious fools; they are battling to protect [[Q'barra]] from an evil older than humanity. Three cultures have played in the history of Q’barra. Three forces threaten the settlers in different ways. Adventurers must understand each if they are to protect the nation from the darkness that lies ahead. 

* The [[Cold Sun Federation]]
* The [[Poison Dusk]]
* The [[dragonborn]] clans of [[Ka'rhashan]]
The Scar River in [[Droaam]] flows past [[Znir]] and [[Vralkek]] into the [[Manta Bay]].
On command, this red woolen scarf will fly from the user's neck and attempt to strangle a creature within fifteen feet.
While wielding this enchanted sword, you can attack twice as fast as normal.
Scions Sound is a body of water in north-central [[Khorvaire]] which forms parts of the borders between [[Aundair]], [[Thrane]], [[Karrnath]], and the [[Mournland]]. It resembles a five-pronged star, and is fed by the [[Aundair|Aundair River]], [[Brey|Brey River]], [[Cyre|Cyre River]], [[Karrn|Karrn River]], and [[Thrane River]]s. The fifth prong forms a narrow channel with cliffs on both sides that leads northward to the [[Bitter Sea]]. At the mouth of this channel is the windswept island of [[Stormhome]], which has been magically altered to be an island paradise by House [[Lyrandar]].

At the center of Scions Sound lies a large island holding the city of [[Throneport]] and the castle of [[Thronehold]], the traditional capital of the Kings of [[Galifar]].
You create three rays of fire and hurl them at targets within 120 feet. You can hurl them at one target or several.
A creature with the [[Mark of Scribing]] can use this pen to write on any surface. They can decide whether the writing is visible or invisible, but the writing is always visible to a person with the Mark of Scribing. Any creature with the mark can touch the invisible writing, making it visible to all.
Up to three times a day, you can activate this carved bone comb and become invisible to [[undead]] creatures. The invisibility lasts for up to one hour, or until you attack an [[undead]] or cast a spell.
Each scroll of protection works against a specific type of creature chosen by the DM or determined randomly. Options include: [[aberration]]s, [[celestial]]s, planar [[construct]]s (such as [[modron]]s), [[elemental]]s, [[fey]], [[fiend]]s, or [[undead]].

Reading the scroll encloses you in an invisible barrier that extends from you to form a 5-foot-radius, 10-foot-high cylinder. For 5 minutes, this barrier prevents creatures of the specified type from entering or affecting anything within the cylinder, unless they are powerful enough to overcome the magic.

The cylinder moves with you and remains centered on you. However, if you move in such a way that a creature of the specified type would be inside the cylinder, the effect ends.
You can see and hear a particular creature you choose that is on the same [[plane]] of existence as you. Your attempt is modified by how well you know the target and the sort of physical connection you have to it. For example, if you have only heard of the target but never met them, the attempt will be more challenging; if the target is very familiar to you, the attempt will be easier. The attempt also becomes easier if you possess an item belonging to the target, or even better, a lock of hair or bit of nail. If a target knows you're casting this spell, it can allow you to scry on them without having to roll dice if it wants to be observed.

If successful, the spell creates an invisible sensor within 10 feet of the target. You can see and hear through the sensor as if you were there. The sensor moves with the target, remaining within 10 feet of it for the duration. The sensor lasts for 5-10 minutes, or until you willingly end the spell or your concentration is broken. A creature that can see invisible objects sees the sensor as a luminous orb about the size of your fist.

Instead of targeting a creature, you can choose a location you have seen before as the target of this spell. When you do, the sensor appears at that location and doesn't move.

If unsuccessful, the scrying fails, and you can't use this spell against that target again for 24 hours.
Space has little meaning in [[Kythri]]'s Sea of Chaos. Matter, distance,
and gravity are in constant flux. Lands and creatures appear
and dissolve within moments. There are waves of lightning,
streams of lava, and hurricane winds constantly shifting
direction. While the elements may be mundane—unlike the
surreal vistas of [[Xoriat]]—size has little meaning. A thousand-foot-long [[dragon turtle]] might appear, try to swallow travelers,
then become an island.

Travel through the Sea of Chaos is driven by pure will.
Travelers must impose the concept of motion and distance
on the environment using great mental focus, while also
protecting their vessel from both the destructive forces
and from being transformed. The DM could reflect this
journey with a series of ability checks, or simply require the
adventurers to have a captain and vessel capable of making
the trip before they try to cross the sea. Regardless, to
successfully travel, the adventurers must know where they
want to go; without a destination to serve as a conceptual
anchor, they'll quickly crash on a random [[Shifting Island|Shifting Islands]].
This is a seemingly endless ocean of magma, larger than any
single sea in [[Eberron]]. Ultimately, the Sea of Fire wraps around
on itself; head north from High Hearth and you'll eventually find
it again, but it may take a month of travel. There are islands
in the sea, spires and mesas of basalt and obsidian—some are
inhabited, but many are barren and empty.

[[Salamander|salamander]]s sail the blazing sea in ships forged from
blackened steel, and [[azer]]s fly over it in balloons woven from
brass. Many of the islands hold teleportation circles traced in
continual flame, with a word inscribed in Ignan indicating the
destination. Any spellcaster with proficiency in arcana can
expend energy equivalent to casting a rare-tier or higher spell to activate a portal—though unless they speak Ignan, they won't know where it
leads. Here are a few noteworthy destinations.

* //''The [[City of Brass]].''// The sole metropolis in [[Fernia]]. A place of marvels.
* ''//Efreeti Estates.//'' Each of the noble [[efreet|efreeti]] have a sprawling palace or mansion on an island in the Sea of Fire. While not so grand as the City of Brass, these estates are studies in opulence, filled with [[dao]]-crafted wonders and sculptures of metal and flame.
* //''Foundries.''// Foundry islands are models of industry. Some are focused primarily on physical engineering, with vast gears and wheels slowly turning, and chains rising and falling. Others reflect arcane industry, with blazing glyphs and fields of shimmering energy. Here the [[azer]]s work at all hours, producing both mundane, martial, and magical goods for the efreet and their servants.
* ''//[[Deep Halls]].//'' Under the foundries, tunnels extend down below the Sea of Fire into the earth below. These are the domains of the [[dao]]. 
The Sea of Lost Souls extends from the southwest part of [[Xen'drik]] to the southeast part of [[Sarlona]] and the east coast of [[Argonnessen]]. It connects to the [[Barren Sea]] to the north and the [[Sea of Rage]] to the west. It is known as a perilous sea for sailing, and its reputation for being haunted by numerous ghost ships gives it its name. The Sea of Lost Souls is also said to be the deepest of [[Eberron]]’s oceans—some legends speak
of a trench extending miles beneath the surface, a region
so dark that the darkness itself is alive.
The Sea of Rage is bounded by [[Sarlona]] to the north
and east and [[Argonnessen]] to the south. To the west it
meets the [[Lhazaar Sea]]. It is known for freak storms and
bizarre happenings, from giant waterspouts to supernatural maelstroms and stormfire. 
The Seadragon Principality, led by High Prince [[Ryger ir'Wynarn]], is largest of the [[Lhazaar Principalities]]—which is to say, Ryger’s personal followers and the twenty ships under their command form the largest fleet in the [[Lhazaar Sea]], allowing them to control the largest swath of territory. Most of these ships, including Prince Ryger’s flagship, //Dragoneye//, make their home port at [[Regalport]], [[Greentarn]], but the principality also claims the islands of [[Orgalos]], [[Crown Island]], [[Speartip]], [[Ninebay Island]], [[Redwatch]], and [[Thrug]].

The Seadragons have been staunch allies of [[Q'barra]], helping this fledging nation while gaining access to Q'barran [[dragonshard]]s. The Seadragons also have cultivated a business partnership with House [[Orien]], acting as a merchant and courier fleet throughout the [[Lhazaar Principalities]].
A coastal town in southern [[Cyre]], Seaside was a popular vacation spot even during the [[war|Last War]]. While not as celebrated a destination as [[Stormhome]] in [[Aundair]],
the memory of Seaside has become an iconic image of
peace and tranquility for the people of Cyre. 
The Seawall Mountains form the border between the nations of [[Zilargo]] (west) and [[Darguun]] (east). It extends from [[Sterngate]], [[Breland]] south to [[Korranberg]], [[Zilargo]]. These mountains are home to a community of Zil [[gnome]]s and [[dwarves|dwarf]] in the mine city of [[Zolanberg]], as well as many tribes of [[kobold]]s and [[goblinoid]]s that have lived here for centuries.

King Sebastes ir'Kesslan rules [[New Galifar]] in [[Q'barra]] as a feudal realm. He is the 
grandson of Duke [[Ven ir'Kesslan]], the founder of the settlement. During the deliberations over the [[Treaty of Thronehold]] in 996 YK, Sebastes (accompanied by High Elder [[Bhisma Na'kala Flamebrow]] of [[Ka'rhashan]]) was the representative that contended for the nationhood of Q'barra. 

Sebastes is seen as a just monarch who truly cares for his people, and the law
in New Galifar is modeled on that of old [[Galifar]] and
(by extension) the [[Five Nations]]. Though Sebastes has
no real influence in [[Hope]], some of the folk of that
territory look to him for aid and protection. 

King Sebastes has worked hard to earn the
trust of [[dragonborn]] and [[lizardfolk]] leaders, and he
has forbidden any [[dragonshard]] mining in scale territory.
Unfortunately, Sebastes’s reach is woefully limited,
and what forces he has have been strained trying
to protect his people from the increasingly aggressive actions of the [[Poison Dusk]]. On the surface, House [[Tharashk]] respects Sebastes’s edict, though Lord [[Khalar Velderan]] continues to lobby for a free hand in the region. 

!! Sebastes and the Inspired

Eberron [[dragonshard]]s are as useful to the [[psion]]s of
[[Riedra]] as they are to the [[artificer]]s of [[Khorvaire]], and
such shards are extremely rare in [[Sarlona]]. As a result,
the Riedrans are extremely interested in [[Q'barra]]. The [[Inspired]] ambassador [[Jhakanath]] has provided King
Sebastes with a garrison of troops to help defend his young nation, and a [[Riedra]]n quarter has sprung up in the city of [[Newthrone]]. Jhakanath is purchasing
large quantities of shards from House [[Tharashk]], but
the [[Inspired]] have also secured permission to start
their own mining operations. Nonetheless, the richest shard deposits lie in the lands of the [[scales]], and Sebastes won’t let the Riedrans threaten his relationship with the [[lizardfolk]] or [[dragonborn]]... yet.

The [[Inspired]] have ways of influencing people, and Sebastes might have dreams of the threat posed by the [[scales]]—dreams that encourage him to accept further aid from [[Riedra]], and to build up an army strong enough to seize land from the [[dragonborn]] and claim the kingdom his people deserve. Sebastes isn’t the only target for such influence; the Inspired can also further this goal by planting dreams in the minds of the dragonborn. Conflict in [[Q'barra]] serves the Inspired well, since it increases Sebastes’s need for Riedran troops.
The Second Son is [[archfey]] representing the jealous heir who stands just
beyond the claim to a title. He is always scheming to
usurp power or steal the things that belong to others. In
most tales, his gambits ultimately end in failure, further
driving his bitterness. His formal title in the [[Moon Court]]
is the Count of the Barren Marches, as his lands are
always inferior to those of his siblings.
This small dart is decorated with designs like windy spirals that span the length of its shaft.

When you whisper the word "seek" and hurl this dart, it seeks out a target of your choice within 120 feet of you. You must have seen the target before, but you don't need to see it now. If the target isn't within range or if there is no clear path to it, the dart falls to the ground, its magic spent and wasted. Otherwise, elemental winds guide the dart instantly through the air to the target. The dart can pass though openings as narrow as 1 inch wide and can change direction to fly around corners.

When the dart reaches its target, if the target can't dodge it, they are pierced by the dart and suffer additional lightning damage. The dart's magic is then spent, and it becomes an ordinary dart.
You send a short message of twenty-five words or less to a creature with which you are familiar. The creature hears the message in its mind, recognizes you as the sender if it knows you, and can answer in a like manner immediately. 

You can send the message across any distance and even to other planes of existence, but if the target is on a different plane than you, there is a small chance that the message doesn't arrive, or becomes garbled.
This olive-green cloak with silver shield clasp is sentient, preferring to go by the name Oscar. He is a noble soul, and if he is fond of the wearer, will keep an eye on them and pull them out of harm's way when he can.

Oscar was once a knight in a king's army, but his life as a human was a very long time ago, and his memory of it all is vague.
These delicate, red silk shoes are sentient, and prefer to go by the name Bianca. Her nature is very noble and lady-like. She is capable of leading the user through every dance imaginable, however she is a very stubborn pair of shoes. She will throw a fit and refuse to move if the user's feet smell, or if the ground is muddy.
House [[Deneith]] oversees the activities of the Sentinel
Marshals who, by ancient decree, provide law and order
across national boundaries. Operating out of [[Sentinel Tower]] in [[Karrnath]], marshals work alone or in small
groups to apprehend [[Khorvaire]]’s greatest criminals.
And Khorvaire is replete with war criminals, many
of which have protection or influence in their home
countries... until a Sentinel Marshal appears.

As bounty hunters, the Sentinels are without peer. In the early years of the
kingdom of [[Galifar]], the Sentinel Marshals were granted the
right to enforce laws and bring fugitives to justice throughout
the land. When the kingdom shattered with the eruption of the [[Last War]], the
organization recast itself as a neutral force policing
war crimes, the treatment of prisoners, war profiteering, and the impartiality of the [[dragonmarked house]]s. These activities caused conflict with nearly
every power base on the continent at one point or
another during the war. The Sentinels’ perseverance during the war years left the group as the only viable entity to police the [[Thronehold]] peace once
hostilities ceased. 

Today, all the nations that signed the [[Treaty of Thronehold]] have agreed to
allow [[Deneith]] to continue in this role as international police
officers as they have for centuries. Each marshal periodically returns to the [[Sentinel Tower]] in [[Karrlakton]] as
time and circumstance permits to report on their activities
and receive updated instructions.
[[Karrlakton]] is home to the Sentinel Tower, a mighty fortress at the city’s center. A stern edifice of angular stone, Sentinel Tower radiates martial authority and is one of the most
heavily defended fortresses in [[Khorvaire]].

Older than [[Karrnath]] itself, the
ancient keep known as Sentinel Tower is the main
enclave of House [[Deneith]], the headquarters of the
[[Sentinel Marshals]], and a fortress charged with
repulsing periodic monster attacks from the [[Mournland]], just across the river. Its history is rich; [[Karrn the Conqueror]] commissioned the first of his generals
atop Sentinel Tower. The keep is a confusing maze of
fortifications, since its defenses have been renovated
and augmented numerous times.
Sentira is a form of solidified emotion, created by the [[Inspired]] of [[Sarlona]]. It has an opalescent, organic texture similar to polished horn; the color depends
on the emotion used in its creation, and the wearer can feel
that emotion as a constant background presence in their
mind. As a material, sentira is light and extremely strong,
similar to [[mithral]]; an agent of the [[Dreaming Dark]] might wear
armor that's functionally mithral armor but actually made
from sentira.
This gnarled root is native to the [[Syrkarn]] region of [[Sarlona]], and is prized for its high nutritional value. The only other place it is known to grow is in a few of the islands of the [[Lhazaar Principalities]], where it is a cuisine staple in some communities.
Serpent cults are the [[Silver Flame]]'s oldest tradition, though
they're virtually unknown in the present day. Rather than
venerating the Flame itself, serpent cults honor the countless
[[couatl]] whose sacrifice brought it into being. A common myth
says that the couatl were formed by the last breath of [[Siberys]],
unleashed to contain [[Khyber|Progenitor Dragons]]'s evil. These cults maintain that
the Silver Flame was formed when the couatl sacrificed their
individual existence and bound their celestial energy together to
bind the [[overlord]]s; research suggests that this is true, though it's
not in the common doctrine of the church. Rather than revering
a [[Voice|Tira Miron]] or [[Keeper of the Flame]], the serpent cults listen for the
guidance of couatl themselves. A few couatl did remain separate
from the Flame in order to serve as guardians or carry out
specific missions, and it's also possible for couatl to temporarily
serve as spiritual guides; this was the case with [[Tira Miron]], and
could also be the case with an [[aasimar]] tied to the [[Silver Flame]].

As a member of a serpent cult, you possess secret knowledge
about the Silver Flame that the modern church knows nothing
about. If you're tied to a serpent cult, work with your DM to
determine its size, origin, and influence. Is your sect a band
of six people living in the [[Blade Desert]], or are you tied to the
[[shulassakar]]—a race of rainbow-feathered [[yuan-ti]] who have
been watching from the shadows for millennia? Do your roots go back to the ancient theocracy of [[Khalesh]], now a province of [[Riedra]]? Do you have
a specific mission? Or do you have a less-spiritual reason for
adventuring, despite your unusual faith?
In order to attune to this magic item, you must possess the [[Mark of Shadow]].

This ornate mirror is typically about 6 inches in diameter. While touching it, you can cast the [[scrying]] spell with it.

<<<
!! Scrying
{{scrying}}
<<<
The Serpentine Table is the espionage arm of House [[Phiarlan]]. Few people outside the
house even know of its existence, and hardly any of its
lower-level operatives realize the full implication of
their service. They simply collect and pass along information, never knowing how it is used. 
One of the highest peaks of the
northern [[Seawall Mountains]], Pargon’s Peak contains a
network of remarkable caves said to be closely tied to the [[Draconic Prophecy]]. The Seven Caves, as the [[Dhakaani|Heirs of Dhakaan]] and [[Marguul]] clans call them, consist of seven huge vaults
that seem to be magically dug from the living stone of the
mountain. From the First Chamber that can be reached
from a cave opening high in the mountain, to the Seventh
Chamber that plunges toward the very bowels of the world,
the Seven Caves are wondrous and awe-inspiring. Inside
each strangely shaped cavern, amazing patterns resembling [[dragonmark]]s glow and swirl across the walls, floors, and ceilings. Each cave, in theory, reveals a different series of omens and portents, but few among the [[goblinoid]]s have the courage to
brave these sacred vaults to study them. Anyone who does
attempt to enter the Seven Caves must contend with the
[[wyvern]] colonies that regularly use them to nest and raise
their young.
Seventh is a small island in the [[Lhazaar Principalities]], located just south of [[Ninebay Island]]. A small town tended by Prince [[Lorrister]] of the [[Heavenly Fleet]] serves as a bastion for the [[Sovereign Host]] and Church of the [[Silver Flame]] in the midst of the otherwise faithless principalities.
''District Type:'' Fine shops<br/>
''Buildings:'' Upscale lodging (15), upscale food (25),
exotic trades (40), upscale trades (120), upscale
residences (80)<br/>
''First Impression:'' Stores, restaurants, hotels, and
a few townhomes in this prosperous neighborhood
appear high-priced and lavish.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Ivy Towers]] (north); [[University District]] (northeast); [[Highhold]] (bridge, west); [[Sunrise]] (bridge, south); [[Cassan Bridge]] (below)

Named for its most prominent architectural feature, Seventh Tower holds the distinction of being the finest shopping district in [[Menthis Plateau]].
A number of rare book dealers and antiquities shops
set it apart from similar districts, such as [[Platinum Heights]] in [[Upper Central]]. 

!! Noteworthy Locations

* [[Galdin's Garden]]. One of the finest restaurants in Sharn.
* [[Little Xen'drik]]. This area of small shops deals in antiquities and relics recovered from [[Xen'drik]] and the ruins below Sharn. ''Cloud Antiquities'' specializes in [[giant]] artifacts, while the ''Mekdall Gallery'' deals in ancient [[elven|elf]] and [[drow]] goods. ''Windows on Yesterday'' looks for items with historical significance, and ''Echoes of the Past'' deals in [[magic item]]s with practical uses. 
The [[upper ward]]s of [[Sharn]] use a network of chutes to
funnel garbage down into the sewers. Refuse and filth is
channeled into cavernous midden chambers, where it is
left to rot or be devoured by the vermin and [[ooze]]s that
inhabit the sewers. Smaller tunnels channel wastewater
into purification centers, where [[magewright]]s use magic
to cleanse the water. A special unit of the [[Sharn Watch]]
protects the purification chambers. Beyond these small,
vital areas, the sewers are lawless.

Though the sewers were never intended to support a
population, over the centuries a subculture has evolved
in this region. A few tribes of people—mostly [[goblin]]s,
along with a few [[shifter]]s, [[dwarves|dwarf]], and feral [[halfling]]s—live in the sewers, rummaging through the midden
heaps and selling their goods in the lower city. These
sewer clans constantly battle over territory, as control
of one or more midden chamber can be critical to survival. The sewer clans can pose a threat to adventurers,
but they can also be valuable allies; there are no better
guides to the sewers and what lies beneath them than
one of the folk who live there. 
This longsword was forged in //khaar'draguus//, the lava pits below
[[Sharn]], and wielded by an ancient [[Dhakaan]]i hero who fell in
battle against the [[daelkyr]] [[Belashyrra]]. A sentience lies within the Blade of Truth; it doesn't communicate with words, but while attuned, you can feel its emotions and desires. Shaarat'doovol was forged to protect the innocent from the machinations of the daelkyr, and if it feels you are serving that purpose, it can grant great power.

This magic weapon is immensely powerful under normal circumstances, but when you strike an [[aberration]], it is scorched by a searing light.

//''Unyielding Duty.''// If you have the favor of the sword, it guides
you and shields you from unnatural influences. While wielding
this sword, it can choose to grant you the following benefits:
you gain [[truesight]] with a range of 90 feet, you can't be charmed
or frightened, and you have resistance to psychic damage.
Shadar-kai are servants of the [[Queen of the Dead]], [[shade]]s
granted new life. Though their new forms appear [[elf]]-like, they
might've been any sort of humanoid in their previous life; when
they caught the Queen's attention, she preserved their soul from
entrapment. The shadar-kai serve in the [[Vault of Memories]], and
occasionally as her hands on [[Eberron]]. They might clash with
[[necromancers|necromancy]] (especially the agents of [[Lady Illmarrow]]), collect
trinkets, or target mortals with no rhyme or reason. Many sages
attempt to explain these enigmatic actions, often speculating that
they're collecting especially tragic memories for the Vault.
Shades are mortal souls that are freshly arrived in [[Dolurrh]].
They maintain a portion of their memory and original
appearance, though they're insubstantial and can't interact
with material objects. Shades are susceptible to the ennui of Dolurrh, and as the effect accumulates, their appearance blurs and their memories
slowly fade. Shades can speak, and they may cry or beg
adventurers to help them; however, most are incapable of
taking any actions on their own. They're often found lost in
thought, trying to remember something they've forgotten, or
fixating on a past mistake.
The war between the Shadow and [[Aureon]] rages in all of us.
Aureon's voice tells us that we are stronger together, that
it's worth it to suffer for the sake of the common good. The
Shadow whispers that there is no common good—all that
matters is what you need and what you can do. Why should
you make sacrifices for others instead of doing what's best for
yourself? Why should you give when you can take?

The Shadow is the Sovereign of ambition. Those who revere
it view this as a positive trait; the Shadow will show you how
to be the best you can be. But how far will you go in pursuit of
your ambition? What—or who—will you sacrifice? Priests who
embrace this aspect of the Shadow call themselves Mentors,
emphasizing that they can show you how to achieve your full
potential; others call them Tempters, as they will always drive
you down the darkest path. The [[Pyrinean Creed]] says that
the Shadow consumes the souls of those who fall prey to its
temptation; a Mentor will tell you that this is exactly the sort of
lie the Sovereigns use to trick you into following their rules.

The Shadow is also the keeper of forbidden knowledge, of
secrets you know you shouldn't pursue. This includes [[arcane magic]]—granting powers virtuous people should shun. Any spellcasting
character could attribute their powers to the Shadow; a [[wizard]]
might have been struggling with their studies, but after a
sacrifice to the Shadow, they awoke with new insights. The
Shadow can also serve as a [[warlock]]'s patron. While the Shadow won't interact
directly with a warlock, they could receive visions like a priest;
they could interact with a [[fiend]] who claims to speak for the
Shadow; or they could be mistaken about the nature of their
patron, and actually be bound to the [[overlord]] [[Sul Khatesh]].

In addition to mystical knowledge, priests of the Shadow
often know things they simply shouldn't know—secrets that can
harm people if revealed. Priests of the Shadow can sometimes
be found working as fixers in the criminal underworld; how
much are you willing to pay for the knowledge you seek?

Beyond all this, the Shadow is seen as a corrupting force that
creates monsters, both figuratively through temptation, and
literally—it is said to have created many of the [[monstrosities|monstrosity]]
that prey on innocents. In turn, many monstrous creatures see
the Shadow as their patron.

The Shadow's symbol is an obsidian tower.

<<<
''Forbidden Magic''<br/>
The Shadow tempts you to perform evil actions and can teach
spells no one should know. A DM could choose to grant a character one or more
additional spells that have dangerous or unpleasant side
effects every time they're cast. Or the Shadow could grant a
spellcaster the ability to increase the power of any spell they
know—as if it was cast at a higher [[tier|spell tier]]—once
per day, but in doing this, it triggers a negative effect.
Regardless of what effects you establish, they should
illustrate a clear and concrete reason why this magic is
forbidden. Someone or something will pay a price every time
this magic is used. Consider the following ideas:

* When you cast the spell, you or one of your allies suffers necrotic damage or a disadvantage on their next action.
* When you cast the spell, an innocent creature dies. You have no control over who will suffer and may never know who it is.
* When you cast the spell, plants wither and all living creatures within 15 feet of you take necrotic damage.
* When you cast the spell, choose an ally within sight. That player can reveal a disturbing secret about their character to you. This must be worse than any previous secret they've revealed; if they can't or if they choose not to, the spell fails.
* When you cast the spell, the effect of the spell itself is particularly horrifying.
<<<
Shadows are [[manifestation]]s of [[Mabar]], resembling dark exaggerations of [[humanoid]] shadows. They are classified as [[undead]] despite being pure manifestations of the Endless Night. 

From the darkness, the shadow reaches out to feed on living creatures' vitality. As a shadow drains its victim's strength and physical form, the victim's shadow darkens and begins to move of its own volition. In death, the creature's shadow breaks free, becoming a new undead shadow hungry for more life to consume.

Some scholars assert that every mortal has a shadow in Mabar, like the [[ember]]s of [[Irian]], and that each shadow is a dark sliver of each soul. 
The Shadow is the [[barony]] of the [[Lady in Shadow]], with
branches reflecting the many tales of this sinister figure.
It includes a tiny kingdom, which serves as the set for the
Sleeping Prince and similar tales; the kingdom is often named
Whitestone, though this can change. The secret garden of the
Lady is walled and protected by dangerous plant creatures,
but holds imaginary flowers that an [[alchemist]] could use to do
amazing things. The Lady's tower is hidden within a maze of
thorns. Any story dealing with a sinister spellcaster dwelling
on the edge of civilization could be found here.
When thrown, this curved obsidian dagger vanishes in a
puff of dark smoke, becoming invisible. When it strikes a
surface, the dagger reappears in a puff of smoke.
In order to attune to this magic item, you must possess the [[Mark of Shadow]].

A pair of shadow eyes consists of 2 bundles of [[dragonshard]] slivers bound with copper bands. The holder of a shadow eye can cast [[clairvoyance]], targeting the other eye of the pair.

<<<
!! Clairvoyance
{{clairvoyance}}
<<<
''Capital:'' [[Zarash'ak]] (unofficial)<br/>
''Hallmarks:'' Eberron [[dragonshard]]s, herbs

When most people think of the Shadow Marches, they
imagine a fetid backwater where illiterate [[human]]s
mingle with [[orc]]s and other foul creatures, practicing
strange rites by the light of the moons. While flawed,
this vision isn't entirely inaccurate. The Shadow
Marches are a desolate land of swamps and moors. The
homeland of the orcs, the Marches were scarred in the
ancient conflict with the [[daelkyr]]. The fiends left twisted
creatures and [[aberration]]s in the swamps, and sowed
seeds of madness that linger to this day. There are indeed moonlit rituals in the Marches: some to honor the daelkyr, others to maintain the wards that keep them
trapped in [[Khyber]].

Humans came to the Marches long ago, refugees
fleeing a war in the distant land of [[Sarlona]]. Over time
the two cultures merged, forming the Marches as they
exist today.

The Marches had little contact with the Kingdom of
[[Galifar]] or the east until a few hundred years ago, when
a House [[Sivis]] expedition made two discoveries: the region contained valuable [[dragonshard]]s, and a number of
clans had manifested the [[dragonmark]] of [[Finding|Mark of Finding]]. This
led to the foundation of House [[Tharashk]], as these clans
joined together to master the economic potential of their
mark and leverage their mineral wealth. 

The Shadow Marches aren't a nation. No one voice
speaks for the clans and tribes, and most of the tribes
have no interest in dealing with outsiders. House [[Tharashk]] is the largest faction in the region, and their city of
[[Zarash'ak]] is the center for commerce.

House Tharashk is the main point of contact between
the Shadow Marches and the outside world. Tharashk
aside, the region remains a collection of tribes and cultists following their ancient traditions in the shadows of
the swamps. 

!! Interesting Things About {{!!article}}{{!!title}}

* The untamed Shadow Marches are filled with mysteries. Relics of the [[daelkyr]] rest undisturbed in the depths of the swamps, along with foul monsters and [[druid]]ic shrines.
* The Marches are the birthplace of the [[druid]]ic tradition of the [[Gatekeepers]]. Long ago, this sect defeated the vile [[daelkyr]]; today, its last champions continue to protect [[Eberron]] from [[aberration]]s and other extraplanar threats.
* Even in defeat, the daelkyr sowed seeds of madness in the Marches. Followers of the [[Cults of the Dragon Below]] remain scattered across the region. Some of these cults work with [[mind flayer]]s and other [[aberration]]s. Others have no evil intent but are driven by dangerous delusions. 

!! Marcher Characters

As you develop a Marcher character or NPC, consider
the following:

* ''The Mark of Finding.'' An alliance of Marcher clans formed House [[Tharashk]], but not all those who carried the mark chose to join this house. As a [[half-orc]] with the [[Mark of Finding]], you could be a child of the Marches with a strong tie to the house, or you could be a scion of a small tribe of hunters, proud of your independence and suspicious of the houses. Your ties to the Marches might be distant because you were born to a family that left years ago. Do you want to rediscover your ancestral roots?
* ''Madness and Mysticism.'' Most Marchers have a mystical view of the world, beliefs shaped by the traditions of the [[Gatekeepers]] and the madness of the [[daelkyr]]. Marchers typically feel that the people of the treaty nations are blinded by their civilized ways. You have heard the truth in the voices of croaking frogs and seen it in the shadows shifting on the water. Whether you're loyal to the [[Gatekeepers]], the [[Sovereign Host]], or the [[Dragon Below|Cults of the Dragon Below]], superstitions inform your path.
* ''Clan or Tribe?'' The people of the Shadow Marches are split into two distinct cultures. The clans blend the traditions of [[human]] and [[orc]], building towns and working with steel. If you were raised in one of the clans, the ways of civilization aren't that strange to you; you've seen the city of [[Zarash'ak]] and worked with House [[Tharashk]]. By contrast, the Marcher tribes maintain traditions that predate humanity. As nomadic hunter-gatherers, they don't work metals; they make their tools from stone, hide, wood, and bone. If your character is from one of the Marcher tribes, you might be the first of your people to leave the swamps. Why have you left your people, and how are you adapting to this new world? 

!! Cities and Sites

The clans of the Shadow Marches primarily live in small
towns and villages, their huts raised above the swamps
on stilts. The Shadow Marches contain many [[manifest zone]]s tied to [[Xoriat]] and [[Kythri]], the planes of madness and chaos.
Time moves strangely in places in the deep swamps,
which twists mundane beasts and plants into strange
shapes. [[Daelkyr|daelkyr]] ruins linger in these areas, remnants of
the ancient war against the [[goblin]]s and [[orc]]s that once
dominated [[Khorvaire]].

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

The Shadow Marches aren't a nation, and the region
wasn't recognized by the [[Treaty of Thronehold]]. Most
Marchers have little interest in the outside world.
Marcher tribes don't know the names or number of the
nations beyond the swamps, let alone that they were
at war. However, as House [[Tharashk]] gains power and
influence in the world beyond the swamps, it has increased its presence in its homeland. The house has
expanded [[Zarash'ak]] dramatically over the last decade
and is working on transforming other towns into cities.
This has caused tension with a number of tribes. And
House Tharashk's mining operations and its urban
expansion always run the risk of disrupting [[Gatekeeper|Gatekeepers]]
seals and unleashing ancient evils bound beneath
the Marches. 
Crafted by [[Dyrrn]] the Corruptor, this black jewel-like object
fuses to the center of your forehead when you attune to it.

You can cause the shadow sibling to
exude or retract an ectoplasmic shadow that surrounds your
body and conceals you from prying eyes. While the shadow is active, you aren't quite invisible, but you have a large advantage to hiding and moving stealthily. 
The Shadowcrags are a rugged mountain chain that link the western [[Stone Cage Mountains]] to the eastern [[Icehorn Mountains]] in [[Khorvaire]], forming part of the border between the [[Demon Wastes]] and the [[Eldeen Reaches]]. Large sections of the northern face of these mountains end suddenly in precipitous cliffs of volcanic glass.

These mountains include the volcanic [[Lake of Fire]].
The Shadowflow River in [[Khorvaire]] flows from the [[Shadowcrags]] into [[Crescent Bay]]. It forms part of the border between the [[Eldeen Reaches]] and the [[Demon Wastes]].
Shadowmount Forest is a small forest in [[Karrnath]], near [[Vedykar]].
Shadukar is a graveyard of blackened rubble and burned trees, its people restless spirits sifting through the ashes of the past. Its ruins are a grim reminder of the cost of the [[Last War]]. Once known as the Jewel of the [[Sound|Scions Sound]], this coastal
city was destroyed in a bitter siege against [[Karrnath]]i forces. The city has yet to be reclaimed, and it's said to be haunted both by [[Thrane]] [[ghost]]s and by [[undead]] forces left behind by the Karrns.
This city is the capital of [[Aerenal]], the seat of the [[Sibling Kings]], and the center for commerce and diplomacy between the [[elven|elf]] families, who otherwise remain isolated
in their own city-states. Foreigners are encouraged to conduct business in [[Pylas Talaear]]. 
This otherworldly [[eladrin]] citadel stands as a vision of [[fey]] beauty in the harsh land of [[Darguun]]. Gleaming green orbs drift lazily around its high towers, giving it the name of the Spire of Emerald Lights. Its iridescent, whorled walls are reminiscent of a vast seashell. 

The [[illusion]]ists of Shae Joridal are legendary. The [[feyspire]] is ruled by the [[eladrin]] Taranel Tanaer.
''District Type:'' [[Elf|elf]] neighborhood<br/>
''Buildings:'' Temples ([[Onatar]], the [[Undying Court]]),
shrines ([[Aureon]], the [[Undying Court]]), upscale lodging
(5), upscale food (15), exotic trades (15), upscale trades
(63), upscale services (20), upscale residences (120)<br/>
''First Impression:'' The district is filled with beautifully sculpted statues of long-dead elves. Densewood warriors stand guard at the gates of townhouses, while statues of priests and honored elders are spread throughout plazas and open-air orchards. The residents move quietly among these statues of the dead, carrying out their daily activities with silent grace.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Oak Towers]] (southeast); [[High Hope]] (below)

While naturalized [[elves|elf]] can be found throughout
[[Sharn]], Shae Lias is a bastion for the values and traditions of the elves of [[Aerenal]]. Orchard balconies ring
the neighborhood; the restaurants of the district own
some of these, while others are open to the public for
purposes of meditation and reflection. In addition to
serving as a residential district for Aerenal expatriates, it is a source for a wide range of elven craftwork,
woodwork, and furniture. The district also includes
a handful of more exotic establishments.

!! Noteworthy Locations

* [[Gates of Passage]]. Built from Aereni [[densewood]], this spire serves both as the embassy of [[Aerenal]] and a temple of the [[Undying Court]]. Aereni citizens who die in Sharn are interred in the temple crypts until their remains can be transported to Aerenal. 
* The [[House of Repose]]. A collection of elf artisans specializing in embalming and crypt-building.
* [[Nightshade]]. An apothecary dealing in exotic herbs and salves, Nightshade is also a tavern specializing in lightly poisoned beverages. 
* The [[Oaks]]. A legendary restaurant that serves Aereni and [[Brelish|Breland]] cuisine. The quality is unmatched, as are the aristocratic prices. Head chef [[Maza Thadian]] has maintained the Oaks for over three hundred years, but after her recent appointment as [[city councilor|Sharn Council]] for [[Upper Northedge]] she is often occupied with other matters. 
* The [[Silver Bough]]. This establishment deals in arms crafted in the [[Aereni]] tradition. This merchandise includes [[magic item]]s, but woodshaper Tanar Mendyrian takes time to produce his wonders, and only a limited selection is available at any given time. 
* The [[Winding Root]]. A marketplace and gallery that showcases the work of elven artisans, including sculptures, textiles, and fine clothing. 
* The [[Veil of Flesh]]. This studio deals in Aereni body art and alteration, such as tattoos and [[cosmetic transmutation]]. 
Shae Loralyndar is the City of Rose and Thorn, an arboreal [[feyspire]] frequently found in the [[Twilight Demesne]] of the [[Eldeen Reaches]]. Its peak-roofed houses are connected by slender bridges, beautiful rose gardens spreading between them as the towers of the [[eladrin]] lords rise high above. Many [[Greensingers]] have close ties to this city.

Lord Eversun rules Shae Loralyndar as he has for centuries. For all that time, a rivalry has existed between the spire and [[Pylas Pyrial]].
Also known as the City of the Dead, this ancient citadel houses the [[Undying Court]], the
[[deathless]] ancestors who shape the destiny of [[Aerenal]]. It
is built atop a rift to the Plane of [[Irian]] and suffused with
positive energy. Almost no commerce takes place here.
This center for arcane study also serves as a memorial
to all the heroes of the [[elves|elf]], both the deathless and
those lost in the distant past. The Citadel of the Court
is said to be far larger than it appears and to hold the
greatest treasures of the elves. 
Shae Tirias Tolai is the City of Silver and Bone. Tied to
[[Xen'drik]], this [[feyspire]] was destroyed and pillaged by the giants of the [[Cul'sir Dominion|Cul'sir]] and never reclaimed; some believe the [[elves|elf]] of Eberron are
descended from the [[eladrin]] of Shae Tirias Tolai. Today, it's a
haunted ruin, shunned by the [[fey]].
Shaelas Tiraleth is the Court of the Silver Tree, largest of the
[[feyspire]]s. Its ruler, Shan Tira, is a master [[diviner|divination]] and gifted
oracle. All [[archfey]] respect her words, and she serves as a
mediator between the seasons of the [[Moon Court]]. The spire
is tied to [[Cyre]], and there are stories that suggest the first
Princess [[Cyre|Cyre ir'Wynarn]] herself may have been a student of Shan Tira.

It stood in splendor above the lush green hills and shining waters of [[Kraken Bay]] before it was engulfed in the [[dead-gray mists]] of the [[Mourning]]. None know what has become of Shaelas Tiraleth or its inhabitants; it has not been seen in the [[Moonlit Vale]] since that dreadful day, and no explorers of the [[Mournland]] have yet found their way to the spires and returned.
The [[Bloodsails]] are one of the most stable of the [[Lhazaar Principalities]], and Prince Shaen Tasil has ruled for over a century. Shaen is cool and calculating; she has no interest in holding the position of high prince, but she keeps a close eye on political struggles and has often served as a mediator. The previous leader was [[Prince Moren|Ship of Bones]]; according to legend, Moren was cursed for his dark practices and now sails the [[Bitter Sea]] in a ship of bones.
High King Shaeras Vadallia rules the martial nation of [[Valenar]] in [[Khorvaire]].

Vadallia came from the [[elves|elf]]’ homeland of [[Aerenal]] as the leader of a host of elf mercenaries. During the [[Last War]], the leaders of [[Cyre]] bought the allegiance of the [[Valaes Tairn]]—the largest faction of the [[Tairnadal]], the elven warclans of northern [[Aerenal]]. Establishing their war camps at the southern tip of Cyre, the elves quickly became the most devastating component of Cyre’s cavalry and commando forces.

Led by Vadallia, the elves targeted [[halfling]] war
bands, [[hobgoblin]] mercenaries, and the forces of
[[Breland]] and [[Karrnath]]. Though [[Cyre]]’s enemies tried
to buy the elves’ services, the [[Valaes Tairn]] stayed
unfailingly loyal to Cyre for over thirty years. It was
thus a shock when elves turned on their Cyran paymasters and seized the lands they had defended for decades. Shaeras Vadallia proclaimed himself high
king of the new nation of [[Valenar]], using an ancient
elven claim to the land to justify his actions.

When Vadallia led his warriors to [[Khorvaire]] to
fight under the flag of [[Cyre]], it was for the glory of
war. The [[Tairnadal]] elves devote their lives to martial
training, but war games are no match for a chance
to engage in true battle. War in Khorvaire promised
the elves a chance to win glory in their ancestors’
names, even as entering the fight on the side of
beleaguered Cyre provided a fine opportunity to
hone the skirmisher tactics they had perfected over
generations. But as the struggle
settled into a routine, the challenges faded. Some
say the Queen of Cyre insulted Vadallia, but most
believe that it was the desire for glory that drove the
war leader to turn on Cyre and annex the lands he
once defended.

Each of the forty-five warclans of the [[Valaes Tairn]] is obligated to take a
turn serving High King Vadallia as part of the
Host of [[Valenar]]. The host consists of twenty
warclans—ten tasked with maintaining order
throughout the realm, and ten engaged
in military operations as directed by the
crown. A warclan serves on the Host
of Valenar for ten years before being
released to conduct independent operations and raids, though warclans can
be recalled to assist and support the
Host of Valenar by the high king.

The warclans of [[Valenar]] have only one goal—glory
in combat. And while the [[Valaes Tairn]]’s border raids
are seen as little more than posturing by disaffected
troops, it has been suggested that High King Vadallia
has an ulterior motive. Valenar’s raids are carried out
by independent warclans, never by the Host of Valenar. However, Vadallia makes no real effort to stop the incursions, and many believe that with the [[Last War]] ended, the Valaes Tairn are attempting to goad Valenar’s neighbors (particularly [[Karrnath]]) into a
full-blown military response. If war does erupt again in southern Khorvaire, the elves are well prepared for a long and glorious campaign.
Only 22 miles from the nearest [[Riedra]]n settlement
in the foothills of the [[Ahnadiv Mountains]], Shalquar is
the sister citadel of [[Malshashar]] and also on the front
lines of the ongoing conflict with Riedra. It serves as a
base for [[Adar]]'s defenders and a gate to Adar's interior.
Shalquar is carved between and under two mountains,
and inhospitable peaks surround it.
This is the largest and most successful tavern in the region, and it is the safest
place to deal with members of [[Daask]]. Shamukaar
is simultaneously a slaughterhouse, a butcher shop, a restaurant, and a tavern. It caters to [[Droaam]] immigrants, a category that includes many different
species; [[ogre]]s, [[gnoll]]s, [[harpies|harpy]], [[minotaur]]s, and even [[medusa]]s can be found at the bar. The [[goblin]] chefs
can prepare an astonishing assortment of meals, all
of which share one thing in common: they are disgusting to [[human]]s.

Despite the monstrous nature of its patrons, Shamukaar is one of the safest places in [[Khyber's Gate]]. Even the monsters of [[Daask]] recognize the need for
a neutral ground and a safe haven, and Shamukaar
serves that purpose. Unless provoked beyond measure,
a resident of Khyber's Gate will not start a fight in
Shamukaar. And if anyone does start a fight, all other
patrons unite together to subdue the aggressor. 
Long ago, the [[quori]] meddled with the bloodlines
of all sorts of creatures in [[Sarlona]] in their efforts to
create perfect [[vessels|Chosen]]. They quickly discovered their
interference had created a backlash in nature—[[quorbred|quorbred creature]],
creatures antithetical to [[psionics]]. One such
place was the Shanjueed Jungle in western [[Corvagura]]
near [[Adar]], where the [[quori]] had manipulated the fauna
for centuries, testing their ideas on material hosts.

''Wyndurgha'', an [[Inspired]] lady who controlled western
[[Corvagura]], conceived a plan to destroy the beasts of the
Shanjueed. She had discovered a strange focused energy
near the forest's heart. Her people built a [[monolith|hanbalani alta]] in the
center of the jungle and a wall around the woodland to
contain its //altavars//, or so Wyndurgha told them. The workers cleared all the remaining vestiges of the jungle from
outside the wall, killing any creatures they found. Wyndurgha then went inside to destroy the evil spirits forever.

She never returned. Her people claim she sacrificed
herself to protect them. The truth is, Wyndurgha's plan
failed catastrophically. Her attempt to use the monolith
amplified the forest's connection to [[Mabar]], infecting the
Shanjueed with a creeping [[undeath|undead]] that has now reached
the walls built to contain it. 

!! Notable Features

Shanjueed Jungle is one of the largest [[Mabar]] [[manifest zone]]s on Eberron. The center of the zone lies in the heart of the forest. It expands slowly each year and now covers a circle nearly as wide as the forest. Within the zone, it is
as if Mabar were coterminous with Eberron. In addition, anyone slain in the forest rises as a random type of [[undead]] the next night (usually a [[zombie]]). Several [[terrible cyst]]s also exist within the corrupt jungle.
At the forest's very heart, where Wyndurgha's [[monolith|hanbalani alta]]
once stood, the traits of [[Mabar]] hold complete sway in a
300-foot sphere that is also expanding.

The wall that holds the jungle back is manned by
[[Edgewalker|Edgewalkers]] troops who see it as their honor to keep the
evil within. No gate bridges the outside world and the
jungle. Nobody is allowed to enter or leave the Shanjueed,
under penalty of death.

Still, the forest does have uncorrupted inhabitants.
A nameless [[druid]] with wild red hair and a young face lives in the southern jungle.
Animals and plants are her only friends, and she speaks
only with her mind. Following are the details of her
living area in the Shanjueed.

!!! Hut and Surrounds

A plain wooden hut sits in the
midst of many trees and under one particularly massive
one. Its roof is made of bark and grass. The doorway faces
north, covered only by a tangled curtain of vines. No
windows are set into the walls.

Near the hut, the ground is clear, but elsewhere it
is choked with light and heavy undergrowth. Freshwater
bogs, shallow and deep, make the area treacherous. A [[dire ape|dire beast]] watches the
hut from nearby if the [[druid]] is home. 

!!! Secret Chamber

Although the hut appears
simple and has a grass pallet for sleeping, underneath
a grass rug in the center is a hidden trap door. Beyond the door is the nameless druid's true living space carved out of living rock. The place is
cool and dry, except for a small pool of pure water
that wells up from deep underground. A comfortable
bed of furs occupies a small place on the floor, which is
otherwise empty. The whole cave is painted with scenes
of life and death in the Shanjueed, images layered one
over another.

A small side cave contains paints, brushes, and the
tools for making them. It also holds the blackened and
polished skulls of three [[human]]s and two [[shifter]]s (one of
these is all that remains of Bruus—see Development below).

A woven vine curtain hangs over a portion of the
eastern wall, barely hiding a passage there.

!!! Hideaway

A natural rock seals this hidden area. The druid hides here when she needs to,
but the sealed wall would make it dangerous to sleep here
or stay here long.

!!! Hidden Stump

A passage from the secret chamber
runs nearly 300 feet to a stump. Actually a doorway into
the druid's abode, the entrance is nearly impossible to
detect from the surface. 

!! Encounters

Getting into Shanjueed means passing the wall and
the [[Edgewalker|Edgewalkers]] guardians. Edgewalkers ([[creature tier]] ''2'') attack first and ask questions later. Still, they're the easy part. Navigating the nightmare that is the Shanjueed is far more difficult.

While characters travel through the [[Mabar]] part of the
jungle, they have a significant chance of encountering [[shadow]]s or other dark [[manifestation]]s or [[undead]] of that realm, or beasts touched by the Endless Night. Anywhere in the jungle, [[quorbred creature]]s can be found.

!! Development

The nameless [[druid]] attracted the attention of the
[[Edgewalkers]] one day when she approached the wall.
Thinking she was an //altavar// come to free the forest from
the bonds of the wall, the soldiers on the wall attacked
her. The bravest among them, a mighty [[shifter]] ranger
named Bruus, went into the Shanjueed with several
hand-picked warriors to find and slay the evil spirit.
They never returned. Since then, lightning storms,
unnatural hail, swarms of insects, and even fire have
assaulted the wall at unpredictable moments. A few of
the fallen have risen as [[zombie]]s and [[ghoul]]s. Clearly the
altavar still lives, and it must be put down for the good
of [[Corvagura]].

News of the //altavar// of Shanjueed has reached the
elders of [[Tashalatora]]. They suspect this spirit isn't a spirit
at all, but the creature that was once Wyndurgha. If she
could be secured as an ally for [[Adar]]...

!! Treasure

Legend speaks of a [[Corvagura]]n [[necromancer|necromancy]] who lived
in the center of the Shanjueed Jungle in [[Sarlona]]'s ancient
past. He is said to have had great power. Some who know
the tale, such as the [[Keepers of the Word]] in [[Tashalatora]],
say it indicates he found a relic left by [[giant]] explorers in
ancient times. Who knows what other magic lies hidden
within the Shanjueed. 
Lady Sharadhuna, high minister of the [[Thousand Eyes]], is the [[Devourer of Dreams]]' greatest rival. Although Sharadhuna believes control of
humanity should anchor [[Dal Quor]] and prevent the turn of the age, she thinks that [[Sarlona]] is sufficient to accomplish
this goal. Sharadhuna believes that the Devourer is pressing for continued expansion not on the orders of [[il-Lashtavar]],
but because he draws power from the pacified populace.
If Sharadhuna is correct, the Devourer actually seeks to
replace il-Lashtavar, assuming its place as the driving force
of Dal Quor. Sharadhuna believes that the [[quori]] need be
concerned only with fully securing Sarlona, including
[[Adar]], [[Syrkarn]], and the [[Tashana Tundra]]. She resents the unquestioned authority held by the agents of the [[Dreaming Dark]] and believes that the [[Thousand Eyes]] is performing the most crucial work of the age. Sharadhuna is gaining
supporters, and she hopes to find a way to supplant the
[[Devourer|Devourer of Dreams]] as the voice of [[il-Lashtavar]]. Still, she has no idea
what such a transformation could require.

''Getting the PCs Involved:'' Lady Sharadhuna can
be an unlikely ally for the PCs. When the characters are
captured by the [[Thousand Eyes]], to their surprise, they
are not executed. Instead, Sharadhuna provides them
with information they need to upset some of the plans
of the [[Dreaming Dark]]. Using the PCs as her catspaws,
Sharadhuna can embarrass the Devourer and increase
her support, possibly even supplanting the Devourer.
If Sharadhuna assumes power, she focuses her efforts
on [[Sarlona]], and [[Khorvaire]] becomes a safer place for it.
[[Adar]], on the other hand, becomes less so. Although she
might help PCs fight the Dreaming Dark, Sharadhuna
does nothing that could endanger [[Riedra]].
//I've been here a week, and it's still hard
not to feel overwhelmed by the city. The towers
rise up until they disappear into the clouds. Lights
gleam in a thousand windows. [[Skycoaches|skycoach]] work
their way through the maze of bridges connecting the towers, and up above I can see the burning ring of an elemental [[airship]].//

//Distracted by the sights in the sky, I nearly walk into a
[[warforged]] as it brushes past me. It's my first time seeing
one, but then there are so many things I've never seen in
this place. Over there, a tattooed elf haggles with a masked
halfling, arguing about the price of lizard meat. Beyond
them, a [[gargoyle]] watches from a high perch. I gather my
senses and keep moving.//

//It's not until I reach the lift that I realize the [[warforged]]
stole my purse.//

<div align="right">—A newcomer to the big city</div>

''Country:'' [[Breland]]<br/>
''Government:'' The [[Council of Sharn|Sharn Council]]<br/>
''Local Ruler:'' The [[Lord Mayor Cathan ir'Demell|Lord Mayor of Sharn]]<br/>
''Population:'' 1,059,250

All the major themes of Eberron are manifest in the
great city of Sharn. It's a place of magic, with [[skycoach]]es circling mile-high towers and mystic forges toiling endlessly in the bowels. It's a place of adventure and
intrigue. A [[fallen angel|radiant idol]] is gathering minions in the ruins
below the city. A gang war is gaining strength in [[Callestan]]. The corpse of a murdered aristocrat has just been
discovered in a floating mansion. A [[Cannith]] [[artificer]] is
experimenting with a planar gateway—and something is
about to go terribly wrong. All of these adventures and a
hundred more are waiting in the City of Towers.

! The Shape of Sharn

Sharn is the largest city in [[Khorvaire]], with a population
of over a million people. [[Humans|human]] make up about a third
of that number, and [[dwarves|dwarf]] are a sixth of it; the rest is
a blend of every race found across Khorvaire. [[Halflings|halfling]],
[[elves|elf]], and [[gnome]]s all have a significant presence in the
city, but even [[kalashtar]] and [[changeling]]s have communities in Sharn. Beyond the permanent population, tens of
thousands of people pass through Sharn every day. Refugees from the [[war|Last War]] still find their way to the city, along
with tourists, spies, merchants, and folk hoping to find
their fortune in the grandest city in Eberron. 

Sharn stands above the [[Dagger River]] and its eastern
tributary, the Hilt. It's an important port for anyone dealing with [[Aerenal]], [[Xen'drik]], or [[Sarlona]]. Mountains line the shores of the Dagger, and Sharn can't spread out. So
instead it has grown ever upward.

Sharn sits within a [[manifest zone]] linked to [[Syrania]], the Azure Sky. This manifest zone enhances magic related to flying and levitation, which makes many of Sharn's magical wonders possible. The vast majority of the [[magic item]]s used within the city to facilitate flight only function because of the manifest zone, and work less well or not at all beyond its boundaries.

The city is primarily made up of these quarters:

* [[Central Plateau]]
* [[Dura]]
* [[Menthis Plateau]]
* [[Northedge]]
* [[Tavick's Landing]]

At the hub of each of these quarters is a cluster of
enormous core towers. A web of bridges and platforms
connects many of these vast spires, and smaller turrets
sprout from the edges of the core towers. The district of
[[Skyway]] floats above the highest towers, while the tunnels of the [[Cogs]] stretch out below the lower city.

In between those extremes, each of the quarters is
divided into an [[upper ward]], a [[middle ward]], and a [[lower ward]]. Each ward is made up of a number of districts, so
that the location of a place in Sharn can be expressed
with a combination of a ward name and a district name. 

See [[Wards of Sharn]] for a deep dive into each section of the city.

!! Aftermath of War

Far from the front lines, Sharn never fell under siege
during the [[Last War]]. Regardless, the war's impacts affected the city's citizens and continue to even today.

!!! Physical Damage

Although Sharn was never subjected to a sustained
assault, it didn't avoid damage. On many occasions,
commandos and saboteurs launched significant attacks
inside Sharn. The most infamous of these was the
[[Aundair]]ian attack that brought down the floating [[Glass Tower]], devastating the district now known as [[Fallen]]. In
any of the lower or middle wards, you might encounter
evidence of the conflict in the form of a shattered bridge,
a building collapsed by an arcane explosion, or an area
some say is haunted because of the large number of people killed there during the war.

!!! Psychological Scars

There are places in the city that house people who suffered because of the actions of other nations. For example, many of the residents of [[Dura]] hold all Aundairians
responsible for the destruction of Fallen. In another
district, folk could hate the [[Karrn|Karrnath]]s for an [[undead|Karrnathi undead]] attack
that occurred during the war, and a different group could blame [[Thrane]] for the siege of [[Vathirond]]. These kinds of sentiments can shape the feelings of an entire
district, but in the city as a whole there are far more
people who have personal burdens to carry than those
who feel resentment toward particular nations. For
instance, on an individual level, most members of the
[[Sharn Watch]] might not care about a [[gnoll]] being seen in
a neighborhood, but a guard who fought on the [[Droaam]]
front during the war might be out for revenge. [[Warforged|warforged]] are sometimes also the targets of this sort of prejudice; a person whose friends were killed by warforged
soldiers might resent all such creatures. 

!!! Shortages

Because the ink is barely dry on the [[Treaty of Thronehold]] and relationships between the signatories are still being normalized, Sharn doesn't currently benefit from a lot of commerce with other nations. Problems could arise from a short supply of any imported goods, whether this manifests as inflated prices, the need for
rationing, or certain items being simply unavailable. The
factors of supply and demand also play into smuggling
and the black market; some desirable goods might be
available only through the [[Boromar Clan]]. 

!! Refugees and Victims

[[Cyran|Cyre]] refugees have filled the district of [[High Walls]] in [[Lower Tavick's Landing]] beyond capacity, and Sharn is
also home to a significant number of refugees from elsewhere in [[Breland]]—people whose homes and villages
were destroyed during the war, and who have come to
Sharn in search of new lives. The city also has its share
of other people harmed during the war, soldiers and civilians with severe physical or psychological injuries. All
these folk are most likely to be found in the lower wards.
They aren't just poor; they're suffering—and they might
seek vengeance against those they blame for their pain.

! Guide to the City

//When you live on the inside low, you never see
the sun. People hear "towers," they think of graceful little
spires, the sort of thing you see poking up in the corner of
your lord's keep. We've got those, and lots of 'em. But the
foundation of the city is the core towers. The walls of these
towers are so thick you could fit your lord's castle in one.//

//You've got your outside districts where you get the open
air, built on the bridges and platforms that connect the
core towers together. You've got the little turrets, built
on the core tower walls and the bridges between. You've
got the folk in the middle, who live and work in the walls
themselves. And then you've got those of us on the inside, our districts entirely contained in the hollow well of a great tower. When you look up in [[Callestan]], you see
twinkling lights, to be sure. But those aren't stars, and that
isn't the sky. You're looking up through a mile of bridges
and platforms crossing the well, looking up at the districts
above you. //

// You live up high, you can touch the sky. In the middle you
can still see the sun. Down on the inside low, all we have is
gloom and the constant drip, water and worse descending
from the city above us.//

—A street urchin describing Sharn 

Sharn is the most cosmopolitan city on the continent.
Describing all the activities and offerings in the city
could fill an entire book. Here's a summary of what you
need to know to appreciate the city to the fullest. 

!! Watch your Step!

As befits the City of Towers, Sharn is also a city of
bridges and balconies. These thoroughfares and outcroppings can be extremely narrow or comfortably wide. Although most of them are bounded by walls or railings,
there's always a chance that during your time in Sharn,
you or someone you know will go over the edge. So, how
do residents cope with this risk?

Those who can afford it usually carry a [[feather token]] as insurance. No token? Don't panic! Because of
the maze of bridges and spans connecting the towers,
there's an excellent chance that you won't fall more
than a hundred feet before impacting on a lower bridge.
Though this alone might seem like small comfort, it's
also true that the major bridges in the upper and middle
wards are enchanted with [[feather fall]] effects that trigger
automatically, keeping you from crushing an innocent
passerby in your descent.

Many different outcomes could follow a lengthy fall.
The table below presents a few possibilities. 

| !<<dr d8>> |!Result |
| 1 |You fall hundreds of feet before striking the ground at the base of the towers. |
| 2 |You fall <<dr "3d6">> x 10 feet before striking a bridge. A major bridge in an upper or a middle ward will have a [[feather fall]] enchantment; otherwise, it's going to be a hard landing. |
| 3 |You fall <<dr "2d4">> x 10 feet and land in a passing [[skycoach]], possibly injuring a passenger. |
| 4 |You fall <<dr "4d4">> x 5 feet and strike an outcropping, flagpole, or projecting statue. If you survive, you're still precariously perched on the edge of a tower or bridge. |
| 5 |You fall past a [[hippogriff]]—try to catch its leg! |
| 6 |A [[gargoyle]] or [[giant owl]] catches you—then threatens to drop you if it doesn't get a reward. |
| 7 |You can fly! Actually, a nearby [[wizard]] or [[artificer]] casts [[feather fall]] to save you, but for a moment it felt like you can fly. And now the spellcaster wants payment. |
| 8 |You strike a small air [[elemental]] that was drawn to the city. Doing this cushions your fall, but now you're on top of an air elemental. |

!! Communication Services

Need to get a message to someone? If you're not in a
hurry, the [[Orien]] post has boxes throughout the city;
you can mail a letter for a negligible fee. Hiring a courier generally
costs up to 1 crown, depending on the size of
the package and where you need it delivered. You can
find [[Sivis]] [[message stations|speaking stone]] in almost every upper and
middle ward, and if you absolutely have to contact someone instantly, the [[Sivis enclave|Sivis Enclave (Dragon Towers)]] in the [[Dragon Towers]] district ([[Middle Central]]) can perform a [[sending]] spell for 20c.

House [[Tharashk]] has brought an innovation to message delivery in Sharn: the use of [[gargoyle]]s. Tharashk has several of these creatures in its employ, and these
flying couriers are a quick way to get a message across
the city. If you spot a gargoyle without a burden, you
can flag it down, and it costs up to 1c to deliver a letter or a
small package. 

!! Spellcasting Services

[[Magewrights|magewright]] and adepts can be found in every district
of Sharn, selling their services. Standard prices are
summarized on the table.

| !Spell Tier | !Price|
| cantrip | 1 c|
| common | 2-5 c|
| rare | 10-20 c|

These costs can vary depending on the spell and the
spellcaster, and they don't include the price of expensive
components. People who can cast higher-tier spells are
rare, typically found only in the [[dragonmarked house]]s
or [[arcane order]]s; the cost and availability of such
services varies based on the caster. 

!! Education and Research

[[Morgrave University]], though not the most respectable
institution of higher learning in Khorvaire, has an extensive library that boasts definitive collections of lore in certain fields, particularly arcana, dungeoneering,
geography, and history. Characters seeking knowledge
in any of these fields or others ought to be able to find resources in the library to aid their search. The university
is an excellent source of sages who hire their services
out on a short- or long-term basis. Even those who profess to be sages but have no connection to the university
tend to cluster around Morgrave, with their homes and
businesses almost all located in the [[University|University District]], [[Den'iyas]],
and [[Ivy Towers]] districts of [[Upper Menthis]].

Another important site for certain kinds of research is
the [[City Archive]], in the [[Highest Towers]] district of [[Upper Central]]. The archive contains exhaustive historical documents of Sharn; birth, death, and marriage records;
and copies of legal documents such as identification
papers and letters of marque issued in the city. Access
to these records, however, is more restricted than to the
contents of the Morgrave library.

Those who want to further their research through
some hands-on experience might find undiscovered lore
in the lowest regions of Sharn, where [[sewers]] and tunnels snake through ancient ruins. Similarly, the crypts
of the [[City of the Dead]] might hold some relevant historical information. 

!! Shopping Centers

Sharn contains a number of major shopping districts.
The [[Tradefair]] district in [[Middle Central]] focuses on
top-quality goods—everything you'll need to maintain a
wealthy or aristocratic lifestyle. [[North Market]] in [[Lower Northedge]] has a fine selection of common goods. Almost anything can be found in the [[Bazaar]] of [[Middle Dura]], as long as you're not concerned about the origin of
secondhand goods. [[Tavick's Market]] in [[Middle Tavick's Landing]] is a center for produce and other goods brought in from the farms and artisan workshops outside Sharn. 

!! Dining

In Sharn, as the saying goes, even the poor eat like
kings, and good food is readily available. Among
the multitude of restaurants that appear throughout
all the towers of the city, Sharn offers a few unique
dining experiences.

A striking view enhances a meal, and for that
reason no restaurant can compete with the dozen
or so establishments in [[Skyway]]. Of those, the best
known is the [[Celestial Vista]] Restaurant, a tourist attraction.

For variety of cuisine, no other region of the city can match the [[Menthis Plateau]], with its diverse population. Most people agree that the [[University]] district in [[Upper Menthis]] is the best place to sample the wide variety of dishes Sharn has to offer. University students and faculty are fond of dining at the [[Commons]], a large open-air
plaza near the top of one of [[Morgrave University]]’s
towers, where food vendors bring carts and wagons
daily to serve up a wide array of ethnic offerings.

Of course, sometimes the need for quality overshadows the appeal of spectacular views or culinary variety. A few of the generally acknowledged best
restaurants in Sharn include [[Sannid's]] in the [[Platinum Heights]] district of [[Upper Central]], known for its extensive wine collection; [[Galdin's Garden]] in the [[Seventh Tower]] district of [[Upper Menthis]], surrounded by a towertop garden featuring roses and orchids; the [[Oaks]]
in the [[Shae Lias]] district of [[Upper Northedge]], serving
[[Aereni|Aerenal]] and [[Brelish|Breland]] cuisine in an elaborate open-air
pavilion surrounded by oak trees; and [[Olladra's Arms]]
in the [[Hope's Peak]] district of [[Upper Dura]], notable for
its banquet-style seating and generous portions.

!! Entertainment

Whether a character seeks nothing more than a
fun evening on the town or wants to witness a great
performance by a renowned artist, Sharn offers abundant entertainment on a nightly basis. The hub of the entertainment industry in Sharn is the [[Menthis Plateau]]—from the towertops down to the [[Cogs]], this quarter is a bustle of activity from sundown to sunup.

!!! Theater and Music

The [[Torchfire]] district in [[Lower Menthis]] occupies
the bottom of the entertainment ladder in Menthis,
but is nonetheless a fine place to enjoy inexpensive
entertainment. Offerings in [[Middle Menthis]]
are a step above those in the lower levels, figuratively
as well as literally. Performers who get their first big
break at [[Gailan's]] stage move on to any of several similar
venues in Middle Menthis’s theater district, called
[[Smoky Towers]]. The entertainment offerings in [[Upper Menthis]] are
concentrated in the [[University]] District, and are in a
class by themselves.

!!! Sports and Games

As befits a metropolis that boasts people of all cultures,
Sharn hosts a wide variety of sports and athletic events.
The [[Race of Eight Winds]] occurs once a year. Other
events take place on a daily, weekly, or monthly schedule. For instance, shifters hold informal [[hrazhak]] competitions every night in [[Lower Northedge]]. The [[ogre]]s of the [[Cogs]] are fond of tugs-of-war, arm wrestling, and similarly simple tests of strength. People who want to bet
on sports can usually find a gambler willing to set odds
in the [[Firelight]] district in [[Lower Menthis]], [[Callestan]] in
[[Lower Dura]], [[Cornerstone]] in [[Middle Tavick's Landing]],
or [[Hareth's Folly]] in [[Middle Dura]]. Three exotic sports
practiced in the city are described below. 

* [[Hrazhak|hrazhak]]
* [[Skyblade|skyblade]]
* [[Six Stones|six stones]]

!! Healing

House [[Jorasco]] operates houses of healing throughout
the city, largely in the middle and upper wards. The
[[Panaceum]] in [[Dragon Towers]] ([[Middle Central]]) is the
primary Jorasco enclave. 

The Panaceum has an [[altar|altar of resurrection]] that can be used to [[raise the dead|raise dead]], but this service isn't without its risks.
Sometimes the wrong spirit returns to a body, or malevolent [[ghost]]s or [[wraith]]s might escape from the netherworld along with the person being raised. Before the
healers take gold to perform a resurrection, a Jorasco
adept will first perform an [[augury]]. If this [[divination]] indicates
looming disaster, the adept will reject the request.

A few divine spellcasters in Sharn can raise the dead,
notably the high priest of the [[Undying Court]] in [[Shae Lias]]. These devout [[cleric]]s rarely sell their services, however, and the high priest would need a compelling
reason to help someone who has different beliefs. 

!! Temples and Shrines

Every major religion has outposts in Sharn. A number
of sacred sites draw pilgrims to the city from across
[[Breland]] and [[Khorvaire]]. Priests don't usually sell their
services; temples are places for worship and spiritual guidance.

The [[Sovereign Host]] is the dominant religion of Breland, represented by shrines and small temples throughout the city. The [[Pavilion of the Host]] in [[Middle Central]]
is the heart of the faith, and most priests of the Host live in one of the Pavilion's nine towers. Pilgrims often come
to visit one of three particular sites. The [[Korranath]] in
[[Upper Central]] features Khorvaire's largest temple of
[[Kol Korran]]. The [[Great Hall of Aureon]] in [[Upper Menthis]] draws scholars and worshipers alike. The [[Pool of Onatar's Tears]] in the [[Blackbones]] district of the [[Cogs]] is said to impart a blessing to any smith who bathes their
hands in its waters.

The [[Cathedral of the Cleansing Flame]], Sharn's
largest temple to the [[Silver Flame]], is located in [[Upper Central]]. Archierophant [[Ythana Morr]] is frequently accused of corruption and nepotism, but there are smaller
places of worship around the city devoted to the true
principles of the faith. The hermit [[Gaia]] watches over the
[[City of the Dead]] from [[Warden Tower]]. [[Coldflame Keep]] in
[[Middle Northedge]] was once a mighty garrison; its glory
has faded, but Flamebearer [[Mazin Tana]] still strives to
protect his community. The priestess [[Faela]] maintains
a small shrine in the shadows of [[Fallen]], doing what she
can to help the wretched people of that forsaken district.
Finally, the [[Shrine of Fathen the Martyr]] is a sacred
site in [[North Market]], often visited by templars passing
through the city.

Even some lesser known religions are represented
in Sharn. The [[Graystone]] district in [[Middle Tavick's Landing]] is a haven for followers of the [[Blood of Vol]]. The [[Gates of Passage]] in [[Upper Northedge]] is a temple
of the [[Undying Court]]. The [[Overlook]] district of [[Upper Dura]] holds the [[Shrine of il-Yannah]], dedicated to the [[Path of Light]]. 

!! Holidays

There's always a celebration happening or about to happen in Sharn, whether it's a parade in a single district or
a festival that ranges across the entire city. Here are a
few special occasions to put on your calendar. 

* The [[Tain Gala]]
* [[Crystalfall]] 
* The [[Day of Mourning]] 
* [[Sun's Blessing]] 
* [[Aureon's Crown]]
* [[Brightblade]]
* The [[Race of Eight Winds]] 
* The [[Hunt]] 
* [[Fathen's Fall]]
* [[Boldrei's Feast]] 
* The [[Ascension]] 
* [[Wildnight]] 
* [[Thronehold Day]] 
* [[Long Shadows]] 

!! Guilds and Groups

Guilds and similar associations abound in Sharn. Their
headquarters are places where people can find the company of fellow professionals, or perhaps enlist the assistance of an organization.
All the [[trade guild]]s associated with the [[dragonmarked house]]s are well represented in Sharn; most have guildhalls in the [[Dragon Towers]] district of [[Middle Central]]. Aside from those groups, the city features a number of less populous associations, such as those described below. 

!!! Adventurers' Guilds

Sharn is a magnet for those who seek adventure and
opportunity. Forgotten treasures are hidden in the ruins
below the towers, and expeditions leave for [[Xen'drik]]
every day. At any moment, dozens of sages, spies, and
nobles around the city are searching for capable agents
to help with their schemes and investigations. If you and
your friends are searching for adventure, you've come to
the right place, and you don't have to do it alone. Sharn
is home to two organizations that provide adventurers with opportunities for work and camaraderie: the [[Clifftop Adventurers' Guild]] and the [[Deathsgate Guild]].

A strong rivalry exists between the two guilds. You might have
trouble with members of the opposing guild, whether in
the form of drunken boasting in a tavern or a rival stirring up trouble in the midst of a mission. 

!!! The Circle of Song
A [[bard]] is a versatile individual, equally skilled at entertainment and espionage. These talents are perfectly
matched to the city of Sharn, which is both the cultural
heart of [[Breland]] and a nexus for intrigue and diplomacy.
Bards have much to gain from the company of other
bards, as they exchange news, stories, and songs. For
this purpose, long ago a group of the finest bards in
Sharn founded the [[Circle of Song]], an alliance of entertainers and adventurers.

!!! Arcane Orders

Its mighty towers and floating spires mark Sharn as a
symbol of mystic power and achievement. Soon after
the founding of the city, the greatest [[wizard]]s of [[Breland]]
chose it to be the seat of their arcane order. Its goal
was to celebrate excellence in the mystic arts, bringing
together the greatest practitioners of magic in a society
that rivals [[Arcanix]] and the institutions of [[Aundair]].

A schism split the original society, but today both
of the branches of the original organization, the [[Esoteric Order of Aureon]] and the [[Guild of Starlight and Shadows]], are recognized and respected throughout
Breland. Each one has lesser halls in every major city in
the nation. 

Orders found in Sharn:

* [[Esoteric Order of Aureon]]
* [[Guild of Starlight and Shadows]]
* The [[Closed Circle]] (disbanded)

!! City Government

Sharn has many people in positions of power: beadles,
ministers, bailiffs, and all manner of minor functionaries and officials. But ultimate power rests in the hands of the [[City Council|Sharn Council]]. That body has seventeen members:
one for each ward in the city, plus representatives from
[[Skyway]] and the [[Cogs]]. Each ward has its own process
for selecting a councilor, and there are no legal restrictions on who can govern; if you build up a strong base of
support in a ward, you could hold the position yourself!

The members of the City Council are quite diverse.
Some are crooked, others are idealists, and [[one of them appears to be an owl|Hruitt]]. All of them are well known in their
home wards, and any of them could have use for a team
of adventurers. 

!! Criminal Services

See [[Crime in Sharn]].

! Streets of Sharn

The Street Events buttons below are
filled with random events the characters can witness
while they wander around Sharn. You can expand on an
entry to make it the start of an encounter or adventure,
though not every event needs to draw the characters into
a longer story. You can choose results from the
tables, or randomly determine what happens, and you
can modify results as you please, tailoring the details
of an event to be a better fit for a particular district. The
events on the tables are phrased so they can be read
aloud or summarized to players.

!!! What Happens Next?

After the adventurers witness an event on the streets
of Sharn, what happens next depends largely on what
they do. Maybe they avert their eyes and keep walking,
as many residents of Sharn have trained themselves to
do. Maybe they rush to get involved, or poke around delicately to learn more. An event like one of these doesn't
have to be the start of an adventure, but it can be—particularly if it really catches your players' imagination.
When the players decide to learn more, it's up to you
to figure out what they can discover. Ask yourself these
questions:

* How did the people involved in this event get to this place? What were they doing earlier today? Where were they going when this event happened?
* Why isn't anyone else getting involved? What is complicating this situation?
* What do the people involved hope is going to happen next? What are they afraid might happen next? How are the circumstances changed because the characters have witnessed the event? 

<$button>
<$action-chooserandom $dataTiddler="LowerSharnStreetEvents" $field="var"/>
Lower Sharn Street Event
</$button>
<$button>
<$action-chooserandom $dataTiddler="UpperSharnStreetEvents" $field="var"/>
Upper Sharn Street Event
</$button>
<$button>
<$action-chooserandom $dataTiddler="SkywayStreetEvents" $field="var"/>
Skyway Street Event
</$button>

<<<
''Street Event: ''{{!!var}}
<<<
Many make the mistake of assuming that the [[Lord Mayor of Sharn]] holds the greatest power within the city. In fact, the City Council appoints the Lord Mayor, and the commanders of the [[Sharn Watch]] report to the Council.

The Council of [[Sharn]] is comprised of 17 councilors: one from each [[ward|Wards of Sharn]] of the city, with [[Cliffside]] merged into [[Dura]] and a single councilor representing both [[Ashblack]] and [[Blackbones]]. The
precise method by which a councilor is appointed
varies from ward to ward. In theory, it is a diplomatic selection made by the leaders of the ward, but what it takes to be a “leader” varies considerably. In
some wards, anyone with a certain amount of income
or property can participate in ward councils and
elections. In others, ward elections are entirely in
the hands of trade guilds, noble families, or other
power groups. While in theory each councilor has an
equal voice, in practice the influence of a councilor
is derived from his backers. The local merchants of
[[Lower Menthis]] support [[Savia Potellas]], and she knows
better than to openly oppose [[Caskar Halavik]], who has
the backing of the [[Boromar Clan]]. If she stirs up too
much trouble, she might wind up at the bottom of the
[[Dagger River]]. However, she finds other ways to deal
with Caskar and pursue her own goals—including
hiring adventurers to upset his plans. Likewise, while
each councilor is supposed to represent the interests
of his or her ward, a councilor usually puts his backers
first, his personal district second, and his ward third.
Thus, the three councilors with ties to the [[Boromar Clan]] usually vote as a unit.

The City Council commands a variety of powers.
The Council establishes the laws of the city, although
if they wish to pass a law that completely contradicts
the Code of [[Galifar]] or the traditions of [[Brelish|Breland]] Law,
the crown or parliament might have something to say
about it. Laws may vary per ward, allowing a councilor
to shift the traditions of the city to benefit his backers.
The Council also determines how to use the resources
of [[Sharn]], from taxes to the power of the [[Sharn Watch]].
Finally, the Council appoints the high officers of the
city, including the [[Lord Mayor|Lord Mayor of Sharn]]. The councilors do
not appoint the city's representatives to the [[Breland Parliament]]; following the democratic traditions of the nation, the three legislators are elected by popular
vote, with every legitimate resident of Sharn having
the right to participate. However, the Council manages and administers the election, and councilors can usually exercise a considerable amount of influence
over the voters in their districts, whether through
charisma or graft. 

All major political appointments in Sharn occur
on [[9 Rhaan|Khorvaire calendar]], [[Boldrei's Feast]]. Members of the [[Breland Parliament]] serve two-year terms, city councilors
serve for three years, and the Lord Mayor's performance is usually reviewed every four years. There
are no term limits, and quite often an election passes
with no changes whatsoever. 

!! Members of the Council

The members of the City Council are quite diverse.
Some are crooked, others are idealists, and [[one of them appears to be an owl|Hruitt]]. All of them are well known in their home wards, and any of them could have use for a team of adventurers. The table below describes
a few of the city leaders you might bump into in [[Upper Central]] or at the [[Tain Gala]]. If your character has the noble background, you might already know one of them. 

| !<<dr d17>> |!Councilor |
| 1 |[[Sorik Sensos]] ([[half-elf]]) represents [[Middle Central]]. An elder statesman and a brilliant orator, he is rumored to be involved in a web of bribery and graft. |
| 2 |[[Sava Kharisa]] ([[human]]) is the outspoken councilor from [[Lower Central]]. Since taking her seat, she has fought to improve conditions for the lower classes of Sharn, and she has made many enemies on the council and beyond. |
| 3 |[[Thurik Davandi]] ([[gnome]]) represents [[Upper Menthis]]. He is known to have ties to [[Zilargo]] and the [[Boromar Clan]], and reportedly loves intrigues and blackmail. |
| 4 |[[Savia Potellas]] ([[human]]) has her hand in the entertainment industry of [[Lower Menthis]]. She hopes to reduce the influence of organized crime in her district, but it's a dangerous game. |
| 5 |[[Maza Thadian]] ([[elf]]) represents [[Upper Northedge]]. A venerable elf and owner of one of the finest restaurants in Sharn, she fights to maintain tradition but definitely puts the needs of the wealthy ahead of the poor. |
| 6 |[[Shassa Tarr]] ([[shifter]]), from [[Lower Northedge]], represents the interests of the merchants and shifters of her ward. She is a cunning diplomat and devoted to her constituents. |
| 7 |[[Bestan ir'Tonn]] ([[human]]) has represented [[Upper Tavick's Landing]] for thirty years, and largely views his ward as a separate city within the city. He has a reputation for stirring up conflict and setting the other councilors against one another. |
| 8 |[[Kilk]] ([[changeling]]) represents the merchants of [[Lower Tavick's Landing]]. Whispered rumors suggest that the changeling has ties to the mysterious [[Tyrants]]. Some insist that Kilk is actually an identity shared by a group of changelings. |
| 9 |[[Hruitt]] (owl) is a [[giant owl]] who can assume human form. A former aerial racer, he's a clever negotiator who fights for the good of the [[Bazaar]] and [[Middle Dura]], often opposing the [[Boromar Clan]] and its allies. |
| 10 |[[Ilyra Boromar]] ([[halfling]]) is the councilor for [[Lower Dura]], but it's common knowledge that her true allegiance is to her family and its [[criminal empire|Boromar Clan]]. The current ongoing conflict with [[Daask]] has weakened her family and her position. |
| 11 |[[Evix ir'Marasha]] ([[human]]) represents [[Skyway]]. Lady Marasha owns the [[Celestial Vista]] restaurant, along with several other valuable businesses. She's an eloquent speaker who supports many radical positions, including abolishing the monarchy after the death of King [[Boranel|Boranel ir'Wynarn]] and recognizing Sharn as an independent province. |
| 12 |[[Nolan Toranak]] ([[dwarf]]), the councilor for the [[Cogs]], is largely seen as a tool of the industrialists who own the foundries there. Members of his family were killed by [[warforged]] during the [[Last War]], and Toranak harbors a bitter grudge against House [[Cannith]] and the warforged. He has tried to have warforged reclassified as property, and seeks to suppress warforged activists in the Cogs. |
| 13 |[[Javan Tomollan]] ([[human]]), a shrewd man and a tough bargainer, represents [[Upper Central]]. He earned his fortune representing House [[Lyrandar]], although he has since parted ways with the house. He is a fair man with respect for hard work. |
| 14 |[[Caskar Halavik]] ([[halfling]]) is the representative of [[Middle Menthis]]. An immigrant to Sharn from the [[Talenta Plains]], Caskar made a name for himself in the [[Little Plains]] district for his skill at [[clawfoot]] racing. Caskar often sides with [[Ilyra Boromar]] on council decisions. |
| 15 |[[Doran Cantar]] ([[human]]) represents [[Middle Northedge]] He is a devout follower of [[Boldrei]], and is by all accounts an honest, dedicated, and charismatic figure. |
| 16 |[[Borian Haldorak]] ([[dwarf]]) represents [[Upper Dura]]. His main supporters are the dwarven bankers and merchants of [[Highhold]]. He is a member of the Gold Concord of the [[Aurum]]. |
| 17 |[[Dalaina Ironhand]] ([[dwarf]]) is the representative of [[Middle Tavick's Landing]]. Dalaina primarily represents the merchants of her district, and is a no-nonsense negotiator. She is often in opposition to the "[[Boromar|Boromar Clan]] Block". |
The //Sharn Inquisitive//, the [[city|Sharn]]'s local chronicle, is the
best source of local news. A new edition of the Inquisitive appears every Sul (the first day of the week) and is distributed through the city mail. Its publisher,
[[Haftak ir'Clarn|Haftak's Books and Binding]], is a distant cousin of Lord [[Ruken ir'Clarn]], a member of Breland's [[parliament|Breland Parliament]] who often
expresses viewpoints and opinions in opposition to
King [[Boranel|Boranel ir'Wynarn]]. Haftak's position on his cousin's radical politics is the subject of much debate: You can
find critics who claim that the //Inquisitive// goes out of
its way to support the Brelish crown, and others who
maintain that the //Inquisitive// is a staunch opponent of
the crown.

Readers turn to the Inquisitive for local news (which
some say reads more like gossip) and for the opinion
pages, which feature heated debates on important city
issues. For news from beyond [[Sharn]], educated citizens
rely on the [[Korranberg Chronicle]].
[[Breland]] has a long heritage of operatic composition, and the Sharn Opera
House is committed to regular performances of classic Brelish works, as well as newer material from
across [[Khorvaire]]. The opera house consists of a
grand auditorium in Dalannan Tower, with comfortable seating for 3,000 people. As with the [[Kavarrah Concert Hall]], attending performances in the Sharn
Opera House usually become very formal affairs, but
the opera house also offers standing-room galleries
for those of less wealthy means.
The Sharn Watch is responsible for enforcing the laws
of the city. The sentinels of the watch patrol the streets
of [[Sharn]], to all outward appearances vigilant for signs
of unrest. In truth, the Sharn Watch is riddled with corruption, from the commanding officers down to the lowliest patrollers. Dedicated guards who truly want to protect the innocent do exist. But bribery nonetheless runs
rampant, and the watch has a way of failing to show up
somewhere at the same time that [[Daask]] or the [[Boromar Clan]] is perpetrating some misdeed. 

!! Benefactors and Response Time

A common viewpoint among the citizens of Sharn is
that in the [[upper ward]]s, the Sharn Watch works for the
wealthy; in the [[middle ward]]s, it works for the [[Boromar Clan]]; and in the [[lower ward]]s, it doesn't work at all. This assessment is close enough to the truth. There's
an important undercurrent in the situation, however.
Although most officers of the Watch take bribes, that
doesn't mean all of them don't care about their city and
won't try to keep their communities safe; they do so because they see their benefactors as being an important part of the continued health of their community. For
instance, those officers who take gold from the [[Boromar Clan]] believe that the Boromars help keep the city running and give the people what they want. But if some
strangers in town break the law, they're just troublemakers who deserve to be run in.

As another example, the guards of the [[Dura]] [[Bazaar]]
have an understanding with the gang of pickpockets
known as the [[Little Fingers]]. As long as the thieves
target only tourists and foreigners, the Watch will dismiss any charges brought against them. Why should an officer of the Sharn Watch care if some [[Aundair]]ian
with more gold than sense gets robbed? But if the Little Fingers pick on a local, they're asking for trouble.
The relationship works both ways; the pickpockets are
privy to things the Watch officers aren't, and they often
warn the Watch about suspicious people or activities
they witness.

Watch officers do exist who are entirely crooked and
care nothing for the law. At the other extreme, some
officers are entirely honorable and place the law above all else, and most of those are willing to risk their lives to save an innocent bystander from a rampaging [[Daask]] [[troll]]. But most members of the Watch are pragmatists who put the needs of their clients uppermost, the needs of the citizenry second, and generally don't take action against locals.

The upshot of all this is that the Watch's response to
a crime can vary significantly depending on the nature
of the crime and where it's committed. As a rule, when
a crime is committed in [[Skyway]], any of the [[upper|upper ward]] or
[[middle ward]]s, [[Lower Central]], [[Lower Tavick's Landing]],
or [[Precarious]], members of the Watch arrive to intervene
and investigate as soon as possible. In [[Cliffside]], [[Lower Menthis]], and [[Lower Northedge]], the few Watch members
in these locations address crimes in order of priority. In
[[Lower Dura]] and the [[Cogs]], the Watch's response is typically very slow. 

!! Sharn Watch Divisions

The discussion above primarily concerns the rank and
file of the Sharn Watch, the guards who walk the streets
day in and day out and the officers who supervise them.
The Watch also includes a few special divisions that
could cross the paths of the adventurers. 

* The [[Blackened Book]]
* The [[Guardians of the Gate]]
* The [[Redcloak Battalion]]
* The [[Goldwings]]

!! Sharn Watch NPCs

The Sharn Watch includes people from all walks of life: veterans of the [[Last War]], retired adventurers, lifelong residents of the city, and immigrants who have become [[Brelish|Breland]] citizens. You can select from or roll on the Race and Personality
tables below to generate a Watch NPC. There is a <<drp 75% "Taking bribes." "Not taking bribes.">> chance the NPC is taking bribes from the [[Boromar Clan]]
or another wealthy patron. This doesn't necessarily
mean that the officer is willing to take a bribe from one
of the adventurers.

| !<<dr d20>> |!Race || !<<dr d10>> |!Personality |
| 1 |[[changeling]] || 1 |Disgruntled veteran of the [[Last War]] who has seen everything |
| 2-4 |[[dwarf]] || 2 |Lifelong [[Sharn]] resident who loves discussing rumors and debating the city's best haunts |
| 5-6 |[[elf]] || 3 |Layabout who tries to do as little work as possible |
| 7 |[[gnome]] || 4 |Eternal optimist who encourages victims of crime to have hope and look on the bright side |
| 8-9 |[[half-elf]] || 5 |Investigator who loves to get to the bottom of a mystery |
| 10-11 |[[half-orc]] || 6 |Rookie with no experience in facing danger who is a bundle of nerves |
| 12-13 |[[halfling]] || 7 |Brawny meathead who believes all problems can be solved with force |
| 14-16 |[[human]] || 8 |Greedy opportunist who's always angling for a bribe |
| 17 |[[kalashtar]] || 9 |Uptight perfectionist who appears to do everything by the book |
| 18 |[[shifter]] || 10 |Unfriendly interrogator who assumes everyone spills their secrets to the [[Tyrants]]. |
| 19-20 |[[warforged]] |||<|

Some of the Sharn Watch's most important people are
as follows:

* Lord Commander [[Iyan ir'Talan]] ([[human]])
* Commander [[Lian Halamar]] ([[halfling]])
* Commander [[Belew Yorgan]] ([[dwarf]])
* Commander [[Silaena Cazal]] ([[elf]])
* Commander [[Iyanna ir'Talan]] ([[human]])
* Lady Warden [[Maira ir'Talan]] ([[human]])
* Captain [[Daja Brel]] ([[human]])
* Captain [[Khandan Dol]] ([[dwarf]])

!! Watch Station

Sharn Watch stations are located throughout the city.
The largest are the garrison posts like [[Daggerwatch]] and
[[Sword Point]]; smaller stations in various places are used
to hold criminals, dispatch patrols, and take care of day-to-day business.

A typical Sharn Watch station has two well-guarded
entrances. One is connected to a main vestibule, where
an officer in a security room with a magically reinforced
window signs visitors in and confiscates their spell components, spellcasting focuses, and weapons. The other entrance is a large barred and warded door that leads to
the garage, which holds [[skycoach]]es and [[soarsled]]s. Both
of these areas are connected to the station's bullpen by
way of locked and warded doors. 

The below table offers reasons
why the characters might need to visit (or break into)
such a location. 

| !<<dr d6>> |!Adventure Goal |
| 1 |Destroy evidence of a crime that's being stored in a Watch station, or plant evidence in a Watch station to frame someone for a crime. |
| 2 |Learn which members of a station's crew are on the payroll of a criminal organization. |
| 3 |Ensure the station's Watch officers are indisposed during an upcoming crime spree. |
| 4 |Help defend a Watch station from a siege. |
| 5 |Free someone being held at a Watch station. |
| 6 |Steal uniforms from a Watch station. |

!! Sharn Watch Villains

Corrupt or extremist members of the Sharn Watch are villains of a special sort: legitimate authority figures who have access to the city's law-enforcement resources. The protections these villains enjoy often call for drastic measures to stop them, which the characters might be labeled as criminals themselves and might have to go underground to avoid arrest or harassment. Examples of Sharn Watch villains appear on the table below. 

| !<<dr d6>> |!Villain |
| 1 |A dwarf arrests random [[halfling]]s on the streets in the [[lower ward]]s and allows [[Daask]] agents to interrogate and torture them. |
| 2 |A [[Brelish|Breland]] veteran of the [[Last War]] arrests and murders innocent [[Cyran|Cyre]] refugees, claiming each time that the victim tried to attack him. |
| 3 |A [[changeling]] investigator works for the [[Tyrants]] and pins unsolved crimes on other Sharn Watch members who interfere with the Tyrants' business. |
| 4 |A [[half-elf]] works her way through the ranks of the Sharn Watch by assassinating her superiors but making it look like they died in the line of duty. |
| 5 |An [[elf]] in the [[lower ward]]s comes to the aid of only those who pay a monthly protection fee. |
| 6 |A [[Blackened Book]] mage confiscates [[magic item]]s from others to auction off to criminals. |

!! Sharn Watch Campaign Themes

If you want to make the Sharn Watch a significant part
of the campaign, you can develop a story for a particular commander. [[Lian Halamar]] is the primary agent of
the [[Boromar Clan]], and if the adventurers are fighting
the Clan, any interaction with the Watch can ultimately
come to Lian's attention, with his corruption slowly becoming more and more evident. If the characters oppose
House [[Tarkanan]], it could be Commander [[Cazal|Silaena Cazal]] who
keeps interfering with their investigations and placing obstacles in their way. Can the adventurers find a way to
remove their rival from power?

Another option is to focus a story on Commander [[Iyanna|Iyanna ir'Talan]] and her efforts to purge corruption from the Watch. A chance encounter could bring the two together; perhaps the adventurers are on the scene when Iyanna is targeted by assassins. Iyanna could call on the adventurers to investigate corruption and to deal with officers who are breaking their oaths. How deep are they willing to go?

If the adventurers do form an alliance with a Watch
officer, you can use the table below to create adventure hooks for parties and side quests for individual characters—cases their ally doesn't trust the
Watch regulars to handle fairly. 

| !<<dr d8>> |!Assignment |
| 1 |Solve a murder that occurred in [[Skyway]]. |
| 2 |Find a [[dreamlily]] den and arrest the place's owner and its supplier. |
| 3 |Protect an ambassador from [[Sarlona]] who is joining a [[Morgrave University]] expedition to the [[Cogs]]. |
| 4 |Monitor the [[Lyrandar Tower]] airship dock for a specific criminal reportedly trying to leave the city. |
| 5 |Apprehend a war criminal rumored to be arriving in [[Sharn]] by [[lightning rail]], and deliver the criminal to the nearest Watch station. |
| 6 |Take a visiting dignitary on a tour of the city and keep them happy. |
| 7 |Venture into the bowels of the city to find a wanted terrorist who has kidnapped a [[magewright]] and stolen the parts needed to build an explosive device. |
| 8 |Handle a prisoner exchange—one captured criminal for one captured Sharn Watch officer. |

!! Sharn Watch Adventure Hooks

The table below presents
ideas for additional adventures themed around the
Sharn Watch.

| !<<dr d4>> |!Adventure Hook |
| 1 |The Sharn Watch cracks down on [[Daask]], which leads to violent confrontations in the city's [[lower ward]]s. |
| 2 |The [[Sharn Inquisitive]] publishes an article claiming that [[changeling]]s of the [[Tyrants]] have stolen the identities of many Watch officers, leading to citywide distrust of the organization. |
| 3 |After a [[Thrane]] immigrant opens a sealed entrance to [[Old Sharn]]'s ruins, the [[Guardians of the Gate]] do not allow anyone in or out of [[Sharn]] until the immigrant is found and the entrance is resealed. |
| 4 |Agents of the [[Blackened Book]] find scrying sensors in Sharn Watch stations throughout the city. |
''District Type:'' Red light district<br/>
''Buildings:'' Poor lodging (80), average food (20), poor
food (80), poor trades (80), poor services—brothels,
pawnshops, etc. (140)<br/>
''First Impression:'' Raucous sailors stagger through
the streets in groups of threes and fives, careening
from tavern to bordello in search of a good time.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Grayflood]] (northwest); [[Ship's Towers]] (southwest); [[Mud Caves]] (southeast)

Catering to the carnal desires of the clientele in [[Cliffside]], Sharn's Welcome is rough, dirty, and a haven for crime. Bordellos abound, but customers are often robbed, sometimes beaten, and occasionally killed. 
Pasha Shashraqa of Firefall stands just below [[Azhalar]] in the [[City of Brass]]'s
social order and is determined to unseat her rival. She is
cultivating the friendship of several [[dragon]]s. She considers
herself to be a connoisseur of art, and could take an interest
in the work of an artistic adventurer.
Born in [[North Market]],
Shassa Tarr ([[shifter]] councilor for [[Lower Northedge]]) is a political
animal. She comes from a long line of merchants,
and is an expert negotiator. While she is not as devious as [[Thurik Davandi]], she has been successfully able to juggle alliances with all of the major factions
within the council. Shassa herself owes her allegiance
both to the merchant lords of [[Lower Northedge]] and
to [[Sharn]]'s [[shifter]] community, and she does what she
can to help both of these groups. 
Shava House, a small academic
community on the campus of [[Morgrave University]],
was originally a housing unit for professors with no
families. It has developed into more of an intentional community: the residents share meals heavily laden with academic discourse, and generally share
an interest in the history of [[Xen'drik]]. An unassuming member of this commune is [[Dala Arand]]—a friendly scholar active in planning expeditions
to Xen'drik, while also secretly serving as a spy for
the Order of the [[Emerald Claw]]. 
In Shavarath, [[angel]]s and [[devil]]s are locked in endless conflict. Radiant blades spill burning blood, and bolts of force smash angels from the sky. In another layer, champions
of justice ride armored
[[dragon]]s, assaulting a titanic
[[airship]]. In yet another, steel
[[kraken]]s tear apart celestial
frigates. There's only one
constant in Shavarath: war.

The war in Shavarath began
at the moment of creation, and it
will continue to the end of time. Its
primary combatants are [[immortal]], and
fallen soldiers return within a day or
so. The forces are so evenly matched that a decisive victory is
impossible. To outsiders, this war seems pointless. Over the last
four hundred years of conflict in [[Nullius Terram]], the Legion of Justice has advanced its front line by perhaps 20 feet. Mortals
may look at this and ask, “Why continue to fight? Why not
just leave the struggle and do something—anything—else?” In
particular, it's common for mortals to see the vast resources the
[[celestial]]s devote to the war and protest, “Why don't you help
//us//? You claim to be the Legion of [[Justice]], but innocent people
are dying in [[Thaliost]] while you fight this meaningless war!”

The angel isn't fighting for a single nation, and this war
isn't driven by gold or politics. The immortals of Shavarath
believe that their war is reflected across every reality. [[Justice]].
[[Tyranny]]. [[Cruelty]]. The war in Shavarath is a visible symbol of
the balance of power between these forces, and when it shifts
in Shavarath, the immortals believe it shifts //everywhere//.
Fallen [[devil]]s will be reborn. New [[airship]]s will replace those
destroyed. But every tiny victory—every [[demon]] defeated,
every foot advanced in [[Nullius Terram]]—strengthens the
forces of justice //everywhere//. Each [[angel]] knows they will
never win a truly decisive victory, but as long as they fight,
they can at least hold the line.

So to an angel, the destruction of a human city—or an entire
nation—is trivial. Mortals will die; that's their most defining trait.
Even a sympathetic angel sees a mortal as a snowflake: unique,
beautiful, but gone in a moment (and sooner if you touch it).
The angels fought long before today's mortal civilizations
existed, and if they hadn't held this line for countless eons, the
Material Plane would be overrun by chaos and cruelty.

If you're a hero, you might look to the angel and say, “What
can I do to help? Can we fight at your side?” To which the angel
simply smiles and responds, “You already are.” Just as every
mortal dreams in [[Dal Quor]] and has a [[shadow]] in [[Mabar]], there's
a sliver of every mortal soul that fights in Shavarath. The skill
and power of these conscripts reflect your own courage and
will... and just like the angels, this sliver of yours can survive a
thousand deaths. So it's not your place to fight on the battlefields
of Shavarath. You do your part by living your life, by fighting for
the principles you believe in wherever you may be.

There is war in Shavarath, and there will always be war in
Shavarath. It can't be won, and it can't be abandoned. As a
mortal in Shavarath, your primary goal should always be to
survive—because in Shavarath, there are a million ways to die.

!! Universal Properties

There's a part of you that's always been in Shavarath, a sliver of
your soul that's always been at war. When you're in Shavarath,
those instincts guide you. It's easier to strike a deadly blow, or
to grit your teeth and fight on through pain or injury.

* //''War Magic.''// When a creature casts a spell that enhances martial ability, the duration is doubled. 
* //''Unquenchable Fury.''// A creature has resistance against any spells or abilities that [[charm]], as well as against the [[calm emotions]] and [[sanctuary]] spells. In addition, the duration of these effects are halved. While a barbarian is raging, its rage can't be ended early unless it's knocked unconscious.
* //''Fight On.''// Once between each rest, a creature can instantly recover from a minor injury.
* //''Bloodletting.''// When a creature scores a critical hit (two or more 6's) with a physical attack, gain +1 additional effect.
* //''Flexible Time.''// Time's passage varies between Shavarath's [[layer]]s. In many, time passes at the same rate as on the Material Plane; if you spend an hour fighting in the [[Burning Sky]], an hour passes in Eberron. But other layers move at different speeds; you can spend a month in the trenches of [[Nullius Terram]] and find that less than three days have passed in Eberron.

!! Denizens

All creatures in Shavarath are part of the war, whether they're
soldiers, tools, or victims. Those that fight are tied to [[legion|legion of Shavarath]]s,
such as the Legion of [[Justice]] or the Legion of [[Tyranny]]. 

An offensive's primary goals often focus on destroying an
important opponent. The Legion of Justice knows it can't drive
Tyranny from [[Nullius Terram]], but defeating Lord Commander
Astaralax is an important victory for the light, even though he's
an immortal and will eventually return. Sometimes an especially
grand victory might cause an immortal to be “discharged”—when
this happens, a new being of equivalent power takes its place,
but it has a new personality, and the original spirit is eradicated.
Such victories are worth even more points in the grand system
that calculates the balance of power between the legions.

!!! Conscripts

In [[Nullius Terram]], the trenches are filled with miserable
soldiers waiting for the offensive. The [[City of Knives]] is filled with
innocents struggling to survive and looters taking advantage of
the chaos. There are [[dragon]]s in the [[Burning Sky]]—but none of
these are mortals. They're all [[manifestation]]s, ideas conscripted
to serve the purpose of the story. Conscripts appear to be
sentient, but have no depth of personality or memory, can't leave
their layers, and can't accomplish anything meaningful unless
accompanied by a [[celestial]] or [[fiend]]. It's only when the [[angel]]
leads a charge that the conscripts of Nullius Terram matter, and
though they inevitably die, they eventually reform. Conscripts
can use the statistics of the creatures they appear to be, but may
not have their full capabilities; the dragons of the Burning Sky
aren't as intelligent as true dragons. A conscript usually appears
indistinct; it's hard to focus on them, and it's often easy for a
viewer to imagine conscripts are members of their own species.

!!! Sword Wraiths

All mortal creatures have a spiritual connection to Shavarath,
and there's a sliver of their spirit in the plane. The strength of
this sliver is determined by the mortal's courage, willpower, and
martial drive. Conscripts are formed from this spiritual energy,
but have no awareness and may be formed from multiple slivers;
unlike [[Irian]]'s [[ember]]s, the conscript doesn't resemble the source.
Sometimes, on the death of a great mortal warrior, echoes of
their personality and martial spirit can coalesce into a sword wraith (though its abilities may vary based on the champion it echoes). Unlike standard conscripts, sword wraiths are capable of meaningful action even without the direction of an
[[immortal]] and can command conscripts of their own. A sword
wraith has the appearance of its mortal source and some of
the memories, but it's only an echo of the mortal, much like the
traces of memory that allow you to speak with dead. Sword wraiths reconcile their memories with the war within the layer. If there's a sword wraith of [[Karrn the Conqueror]] commanding troops in [[Nullius Terram]], he believes that he's fighting for
[[Karrnath]] and can't be convinced otherwise; after all, he's only a
memory, and there are limits to his ability to reason.

So adventurers might meet [[Lhazaar]] as she commands a
ship in the [[Bloody Sea]]. [[Dhakaan]]i champions, the [[Mror clan]]
founders, heroes of the [[Last War]]—any of these could be found
as sword wraiths, serving the legion that best matches their
values. There are sword wraiths of many patron ancestors
of the [[Tairnadal]] elves; however, these aren't the patrons
themselves, simply echoes left behind. While sword wraiths
generally form after a mortal's death, the slivers of especially
remarkable heroes can manifest sword wraiths even while
alive. King [[Boranel|Boranel ir'Wynarn]] of [[Breland]] surely has a sword wraith
serving in the Legion of Justice, and it's possible an adventurer
could meet their own sword wraith while exploring Shavarath.

!!! Whirling Blades

Shavarath's whirling blades are enigmatic and deadly. These
[[manifestation]]s are swarms of animated weapons—knives,
swords—that tear through the air, eviscerating anything
unfortunate enough to be in their path. Sometimes they follow
consistent paths like flocks of birds. Other times, they appear in
a flash, lashing at victims, then vanishing. The whirling blades
may be a defense mechanism designed to keep mortals from
interfering with Shavarath, and the longer mortals remain in
Shavarath, the more likely they are to be struck. These blade
storms can also leak out into the Material Plane in areas of
particularly brutal conflict, spilling blood on all sides.

!!! Angels

Most of Shavarath's [[celestial]]s serve the Legion of [[Justice]], which
embodies the concept of war fought for a just cause. 

The angels of Shavarath have a martial aspect, most
appearing clad in armor, with their faces—and species—hidden
behind full helms. Any sort of angel can be found in Shavarath,
with its power reflecting its position. [[Planetar|planetar]]s command
centuries, while each cohort is commanded by a [[solar]] or a
[[celestial]] being of greater power. While
the angels serve Justice Command, there are a few units also
devoted to the [[Sovereigns|Sovereign Host]]. The Century of the Sun asserts that
[[Dol Arrah]] //is// Justice Command, and sword wraiths formed from
[[paladin]]s of Dol Arrah serve with this century.

While the Legion of [[Justice]] is the largest of the celestial
legions, there are others, such as the Legion of [[Freedom]], that operate on a smaller scale. 

!!! Demons

Demons represent the chaotic savagery of war. Most serve the
Legion of [[Cruelty]], and are wild, brutal, and far less disciplined
than the [[devil]]ish forces of [[Tyranny]]. 

As with all [[immortal]]s of Shavarath, it's important to remember that these demons are first and foremost embodiments of war;
regardless of what role a demon might play on another [[plane]],
here, it's devoted purely to the eternal war. It could be that there
is a Cohort of Bones that uses [[undead]] conscripts in battle,
commanded by a [[fiend]] as powerful as an [[overlord]]—but this
commander wouldn't have the overlord's ambitions, instead focusing
on crushing the Cohort of the Sun in its layer.

As with [[angel]]s devoted to the [[Sovereigns|Sovereign Host]], some [[demon]]s
dedicate themselves and their unit to the [[Dark Six]]. 

!!! Devils

[[Devil|devil]]s can be just as cruel as [[demon]]s, but they represent the
disciplined practice of war in pursuit of oppression, and most
serve the Legion of [[Tyranny]]. 

!!! Weapons of War

The battlefields of Shavarath contain engines of war unlike
anything imagined on Eberron. Steel [[kraken]]s in the [[Bloody Sea]]. Massive cannons that could bring down [[Sharn]]'s towers with a single volley. Immense [[monstrosities|monstrosity]] that serve as living battering rams. However, even the grandest of these creations isn't a product of industry or arcane science—these
too are conscripts. The mighty cannon isn't forged in some
great foundry, but formed by the layer itself, because it's part
of the //idea// of this battle. [[Fernia]] is a [[plane]] of industry where
an [[artificer]] might learn amazing techniques from the [[dao]]; by
contrast, in Shavarath, an artificer might be inspired by what
they see, but most of the greatest weapons can't be replicated.

!! Layers

Shavarath has countless [[layer]]s, each one reflecting a different
struggle. There's a vicious guerilla war in the Forest of Shadows. The Monolith is a mighty fortress that's always under siege; occasionally, the attackers tear it away from the
defenders, at which point the former defenders begin the
siege anew. Layers are connected by a network of heavily
fortified portals, though the most powerful [[immortal]]s can
shift between layers under their own power. Every legion has
a command center or headquarters in the layers in which
they operate. The legion might only assign a few centuries to
smaller layers, but if a layer's large enough—such as [[Nullius Terram]]—it may host an entire cohort.

These are a few examples of layers of Shavarath, but almost any vision of war could spawn a layer.

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Here are a few ways Shavarath can affect the Material Plane.

!!! Manifest Zones

[[Manifest zone|manifest zone]]s tied to Shavarath often inspire people to
violence and aggression, and can convey any of the plane's
universal properties. These zones can be dangerous places to
dwell, but can also encourage martial discipline and enhance
training. While many of the greatest weapons in Shavarath
can't be removed from the plane, manifest zones tied to
Shavarath can often provide inspiration for [[artificer]]s and
smiths, and it may be possible to craft deadly enchantments in
a Shavaran manifest zone that simply aren't possible beyond it.

Manifest zones rarely act as gateways to Shavarath, but
anything is possible when Shavarath is coterminous.

!!! Coterminous and Remote

When Shavarath is coterminous, people are quick to anger and
must be careful to not fight over trivial things. Angry words are
more likely to produce brawls, and restless thought to lead to
riots or revolutions. The plane's //War Magic// and //Unquenchable Fury// properties spread worldwide while it's coterminous, encouraging violence. Meanwhile, in Shavaran [[manifest zone]]s, outbreaks of intense violence can draw whirling blades into the
zone, slaughtering people on all sides.

Shavarath is traditionally coterminous for 1 year every 36
years. Throughout history, some military leaders have plotted
campaigns around this, while peaceful communities plan ahead
to contain violence. In addition to its regular cycle, Shavarath
frequently grows coterminous for a single day; predicting these
periods was critical for battle strategy during the [[Last War]].
Shavarath is traditionally remote for a year every 36 years, which
prevents the occasional single-day coterminous spikes, but
otherwise has no apparent effect on the Material Plane.

!!! Shavaran Artifacts

Unlike [[Fernia]]n [[elemental]]s, the [[immortal]]s of Shavarath don't
create their weapons and tools of war; they're shaped by the
plane itself. Many of the grandest weapons—explosives that
can level cities, airships the size of small towns—either can't
be removed from Shavarath or wouldn't function elsewhere.
But Shavarath is a potential source for armor, weapons, and
tools of war, from common items to the artifacts wielded
by the commanders of cohorts. These may be some of the
most powerful weapons in the multiverse—but they're also
irreplaceable. You can steal the //Wand of Orra'Cys//, lord of the
Cohort of Bones—but he'll certainly want it back, and may
deploy [[demon]]s, [[warlock]]s, or other agents to reclaim it.

The legion an item is associated with affects its appearance.
Tools of the Legion of [[Justice]] are bright and inspiring, while
those tied to the Legion of [[Tyranny]] are grim and intimidating.

!! Shavaran Stories

The simplest story is one of survival, escaping from Shavarath
before being destroyed by the endless war. But Shavaran
adventures touch the Material Plane too; here are some ideas.

//''Blades of War.''// [[Cannith]] builds a forgehold for manufacturing
weapons on a [[manifest zone]] tied to Shavarath. All goes well—until a planar spike unleashes whirling blades and everything is thrown into chaos. Making things worse, some experimental [[construct]]s have gone berserk, an experimental Shavaran
explosive is detonating in five hours... and it's possible an agent
of the [[Lord of Blades]] has infiltrated the hold in the chaos. Can
the adventurers get things under control?

//''The Surge.''// In [[Fairhaven]], an [[artificer]] creates an [[eldritch machine]] to channel Shavarath's power—but it works too well. When Shavarath becomes coterminous, the eldritch machine amplifies everyone's aggression. Riots and looting break out
across the city, while the guards act brutally to contain it. Can the
adventurers find and deactivate the machine before the city tears
itself apart? Is this the work of a single reckless artificer, or tied
to the cult of [[Rak Tulkhesh]] or the Order of the [[Emerald Claw]]?

//''Deadly Weapon.''// The adventurers find a corpse clutching the blade of Misery, an [[erinyes]] of the Legion of [[Tyranny]]. An agent of the [[Argentum]] died while attempting to take the blade to a place it could be destroyed. Will the adventurers
try to complete the mission, or claim the powerful sword as a
trophy? If they choose to keep it, Misery will eventually come
looking for her sword... and this cruel immortal will want to take
some time to torment any mortals who have sullied her blade.
The duties of this branch of the [[Unity]] of [[Riedra]]
range from sanitation to disaster relief. Leaders of the
organization serve as liaisons with the other branches of
government; if a plague breaks out, the Hearth works
with the [[Healing Hand]] and the [[Thousand Eyes]] to isolate
and kill those infected before the disease can spread. The Hearth can request the aid of the Thousand Eyes but cannot demand it. Lord Dulateth ([[hashalaq]] [[Inspired]]) directs the Hearth from the bastion of [[Dul Uldane]]. 
As a reaction to being attacked, the spellcaster creates an invisible barrier of magical force to block the attack. The shield lasts for 5-10 seconds before dissipating.
When you speak the command word while wearing this wide steel cuff, it transforms into full-sized kite shield and ceases to be magical.
//Geth's ancient heritage rose up from deep within him, spreading out from the core of his being. Some shifters manifested terrible claws, others massive fangs, still others astounding speed or heightened senses. Geth's gift from his lycanthrope ancestors was sheer toughness. Strength seeped into his bones and flooded his flesh. His skin hardened, and his hair became coarse like an animal's tough hide. A sense of invincibility spread through him. For the moment at least, he felt unstoppable!//

<div align="right">—Don Bassingthwaite, //The Binding Stone//</div>


Shifters are sometimes called the weretouched, as
many believe they are the descendants of [[human]]s and
[[lycanthrope]]s. Whatever their origins, shifters have
evolved into a unique race. They are humanoids with a
bestial aspect; while they can't fully change shape, they
can temporarily enhance their animalistic features—a
state they call shifting. Each shifter walks on the knife's
edge between the wilds and the world around them.
Do they embrace their primal instincts or the path of
civilization? 

!! The Beast Within

Early in childhood, a shifter forms a bond with a beast
within, a totemic force that shapes their body and mind.
Some shifters believe that these spirits are independent entities, and they may speak of Bear or Wolf as ancestors or guides. Most just see the beast within as a
formidable expression of their inner nature, something
that emerges as the shifter's personality takes shape.
The beast within is a pool of powerful instincts, and its
influence is revealed by a shifter's personality: a feline
shifter may be cool and distant, driven by predatory
instincts, while a shifter with a lupine spirit might be
drawn to find and protect a pack. When a shifter fully
embraces this beast within they physically transform
for a short time. 

A shifter's beast within is reflected by the shifter's subrace. Four subraces are especially common:

* [[Beasthide|beasthide]] often signifies the bear or boar: stoic, stubborn, and thick-skinned.
* [[Longtooth|longtooth]] shifters typically have lupine traits and prefer to run with a pack.
* [[Swiftstride|swiftstride]] are often predatory and feline, but a swiftstride could also be a cunning rat who darts through the shadows.
* [[Wildhunt|wildhunt]] shifters are born from any creature that tracks its prey.

While the beast within certainly has a physical impact on a shifter, it has a spiritual and psychological effect, as well. Two beasthide shifters share the same special ability, but if one has the aspect of the boar and the other is more like a bear, they'll be quite different in personality. With any shifter, identifying the beast within is a crucial part of understanding the character. 

!! Similar and Diverse

Shifters are quick to mature both physically and emotionally, reaching young adulthood at age 10. They rarely live to be more than 70 years old. 

Shifters are similar to [[human]]s in height and build but are typically more lithe and flexible. Their facial features have a bestial cast, often with large eyes, flat noses, and pointed ears; most shifters also have prominent canine teeth. They grow fur-like hair on nearly every part of their bodies.

The traits of the beast within affect a shifter's appearance as well. A [[swiftstride]] shifter may have catlike eyes and delicate build, while a [[beasthide]] shifter might be a massive brute built like a bear. While a shifter's appearance might remind an onlooker of an animal, they remain clearly identifiable as shifters even when at their most feral. 

!! The Journey Yet to Come

Shifters have a strong presence in the [[Eldeen Reaches]] but can be found in rural areas across [[Khorvaire]], where they often live among humans. While they form powerful bonds to friends and kin, shifters place great value on self-reliance and freedom. It's a shifter proverb to "always be prepared for the journey yet to come," and most shifters strive to be ready for change or opportunity.

Shifters have a natural inclination toward classes with a primal connection. A shifter barbarian draws their rage from the beast within. A shifter ranger indulges their urge to wander and hunt. A shifter rogue harnesses their own predatory instincts. But shifters can pursue any path or faith. 

!! Shifter Names

Shifters have no language of their own and often live
in blended communities. Their names typically overlap
with the names of other cultures in their region. Many
shifters prefer to keep their personal names for their
friends and use "wandering names" with strangers.
These are usually tied to a physical or personality trait.

//''Shifter Names:''// Badger, Bear, Cat, Fang, Grace, Grim,
Moon, Rain, Red, Scar, Stripe, Swift, Talon, Wolf

!! Shifters of Droaam

There are a significant number of shifters among the
[[humanoid]] population of [[Droaam]]. In the former Barrens, shifters
were largely mixed together with the Gaa'aram [[orc]]s, much
the same way that the [[goblin]]s and [[kobold]]s of Droaam have
formed a collective culture. These orcs call shifters //taarka'va//—wolf brothers. Pairings between shifter and orc can produce offspring, but the resulting half-orcs are almost always sterile.

Another group of shifters are found in the [[Watching Wood]].
They call themselves //Ur'haakar//—First Panthers. These shifters
shun civilization and take pride in their primal connection.
Experts at stealth, they possess both rangers and Living Weapon monks. A few of the Ur'haakar have joined the [[Dark Pack]] and left the woods to serve the [[Daughters|Daughters of Sora Kell]] and [[Droaam]],
but most of the panthers prefer their isolation and consider the
[[lycanthrope]]s of the Dark Pack to be corrupted shifters.

!! Shifters of Sarlona

As the secrets of [[Sarlona]] have revealed themselves to
the [[Khorvarian|Khorvaire]] scholars over the last few years, one of
the most startling revelations was the discovery of a
vast shifter population in northern [[Tashana|Tashana Tundra]]. It has
become apparent that, like [[human]]s and [[ogre]]s, the
shifter race may have actually originated in Sarlona.

The [[three Tashana shifter groups|Culture of the Tashana shifters]], each consisting of hundreds if not thousands of individual, semi-nomadic tribes, are not nations in the typical sense. Rather, they are people bound together by common tradition and loose territorial
boundaries. 

While the three nations have known great wars in the
past, they have maintained a relative peace for many generations. Tashanan shifters place much more importance
on the community than do their self-reliant brethren in
Khorvaire. The semi-nomadic tribes of the [[Qiku]] and [[Saartuk]], in particular, have evolved a kind of parallel civilization to the urbane nations of the world—one that values natural simplicity over technological sophistication, mobility over
entrenchment, and spirituality over materialism. The [[Chuniigi]] tribes roam the northern reaches of the tundra.

Previous to the rise of the [[Inspired]] in [[Riedra]],
a branch of the Qiku nation roamed far south into
the lands that are now the [[Dor Maleer]] region. As the
Inspired came to power, they enslaved these southern
tribes, who have since evolved into an elite warrior caste
serving in Riedra's "Savage" [[Taskaan Legion]].

Shifters of the [[Taskaan Legion]] are few but all are bred for
battle. The Taskaan adhere to a strict code of discipline
and loyalty to the [[Inspired]]. Although furious in battle,
they act with skill and wisdom.

Although the [[beasthide]] trait is the most common
among the Taskaan, shifters who have other traits are also
found in the legion. Some Inspired lords prefer to maintain a corps of shifters each of whom has the same trait, while others strive for diversity in their house guards. 

Some individual shifters and small packs have also made homes in the wilds of [[Syrkarn]].
The resources of the [[Tyrants]]
are hidden throughout [[Dragoneyes]], but they maintain a small building on the Street of Eyes where prospective clients can come in search of services. This
building is completely unmarked and unremarkable.
To find it, a character must obtain directions or make an attempt to gather information. The [[Tyrants]] leadership is rarely found at the hall, and instead moves from base to base throughout the district. 
There are countless islands on the edge of the [[Sea of Chaos]],
varying dramatically in size, each with its own environment.
These are constantly changing, but they change slowly; it can
take anywhere from a day to a week for an island to shift from
a barren desert to a verdant jungle. Weather is generally more
dynamic, and often at odds with the environment; a vast desert
can suddenly face a dramatic blizzard. Use the buttons below to generate random weather effects, monuments, or "weird locales" for ideas for what adventurers might find on one of these chaotic islands.

<$button>
<$action-chooserandom $dataTiddler="RandomTemp" $field="w1"/>
<$action-chooserandom $dataTiddler="RandomPrecip" $field="w2"/>
<$action-chooserandom $dataTiddler="RandomWind" $field="w3"/>
Weather
</$button>

<<<
{{!!w1}}, {{!!w2}}, {{!!w3}}
<<<

<$button>
<$action-chooserandom $dataTiddler="RandomMonument" $field="monument"/>
Monument
</$button>

<<<
{{!!monument}}
<<<

<$button>
<$action-chooserandom $dataTiddler="RandomLocale" $field="locale"/>
Weird Locale
</$button>

<<<
{{!!locale}}
<<<

Keep in mind that Kythri is home to [[mimic]]s of all
sizes; an unusual monument might be a colossal mimic!

The primary denizens of the Shifting Islands are
monstrosities and beasts that blend the features of multiple
creatures. Populations expand and contract, and don't have to
be sustainable, so adventurers could find a plateau filled with
[[griffon]]s, or a realm of [[chimera]]s where each one has a different
arrangement of heads. The intelligent inhabitants of the island
are almost entirely [[slaad]]i, but they aren't necessarily hostile. One might even stumble across a slaad village where adventurers are worshiped as gods!
This stone is made of bands of sediment that seem to shift and churn endlessly. You may throw this item or launch it with a sling. On contact with soil or rock, the shifting stone is absorbed into the ground causing all of the earth and stone within a 15-foot radius to begin to churn and shift, liquefying into a thick mud. 

Creatures within the affected area must attempt to escape the shifting earth or else sink down into the earth up to their midsection, at which point the ground solidifies, restraining the creature(s).
When a suit of shiftweave is created, up to five different outfits can be embedded into the cloth. While wearing the clothing, you can speak its command word to transform your outfit into your choice of one of the other designs contained within it. Regardless of its appearance, the outfit can't be anything but clothing. Although it can duplicate the look of other magical clothing, it doesn't gain their magical properties.
The Shimmerwood is a large forest that spans most of [[Zilargo]]'s southern shore.
The [[Lhazaar|Lhazaar Principalities]] legend of the Ship of Bones claims that the evil Prince Moren of the [[Bloodsails]] was cursed for his use of dark magics, and now he sails the [[Lhazaar Sea]] in his skeletal ship with a crew of [[undead]] pirates in search of living
sailors on which to feed. It is said that on nights when two
or more moons are full, the Ship of Bones slides silently
over the waves to attack hapless vessels unlucky enough to
cross its path.
''District Type:'' Waterfront district<br/>
''Buildings:'' Other (20), temples ([[Kol Korran]],
[[Arawai]], [[Boldrei]], the [[Traveler]]), poor lodging (20),
poor food (36), poor trades (100), poor services
(140), poor residences (80)<br/>
''First Impression:'' Most of the traffic here consists of sailors in search of entertainment. Bars, flophouses, and small shops—many of which don't bother to advertise the nature of their business—line the street, which winds precariously along the edge of a steep cliff overlooking the river.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Grayflood]] (north); [[Sharn's Welcome]] (northeast); [[Mud Caves]] (east)

Almost identical to [[Grayflood]] in mood and appearance, Ship's Towers is distinguished by its southern tip. Here, buildings float upon the water. This boat town, formed of rafts, houseboats, and other watercraft of every shape and size, bobs on the water and is connected by a web of piers, gangplanks, and rope bridges. 
Lightning springs from the spellcaster's hand to deliver a shock to a creature they try to touch. If successful, the target is electrocuted, taking damage and becoming slightly dazed.

The spell is particularly effective if the target is wearing armor made of metal.
These grey shoes have strange runes inked into the wooden soles. Once per day, the wearer can walk across air as if there were a solid 30-foot walkway or staircase. The invisible walkway lasts until the wearer steps back onto solid ground, or 12 hours, whichever happens first.

In the [[upper ward]]s of [[Sharn]], maintenance crews who work on bridges or tower exteriors often have one or two pairs of these shoes.
This item is a recent development of the [[artificer]]s of the [[Twelve]] and is not yet widely available.

This is a small stone disk bearing a sliver of Siberys [[dragonshard]]; it can easily be concealed in the palm of one hand. While holding the Shol eye, a creature with the [[Mark of Shadow]] can choose to record an image in the eye. This can be the full vista of what the bearer can currently see, or it can be focused on a specific individual or object within line of sight. A Shol eye can only hold a single image at a time. If a creature with the Mark of Shadow works with the eye for a few minutes, they can transfer the stored image out of the eye and onto a sheet of parchment or similar material.

Higher-rarity versions of this item could store multiple images.
| !<<dr d10>> |!Effects (lasts <<dr 1d10>> minutes) |
| 1 |The character retreats into their mind and becomes paralyzed. The effect ends if the character takes any damage. |
| 2 |The character collapses on the floor and spends the duration screaming, laughing, or weeping. |
| 3 |The character becomes terrified, and is compelled to flee from the source of their fear. |
| 4 |The character begins babbling and is incapable of normal speech or spellcasting. |
| 5 |The character physically attacks the nearest creature for the duration. |
| 6 |The character experiences vivid hallucinations and has disadvantage on all actions. |
| 7 |The character does whatever anyone tells them to do that isn't obviously self-destructive. |
| 8 |The character experiences an overpowering urge to eat something strange such as dirt, slime, or offal. |
| 9 |The character is completely stunned, unable to move or act except to speak falteringly. |
| 10 |The character falls unconscious. |

A [[calm emotions]] spell can suppress the effects of madness, while a [[lesser restoration]] spell can rid a character of a short-term or [[long-term madness]]. Depending on the source of the madness, [[remove curse]] might also prove effective. 
In the early days of Sharn, [[Lower Northedge]] contained a strong
network of [[wererat|lycanthrope]]s. When the [[Silver Flame]] sought to
exterminate the lycanthropes, the [[cleric]] [[Fathen]] was
instrumental in identifying the two-legged vermin
infesting the city. In the final days of the crusade,
Fathen uncovered a nest of wererats in [[North Market]]. 

Fathen was torn apart in the street, but somehow he
granted the common citizens the power to bypass the
[[lycanthrope]]s' resistance to injury and a mob of commoners defeated the creatures. The Church of the [[Silver Flame]] raised a shrine on the site of Fathen's
death, and to this day pilgrims come from across
[[Khorvaire]] to pray at the martyr's shrine. The [[shifter]]s
of [[Sharn]] are still bitter about the [[crusade|Silver Crusade]], and there
is often tension between shifters and followers of the
Flame, especially on the day of [[Fathen's Fall]].

Kaira Faine ([[half-elf]] [[cleric]]) maintains the shrine, as this former member of the church
templars has grown too old to fight on the front lines.
A follower of the [[Silver Flame]] who visits the shrine can
ask Kaira to bless their weapon. The priest asks for a donation commensurate
with the pilgrim's wealth, though [[paladin]]s of the
Flame are never required to pay the tithe. The blessed
weapon gains the properties of silver for
purposes of harming creatures with a weakness to silver. This effect
lasts for 24 hours, and a particular individual can only
receive the blessing once every week.

Any [[lycanthrope]] that enters the shrine experiences a powerful supernatural aura that forces them to revert to animal form. This applies to both afflicted and natural lycanthropes. 
The [[kalashtar]]-constructed shrine of il-Yannah, the [[Path of Light]],
occupies a small parapet at the top of a tall tower.
From the breathtaking views to the [[Sarlona]]n incense
that scents the air, the shrine radiates a calm, otherworldly peace. Tapestries with intricate, labyrinthine
patterns cover the walls and floor, adding to the exotic
nature of the place. The enlightened [[Havakhad]], a powerful [[psion]]
whose frail body is beginning to fail, tends the shrine
and rarely wanders far from this location. Havakhad
gladly offers advice and spiritual guidance to any
follower of the Light who comes to meditate at the
shrine, and he sometimes uses his precognition on behalf
of those he considers to be champions. 
While the [[Keeper]]
is associated with death, he is first and foremost the
god of greed—the hunger to possess all things, from
gold to souls. [[Gellis Candar]] ([[dwarf]]) runs a large pawnshop in the Bazaar, and
he maintains a shrine to the Keeper in a hidden back
chamber. A few of the other merchants know of the
shrine and attend Candar's services, believing that the
Keeper can help them fulfill their greedy desires. 
Hidden down a dark alley,
the shrine of The [[Shadow]] represents the dark side of
Everbright. Here, necromancers and other evil wizards gather in secret to revere the power of magic perverted to evil ends, led by a [[cleric]]/[[necromancer|necromancy]] named
Thalanna. This secretive cult has no grand evil schemes for
world domination; they exist purely to worship their
patron deity and hide only to escape persecution.
The first line of defense for the exiles of [[Adar]], the Shroud is
an energy field generated by a set of massive crystals, one in
each of the eight monastery-fortresses hidden throughout
the mountains. As long as all eight [[shroud resonator]]s are active, the Shroud provides two effects—a [[dimensional lock]] that prevents all forms of extradimensional movement
into, within, or out of Adar, and a [[psionic|psionics]] effect that
hampers all [[scrying]] attempts within Adar. The lock does not
prevent summoning spells, nor does it hamper spells that
send creatures back to their home [[plane]]s.

The resonators require constant [[psionic|psionics]] power. Should
a crystal fail to receive any psionic power for 1 hour, it shuts down and the Shroud is weakened. The dimensional lock and non-detection effects become less reliable. If one shroud resonator is inactive, any effect the Shroud normally blocks
has a <<drp 20% "Shroud penetrated." "Effect blocked.">> chance of penetrating it instead. If two shroud resonators are inactive, the chance rises to <<drp 50% "Shroud penetrated." "Effect blocked.">>. When three or more resonators are inactive, the Shroud shuts down.

Each of the eight main monastery-fortresses in
[[Adar]] has a chamber in which a shroud resonator is set. All
monasteries have a rotating group of [[psion]]s that maintains and powers the resonator. Most resonators are placed in areas that are difficult to get to even if the surrounding citadel is breached. All shroud resonator chambers
are built for defense. 

!! Shroud Bubbles

Small areas of Adar remain unprotected by the Shroud—a
fact Adar's defenders are aware of and the [[Inspired]] could
exploit. One who knows exactly where two of these bubbles
are can travel between them using [[teleport]] or similar effects.
Since travel within the Shroud is only possible between
bubbles; teleportation into [[Adar]] is still not possible. It is feasible, however, that some device could be fashioned to function as a beacon to allow travel into a
Shroud bubble from outside Adar. [[Adarans]] haven't created
such devices, and fortunately for them, if the area where a
bubble exists is not "very familiar" to someone using teleport,
the effect functions as if the user had a false destination.
The arrival point in such a case is never within Adar. 

Each monastery-fortress has a lesser resonator, which allows its inhabitants to rehearse teleportation powers or spells that require extradimensional travel or elements, or to conduct emergency transport. Lesser resonators
are kept in special areas of a monastery, heavily guarded.
Such areas are too small for any group larger than a
couple dozen humans to crowd into. 

A character powering a [[shroud resonator]] can sense
shroud bubbles within a mile of the device and shut them
down at will. 

The Shroud reaches less than a mile beneath [[Adar]] at
sea level. Farther underground is one big Shroud bubble.
This weakness is hard to exploit, however. Dangerous
creatures dwell in the deeps of [[Khyber]], and the [[dromite]]s
that live below Adar are hostile to [[Riedrans]] and suspicious of strangers. 

Other Shroud bubbles occur in [[manifest zone]]s,
especially those tied to [[Kythri]]. Such bubbles are wildly
unreliable in their location and length of existence.
Those who power [[shroud resonator]]s can do little about these
bubbles, since the bubbles often reopen immediately after
being closed. Natural Shroud bubbles could prove to be
a weak spot in [[Adar]]'s defenses if [[Riedra]]n forces were to
discover one they could use consistently. They'd still have
to devise a means of crossing the Shroud to the bubble,
however, and most wild bubbles are deep within Adar.
Eight shroud resonators power the [[Shroud]] that keeps [[Adar]]
safe from the eyes and attacks of the [[Inspired]] and the
[[Dreaming Dark]].

The shroud resonator in each Adar monastery is a massive violet and red crystal, roughly 6 feet tall. When supplied with [[psionic|psionics]] power, the crystal glows
brightly and vibrates with a deep oscillating hum. When
a resonator is within 1 minute of losing power, its light
begins flashing erratically.
As the [[couatl]] battled the [[fiend]]s at the end of the [[Age of Demons]], they established outposts across the length of [[Eberron]]. The greatest of these was the fortress-citadel of [[Krezent]], located in the heart of what is now the [[Talenta Plains]]. The city extends down into the depths of [[Khyber]], and by the end of the war, terrible forces had been bound in its foundations. A handful of [[couatl]] remained to watch over the world, but they were too few to guard every seal, so they sought out helpers among the younger races. According to legends, a small group of loyal [[human]]s from [[Sarlona]] dedicated their lives to the service of the couatl. Over the course of thousands of years, this devotion changed them in body and soul. By the time the Empire of [[Dhakaan]] rose to power, the guardians of Krezent were no longer human. They had become shulassakar—the feathered servants.

!! Children of the Silver Flame

The people of [[Krezent]] are a wondrous sight: [[human]]s blended with [[couatl]], with serpentine features and feathers that glow with an inner light. The shulassakar are dedicated servants of the [[Silver Flame]] and will give their lives without a moment's thought to combat the forces of darkness.

Most people have never heard of the shulassakar. If these serpent guardians are so noble and wise, why do the [[halfling]]s fear them? Why do the tribes of the [[Talenta Plains]] avoid the ruins of Krezent and whisper tales of the serpentfolk on moonless nights?

The Silver Flame is a force for good, but its followers are often blinded by its light, and the shulassakar are no exception. They fight against darkness with ruthless efficiency and will make any sacrifice necessary for the greater good, including the lives of innocents. No one can jeopardize the seals of Krezent. The shulassakar seek to repel outsiders peacefully before they venture too deeply into the ruins but those who persist are dealt with swiftly and harshly.

The feathered servants do not believe that any other creature can truly touch the light of the couatl. The Church of the [[Silver Flame]], the [[Keeper of the Flame]]—these are inherently flawed. While they may mean well, they are tampering with forces they do not understand. A shulassakar is more inclined to work with a follower of the Flame than with any other creature but she will still treat the character as an underling or a child. As far as she is concerned, the physical form of the shulassakar is proof of spiritual superiority.

The shulassakar consider their serpentine characteristics to be a blessing and a sign of their bond with the [[couatl]]. They believe that a shulassakar goes through cycles of reincarnation and that the three different forms of shulassakar represent this spiritual growth. 

!! Fighting the Darkness

The shulassakar devote their energy to guarding Krezent and other [[couatl]] ruins scattered across [[Eberron]]. They are aware of the rising darkness—the [[Lords of Dust]] that have escaped from their bonds, the [[Cults of the Dragon Below]], the lurking threat of the [[Dreaming Dark]]. The shulassakar face these forces directly when possible. A handful of shulassakar bloodsworn have hidden themselves among humanity, watching for signs of the rising darkness. A shulassakar always prefers to solve a problem on its own or to call in a more powerful servant to handle the problem. At the same time, the shulassakar recognize that victory is more important than pride.

When dealing with the shulassakar, bear in mind that they are highly intelligent and devoted to the cause of good, but also proud, arrogant, and ruthless. They will give up their own lives for the flame and have no compunctions about sacrificing the lives of humans or other lesser creatures. Shulassakar seek to maintain an aura of serenity at all times; the only emotion they reveal is cold, focused fury against the forces of darkness.

A shulassakar may approach adventurers openly, especially if one or more members of the party follow the [[Silver Flame]]. Because shulassakar have little respect for the young races, however, it is more likely that one will attempt to manipulate or trick a party into serving its purposes, believing that humans cannot be trusted to do the right thing simply because it is right.

If a character earns the respect of the shulassakar, they can be valuable allies. Aside from the vast knowledge they possess, they have access to treasures from the [[Age of Demons]] and the wisdom of the [[couatl]]. It is possible that a shulassakar mystic could teach new spells to a [[cleric]] or [[paladin]] of the Silver Flame, showing ways to channel the flame that humanity has never discovered. The shulassakar also have a close bond with the remaining couatl, and may be able to channel one of these [[celestial]]s. 

!! The Shulassakar and the Yuan-Ti

Physically, the shulassakar are similar to the [[yuan-ti]]. There is one major difference between the two races: where the shulassakar have serpentine characteristics, their scales are hidden beneath brilliantly colored feathers. The mightiest of the shulassakar, transcendents, also possess powerful wings. Bloodsworn shulassakar do not have feathers but often possess colorful markings on their skin. These are easily mistaken for tattoos but they are magical in nature and can shift color and shape in response to the mood of the bearer. The extent of these markings varies from one creature to another, and generally they will not prevent the creature from disguising itself as human.

Despite their physical similarities, shulassakar and [[yuan-ti]] cultures have little in common. The shulassakar claim that the ancestors of the yuan-ti were chosen of the couatl who broke their vows to the flame and who have since slipped into decadence. As a result, the shulassakar despise the yuan-ti. If the yuan-ti shared these legends, they abandoned them long ago, and they have no interest in the shulassakar. 

For comparison:

* ''Bloodsworn'' shulassakar are similar in power to [[yuan-ti pureblood]]s.
* ''Flametouched'' shulassakar are similar in power to [[yuan-ti malison]]s.
* ''Transcendent'' shulassakar are similar in power to [[yuan-ti abomination]]s.
According to the myth of the [[Progenitor Dragons]], after the Progenitors created much of the universe, the deceitful [[Khyber]] tore her brother [[Siberys]] apart. The scales of Siberys were scattered across the void, becoming the stars in the sky. 

Today, one only needs to look up to see the ring of golden crystal shards orbiting the planet of [[Eberron]]. This ''Ring of Siberys'' is said to be what remains of the Progenitor's body, but myth aside, the Ring of Siberys is the source of Siberys [[dragonshard]]s which fall to Eberron. [[Diviners|divination]] (such as members of the [[Gatekeeper|Gatekeepers]] [[druid]]ic tradition) also look to the movements of the Ring of Siberys to read omens of the future.
The Sibling Kings lead the nation of [[Aerenal]] from [[Shae Cairdal]], guiding the daily affairs of the nation. They are seen as the living embodiment of Aerenal and the conduit for the power of the [[Undying Court]].

By ancient tradition, the nation must be ruled by a bonded brother and sister. But the Sibling Kings are typically part of the same [[noble line|Aereni noble line]], but only symbolically blood siblings.

For most of the history of [[Aerenal]], the [[Mendyrian]] noble line has been the source and seat of the Sibling Kings.
Dim, greenish light spreads within a 30-foot-radius sphere centered on a point you choose within 120 feet. The light spreads around corners, and it lasts until the spell ends.

When a creature moves into the spell's area, it must resist the magic of the enervating light or suffer exhaustion and radiant damage. The creature also begins to glow with a dim, greenish light that prevents them from benefiting from invisibility.
Siege staffs, the primary form of [[arcane artillery]], are made of
wood—typically around fifteen feet long—engraved with mystic
sigils and inlaid with [[dragonshard]]s.

Activating a siege staff takes three actions: one to prime the
staff; one action to aim it; and one action to release the spell.

There are several basic models, each of which serves a
different purpose. When activated, it produces one of the
following effects, determined by its model:

//''Blast Staff.''// This model was typically used to bombard
massed troops or villages, unleashing a wide burst of energy. It
has a range of 300/1200 feet and targets all creatures within a
60-foot-radius sphere. 

//''Force Staff.''// This model releases focused blasts of pure
energy. Developed late in the war, these were primarily used
to target fortifications, [[warforged titan]]s, and [[airship]]s. It has a
range of 600/2400 feet.

//''Focus Staff.''// This model acts as a [[magical implement]], amplifying the spells cast by an attuned spellcaster. Any offensive spell can be cast through this model of siege staff. The range is magnified by a factor of 5, with a long range of up to
10 times the spell's standard range—so a [[fire bolt]] cast through
a siege staff has a range of 600 feet and a long range of 1,200
feet. The spell's area of effect is doubled. If the spell normally
affects a single target, it instead affects a 20-foot-radius sphere.
Positioned along the [[Thrane River]] near its source,
Sigilstar marks the convergence of three caravan
routes and a [[lightning rail]] line. With all these trade
arteries, Sigilstar has emerged as a serious competitor to the commercial centers of [[Aruldusk]] and [[Flamekeep]].

Part of Sigilstar’s appeal stems from its cosmopolitan atmosphere. It is home to the largest population of [[wizard]]s in the entire nation, and its people hold
a broader view of religion’s place in society. Sigilstar takes its name from a fixed star in the heavens around which all other stars seem to wheel—much
the same way the residents of the city see themselves.
While commanding a brigade
of House [[Deneith]] [[blademarks|Blademarks Guild]] on a [[Cyran|Cyre]] contract
in 994 YK, Sigor led a small reconnaissance team
across the [[Cyre River]] into [[Karrnath]] shortly before
dawn on the Day of [[Mourning]]—and thus was spared
the fate of the rest of the brigade, which was instantly
obliterated.

Sigor has become obsessed with finding out what
caused the Day of Mourning. An influential heir to
House [[Deneith]], Sigor has the resources to indulge
this obsession, and he frequently leads forays into
the [[Mournland]] to search for clues. He is increasingly involved with House [[Thuranni]], hoping that the shadowmarked house might know something about
the Day of Mourning that it hasn’t revealed.
Commander Silaena Cazal runs
the [[Warden Towers]] garrison in [[Middle Menthis]]. Over
a century of service, she has woven a net of graft and extortion across [[Menthis Plateau]]; she looks after
those who pay their dues. Her mother was driven
from House [[Phiarlan]] when she developed an [[aberrant dragonmark]]. Because of that treatment, Silaena harbors deep resentment for the [[dragonmarked house]]s
and will occasionally take actions to inconvenience
them. [[Thora Tavin]] of House [[Tarkanan]] is working to
strengthen her relationship with Commander Cazal. 
[[Aerenal]] is known for its
exotic woods, including [[bronzewood]], [[darkwood]],
and [[livewood]]. The [[elves|elf]] who can turn leaf and tree
into arms and armor are known as woodshapers, and
Tanar Mendyrian is one of the finest in [[Khorvaire]]. While he is
best known for his darkwood bows, Tanar also produces leafweave, darkleaf, and bronzewood armor,
and he takes commissions to shape melee weapons
from the exotic woods. While most of his goods
are of masterwork quality, Tanar can also magically enhance his weapons and armor. However, he takes great pride in these
treasures and is careful about his clientele; anyone
that wants an enchanted item must win Tanar's
respect (elves have an advantage on the attempt) before the woodshaper accepts
the commission. 
Before the ninth century, [[lycanthropy|lycanthrope]] was largely just a fearsome
legend. Lycanthropes were known in the wilds of [[Khorvaire]],
but few people had ever seen one; most commoners thought
lycanthropes and [[shifter]]s were the same thing. Early in the
ninth century, something changed—the curse of lycanthropy
became more virulent, and its victims were driven to ever more
extreme behavior. Werewolf attacks and wererat infestations
became an increasing problem in western [[Aundair]], and by
830 YK, some feared that an apocalyptic threat was brewing in
the [[Towering Wood]]—that any day a horde of lycanthropes could
sweep across the land and destroy all civilization.

In 832 YK, [[Keeper of the Flame]] Jolan Sol declared that
lycanthropy corrupted the soul itself and must be completely
eliminated. An army of templars was dispatched to Aundair,
and servants of the [[Flame|Silver Flame]] across Khorvaire were ordered to be
vigilant and root out lycanthropes in hiding. And so they did.

The Silver Crusade (also known as the "Lycanthropic Purge") lasted for nearly fifty years. The first two
decades were a brutal, bloody campaign. The lycanthropes
were massing in great numbers on the edge of the Towering
Wood (now part of the [[Eldeen Reaches]]), driven by some
unknown evil; most sages believe it was an [[overlord]] on the
verge of breaking its bonds. The templars were outmatched.
The lycanthropes were cunning and could quickly replenish
their numbers, and they intentionally stirred up conflict between
templars and [[shifter]]s. But after decades of bitter conflict, the
tide slowly turned in favor of the templars. And somehow, the
power of the curse was broken. Lycanthropy continued, but its
effects weren't as strong, its victims not so driven to darkness.

While the true threat was dealt with, the peasants of Aundair
had suffered through decades of terror and sought a greater
revenge. The next thirty years saw an ongoing inquisition as
zealous converts to the faith—later classified as an extremist
sect, the [[Pure Flame]]—sought to hunt down every remaining
lycanthrope. In the process, many innocents—including a great
many shifters—were tortured and slain. So the Silver Crusade
began as a selfless act that may well have saved [[Galifar]], but
ended up as an outlet for paranoia and hatred.
Silver dragons are reputed to be friendliest and most social of the [[dragon]]s.

A silver dragon shimmers as if sculpted from pure metal, its face given a noble cast by its high eyes and sweeping beard-like chin spikes. A spiny frill rises high over its head, tracing down its neck to the tip of its tail. 

A silver wyrmling's scales are blue-gray with silver highlights. As the dragon approaches adulthood, its color gradually brightens until its individual scales are barely visible. As a silver dragon grows older, its pupils fade until its eyes resemble orbs of mercury.

!! Magic and Breath Weapon

The silver dragon can exhale an icy blast, or a cloud of paralyzing gas. As innate spellcasters, adult silver dragons can cast spells such as [[creation]], [[fog cloud]], [[ice storm]], [[empowerment]], and [[private sanctum]].

{{DragonAgeCategories}}
* The Silver Flame is force of light that holds [[fiend]]s at bay. Those who seek to defend the innocent from evil can draw on the power of the Flame.
* Every mortal soul can find the light. Inspire and guide others to virtuous behavior; force is a last resort.
* Listen to the Voice of the Flame; beware the deceiving whispers of the [[Shadow in the Flame|Bel Shalor]].

Every [[Thrane]] child knows the story of [[Tira Miron]].
Centuries ago, one of the ancient and powerful [[demon]]s
chained within the world broke free from its bonds, unleashing terrible suffering on the people of Thrane. The nation would have been destroyed if not for Tira Miron. This [[paladin]] was called by the Silver Flame and battled the mighty [[fiend]]. When it became clear that the [[overlord]] couldn't be destroyed, Tira gave her life, combining
her spirit with the light of the Silver Flame to bind the
demon once more. Now Tira serves as the Voice of the
Flame, helping others find the light. Anyone who seeks
to protect the innocent and battle evil can draw on the
power of the Silver Flame to aid them, but they must
beware of the [[Shadow in the Flame|Bel Shalor]], the demon that still
lingers and yearns to trick good people into evil.

A pillar of argent fire marks the point of Tira's sacrifice, the center of the modern church. This pillar, located in [[Flamekeep]], is a manifestation of the Silver Flame,
not the source of its power. 

The church's templars stand ready to protect the innocent from supernatural threats, battling [[undead]], [[fiend]]s, and [[aberration]]s. Friars and ministers fight evil by doing good, performing acts of compassion and charity
across [[Khorvaire]]. In contrast to the [[Sovereign Host]], the
church maintains a defined structure and creed. Archbishops monitor regions; cardinals lead the church; and
the ultimate authority is the [[Keeper of the Flame]], who
maintains the font in Flamekeep and communes with
Tira Miron.

The [[Last War]] had a serious impact on the church.
Leaders still respected the Keeper's authority over spiritual matters, but the war wasn't about good or evil. Templars of all nations still joined together to fight demons,
but if no supernatural threat was present, they fought
for their own nations. This division allowed cracks to
form in the foundation. In [[Breland]], some priests fell
prey to greed or forged ties to criminal organizations.
In [[Aundair]], a zealous faction known as the [[Pure Flame]]
advocates using violence rather than compassion as
the primary tool for rooting out evil. And in [[Thrane]], the
church has become the ruling body. While still driven
by Tira's principles of redemption and sacrifice, the
intrusion of politics means that some come to the faith
seeking power rather than purely to do good.

In creating a follower of the Silver Flame, decide
whether you are bound to the church or simply inspired
by its principles. As a [[paladin]], are you part of the templar order, or were you a farmer called to action by the
Voice of the Silver Flame? 

The Silver Flame is centered in [[Thrane]], but it has a
strong presence in [[Breland]] and [[Aundair]], and followers
across [[Khorvaire]]. Members of the [[Pure Flame]] sect treat
some species—notably [[shifter]]s and [[changeling]]s—with
suspicion, but the faith holds that people of all races
should stand together. 

!! Symbol

The faith's symbol is a stylized flame inlaid with silver.
A silver arrowhead etched with the symbol serves as a
common token, worn as a necklace. 

!! Rites

The Silver Flame has no need of prayers or offerings;
instead, services focus on the parishioners, encouraging
virtuous behavior. Church hierarchy is strictly observed,
and only ordained priests can perform services.

Archery is a devotional practice of the Silver Flame,
used both as a means of meditation and a martial art.
Communities devoted to the Flame engage in archery
training, and villages have militias of peasant archers. 

!! Temples

Fortresses of the Silver Flame are designed to serve as
templar garrisons and to provide sanctuary against supernatural threats. Churches feature enormous arches and open spaces. The sanctuary of a Flamic church has
a mosaic floor with a flame burning at its center.

The seat of the religion is the [[Grand Cathedral]] in [[Flamekeep]]. Built around the site of Tira's sacrifice, this fortified temple is the size of a small city. 

!! Foundations of the Faith

The Silver Flame is a force created during the [[Age of Demons]]
to bind the [[overlord]]s. It has a concrete purpose: it is the cage
that keeps apocalyptic evil at bay. The [[Sovereigns|Sovereign Host]] and [[Six|Dark Six]] are deities, believed to influence every facet of daily life. The Silver
Flame is different. It's not seen as an anthropomorphic entity;
rather, followers recognize it as a pure force of celestial energy.
It doesn't influence the world on its own, and can only empower
champions who will use that gift to protect the innocent. The
Flame itself doesn't speak to people; instead, it is the [[Voice of the Flame|Tira Miron]] that guides the faithful. Ultimately, the Silver Flame is a resource; if you seek to protect the innocent from supernatural evil, you may be able to draw on the power of the Flame to aid you in your fight.

The Church of the Silver Flame is a practical, pragmatic faith founded on active public service. It takes the approach that the world will manage itself—that there will be a harvest or a storm whether or not you acknowledge [[Arawai]] or the [[Devourer]]—and that the most important thing is to protect people from the darkness that could destroy
them. The church doesn't inherently challenge the worship of
the Sovereigns, and the two faiths have coexisted peacefully
throughout history. [[Paladin|paladin]]s of [[Dol Arrah]] often coordinate
with templars of the Silver Flame to deal with threats, and
Vassals of the [[Sovereign Host]] are usually happy to accept
the assistance of templars when danger strikes.

The basic doctrine of the Silver Flame doesn't promise
punishment or paradise after death. But its faithful commonly
believe that the souls of those who live virtuous lives pass
through [[Dolurrh]] unharmed, merging with the Silver Flame
itself. By strengthening the Flame, these souls continue to
protect the innocent of generations to come. Merging with the
Flame is generally depicted as a transcendent union with those
who have gone before, a state beyond mortal understanding—seen both as a reward and a duty.

See also [[Silver Flame Heresy and Corruption]].

!! The Hierarchy of Evil

The Silver Flame empowers mortals to fight against evil. But
not all evils are equal, and different threats call for different
approaches. The Church of the Silver Flame defines the
hierarchy of evil as follows:

* ''Entities of alien evil.'' These are the children of [[Khyber]], encompassing all manner of [[fiend]]s and [[aberration]]s. These beings are fundamentally unnatural and innately malevolent; even their presence is seen as harmful to the world.
* ''Entities of unnatural evil.'' These are beings once native to [[Eberron]] that have been corrupted by alien forces. [[Undead|undead]] and [[lycanthrope]]s are the most obvious examples of this category—innocent people transformed into monsters. Like the followers of the [[Undying Court]], the Church of the Silver Flame maintains that undead are inherently unnatural and harm the living simply through their existence.
* ''Entities of innate evil.'' This is the most contentious category on the list, and it is the idea of monsters—that there are creatures native to Eberron who are evil by nature. In the past, the church has placed [[medusa]]s, [[harpies|harpy]], [[troll]]s, and similar creatures into this category, asserting that through no fault of their own, these creatures are vessels for supernatural evil and pose a threat to the innocent.
* ''Those who choose evil.'' This encompasses all [[humanoid]]s who are born innocent but choose to follow an evil path. Because such beings aren't evil by nature, the goal of the faithful should always be to lead them back to the light.
* ''The evil within.'' Every follower of the Flame must recognize their own capacity for evil action; only through awareness can they guard against it. The [[Shadow in the Flame|Bel Shalor]] is always whispering, and it is arrogant and foolish to ignore that threat.

Entities of alien and unnatural evil must be fought with steel
and spell. This is the purpose of the Silver Flame: to protect
the innocent against these threats. When such forces arise,
followers of the Silver Flame are expected to set aside any
differences until the evil is defeated; this was seen in the
[[Last War]], where templars might serve different nations but
would unite to deal with a supernatural threat. If it's possible
to eradicate a threat without violence—such as curing a [[lycanthrope]] rather than killing it—that's acceptable, even laudable. But protection of the innocent should always be the
primary concern, which is why the [[Silver Crusade]] focused on eradication; the templars rarely had the resources to capture and cure lycanthropes.

With those who choose evil and those who fall prey to the evil
within, the Church of the Silver Flame urges compassion over
brutality. Templars take arms against unnatural evil, but it is
the purpose of friars and ministers to guide mortals to the light.
Innocents must always be protected from those who would
harm them, but anyone who chooses evil could be convinced to
choose good, and true followers of the Flame are encouraged to
act with empathy and compassion for all natural creatures.

In the past, the church assumed that [[troll]]s, [[harpies|harpy]], [[worg]]s,
and similar creatures were innately evil, so templars eliminated
these threats wherever they were encountered. With the rise
of [[Droaam]] and House [[Tharashk]]'s introduction of monstrous
mercenaries, [[Khorvaire]] is learning that these creatures aren't
any more inherently evil than [[human]]s or [[dwarves|dwarf]]. Ultimately,
it is up to the [[Keeper of the Flame]] to make rulings on these
matters—much like a past Keeper's ruling that the [[deathless]] of
[[Aerenal]] are not creatures of unnatural evil. In 992 YK, Keeper
Lavira Tagor ruled that the church needed to reevaluate the
classification of innate evil, and that templars should judge the
actions of creatures in question and seek guidance from the
[[Voice of the Flame|Tira Miron]]. Since then, the [[Council of Cardinals]] has
been debating the status of [[Droaam]], but Keeper Daran has
yet to make a final ruling on the matter.

The [[Ghaash'kala]], [[serpent cults]], and other paths have their
own traditions, each with the same core principle—the Silver Flame is a tool that allows the virtuous to fight [[fiend]]s and unnatural horrors. Though those paths may share similar beliefs, this particular hierarchy of evil is specifically defined
by the Keeper and the doctrine of the Church of [[Thrane]].

!! Paths of the Faith

The Silver Flame is older than humanity itself. The Church
of the Silver Flame is the dominant manifestation of this faith
on [[Khorvaire]], but you can be a follower of the Silver Flame
without having ties to the church. 

* the [[Ghaash'kala]]
* the [[Pure Flame]]
* [[serpent cults]]
!! Heresy

The Church of the [[Silver Flame]] represents just one path of the
faith. It was built on the teachings of [[Tira Miron]], but less than
a year elapsed between her vision—leading her to embrace the
Flame and rally an army—and her final sacrifice to defeat [[Bel Shalor]]. Thus, it was't her own words that established most of the
church's traditions and doctrines, but the words of those who
fought alongside her during that year. These were refined over
time by priests who'd never met her—despite the passage of time,
it's believed these priests were guided by the Voice in the Flame.

The [[Keeper of the Flame]] is tied specifically to the official
Church of the Silver Flame. The Keeper's power is based in
[[Flamekeep]], and the fountain of fire they keep marks the spot
where [[Tira Miron]] gave her life to restore the bonds of the
[[overlord]] [[Bel Shalor]]. Some people mistakenly assume that this
fountain of fire //is// the Silver Flame. While it's a focal point where
the Silver Flame's power bleeds into the world and a conduit
for those who seek the guidance of the Voice of the Flame, the
Silver Flame itself is far more than a spark in one cathedral—its power stretches across [[Eberron]], binding [[overlord]]s on every
continent. The Church of the Silver Flame celebrates the
[[Keeper of the Flame]] as being both the vessel of the Voice and
the channel for the power of the Flame. However, the faithful of
other cultures—such as the [[Ghaash'kala]] of the [[Demon Wastes]]—see the Keeper as a powerful priest and nothing more.

The Church of the Silver Flame is largely willing to overlook
the divergent beliefs of groups like the Ghaash'kala. In the
church's eyes, these northern [[orc]]s are a curiosity and their
unusual beliefs don't threaten the faithful of the [[Five Nations]].
Likewise, the [[Council of Cardinals]] has taken no action to suppress the extreme beliefs of the [[Pure Flame]], even going so far as appointing the puritan Archbishop [[Solgar Dariznu]] as governor of [[Thaliost]]. In part, this is because the Pure Flame came into
its own over the course of the [[Last War]], and the cardinals of
[[Thrane]] had little ability to enforce their will over the faithful
of [[Aundair]]. Dariznu's appointment was an effort to ensure that
the followers of the Pure Flame would accept the authority of
[[Flamekeep]]. Despite the church thus far taking no action against
the Pure Flame, [[Keeper Daran|Keeper of the Flame]] is deeply troubled by this sect
and is considering the best way to address the problem.

There have been times when heretical beliefs divided the
church, the most infamous known as the Time of Two Keepers.
In 497 YK, a peasant woman calling herself [[Melysse Miron]]
challenged Keeper Kyra Danth for control of [[Flamekeep]] and the
Church of the [[Silver Flame]]. Melysse claimed that [[Tira Miron]]
had revealed she was Tira's direct descendant and the rightful
Keeper. She challenged many church doctrines and claimed
it had strayed from its path. And like Keeper Danth, Melysse
was shockingly able to wield the power of the fountain of fire in
Flamekeep, performing miracles no lesser priest could match.
This triggered a deep schism that lasted for years, until Melysse
was finally revealed by a [[secret organization|Miron's Tears]] to be the chosen hand of the Shadow in the Flame—it was not the Silver Flame, but rather the [[overlord]] [[Bel Shalor]], that strengthened her in Flamekeep. Because of the fear that her death would allow Bel Shalor to choose a new Anti-Keeper, Melysse wasn't killed; instead, she was petrified and placed in [[Dreadhold]], where she remains to this day.

More recently, the church was divided in 914 YK when Keeper
Serrain was invested with temporal authority over the nation of
[[Thrane]]. While many celebrated the idea of a kingdom founded
on the noble principles of the church, there are many—even
some in Thrane itself—who believe that investing cardinals and
Keeper with political power distracts the church from its proper
mission and serves as an invitation to corruption. This served as
justification for the foreign templars who fought against Thrane
in the [[Last War]]; they argued that they continued to respect the
spiritual authority of the Keeper, but that the church shouldn't
rule a reunited [[Galifar]]. The priests of [[Stormreach]] went so far as
to condemn the theocracy and Keeper Serrain. In the wake of
this division, Stormreach was formally severed from Flamekeep;
it receives no support and Flamekeep doesn't acknowledge its priests within the church hierarchy. As such, Stormreach has become a haven for those who believe in the principles of the Flame but question its doctrine.

It's up to the DM to decide if the rifts over the theocracy and
the [[Pure Flame]] could widen or whether the faithful will remain
united. There is always room for new revelations or beliefs to
create a new path for the faithful to follow.

!! Corruption

The Church of the [[Silver Flame]] has lofty aspirations, and
it's easy to find fault when it fails to live up to them. While
there's always potential for corruption in the church, it's often
exaggerated. Stories about corrupt priests can be more dramatic
than virtuous ministers who are only there to help, but the
majority of priests do strive to live its principles—resisting the
evil within, treating others with compassion and empathy, and
working together for the common good. The point isn't that the
church is a fundamentally corrupt institution, but rather that no
one is perfect—in their imperfections, people can be led astray by
the [[Shadow in the Flame|Bel Shalor]] or simply succumb to pride or greed.

In dealing with corrupt followers of the faith, consider what
kind of “corruption” it is and where it comes from. There's
a considerable difference between the [[Brelish|Breland]] priest who
demands gold for a blessing and the [[Thrane]] inquisitor who
lets their zeal for fighting evil drive them to cruelty.

''Zealots'' represent the most common form of corruption,
especially among [[paladin]]s or [[cleric]]s. A zealot is devoted to
the principles of the faith, but loses sight of the importance of
compassion—giving in to the evil within in their quest to fight evil
in the world. This includes those who engage in unnecessary
cruelty, especially when dealing with those who choose evil.
Zealots have no interest in gold or power, and risk their lives to
defend others; they are simply able to justify ruthless and evil
actions in the name of the greater good. This is the primary sin
of the [[Pure Flame]], but zealots can be found anywhere.

''Opportunists'' seek to use their religious authority for
personal gain. This typically involves charging people for
services that should be granted freely, or gaining gold or
influence by using church resources for unrelated purposes. In
[[Sharn]], Archierophant [[Ythana Morr]] is often accused of using
templars as mercenaries and serving as a strongarm for local
merchants. Usually this reflects a fundamental lack of faith,
and as a result, opportunists rarely wield [[divine magic]]. If an
opportunist can channel the power of the Flame, it suggests that
somehow, they are able to justify these conflicting concepts—that they truly believe their actions are righteous and serve the greater good, even if those actions incidentally line the pockets of the priest. Such a character might believe that they
need greater wealth or influence to help others, or that they are
fighting fire with fire—teaching the wicked the error of their
ways through political or economic means. Before the [[Last War]],
opportunists were usually found in [[Breland]], but the rise of the
theocracy has yielded more opportunists in [[Thrane]] as well.

''The Tarnished'' are the worst form of corruption: priests
or templars who knowingly serve the [[Lords of Dust]] or the
[[Shadow in the Flame|Bel Shalor]] while posing as servants of the light. The
Tarnished may mimic a devout priest—as Melysse Miron did
in the Time of Two Keepers—but they are drawing this power
from the Shadow in the Flame. This still requires deep faith,
but the Tarnished are devoted to quite different principles.
The most widespread form of this corruption is the cult of the
[[Whispering Flame]]. But the Tarnished can also be loners who
embrace the evil within alone. In dealing with a Tarnished
villain, consider what has caused them to embrace darkness
over light. Have the [[Lords of Dust]] promised them something priceless? Do they believe mortals are fundamentally flawed or that the cruelty of [[Bel Shalor]] is the rightful state of humanity? Do they somehow see themselves as the heroes of the story?
The [[Silver Flame]] empowers all those who would fight to protect the innocent from supernatural evil. The Silver Forge [[monastic tradition|monk]] draws on the flame to transform the devotee into a weapon, striking with both fists and bolts of radiant flame. This unarmed fighting style was developed by the [[shulassakar]], and is largely unknown outside of their secluded enclaves.
Silver Lake is a freshwater lake that borders the [[Eldeen Reaches]] to the northwest and [[Breland]] to the south and east, as well as [[Droaam]] in the west. Silver Lake and [[Lake Galifar]] are connected by way of a [[river|Silver River]] that runs near the towns of [[Erlaskar]] and [[Xandrar]].
The Silver River connects [[Lake Galifar]] and [[Silver Lake]]. It forms part of the border between the [[Eldeen Reaches]] and [[Breland]].
The Silver Wood is a small forest in the foothills of the [[Starpeaks]], spanning across the border of [[Aundair]] and [[Thrane]] near [[Thaliost]].
This is a 6-foot-long birch wood oar with leaves and branches carved into its length. The grooves of the carvings are filled with silver, which glows softly (20-foot dim light) when it is outdoors at night. You may activate the oar to have it row a boat unassisted, obeying your mental commands. You may instruct it to row to a destination familiar to you, allowing you to rest while it performs its task. While rowing, it will avoid contact with objects on the boat, but can be grabbed and stopped by anyone at any time. The oar can move a total weight of 2,000 pounds at a speed of 3 miles per hour. It floats back to your hand if the weight of the craft, crew, and carried goods exceeds that weight.
''District Type:'' Fine shops<br/>
''Buildings:'' Upscale lodging (15), upscale food (25),
exotic trades (40), upscale trades (120), upscale
residences (80)<br/>
''First Impression: ''The streets of the district are
paved with silver stone, and gleam in the light of
the [[everbright lantern]]s. Beautiful music wafts out of an
expensive restaurant, and a young aristocrat examines a [[glamerweave]] cloak with a critical eye.<br/>
''Social Class: ''Upper class<br/>
''Neighbors:'' [[Pinnacle]] (east); [[Twelve Pillars]] (south); [[Crystal Bridge]] (bridge, north); [[Tavick's Market]] (below)

Silvergate provides an enormous range of goods
aimed at the wealthiest citizens of [[Sharn]]. Expensive
clothing, fine jewelry, exotic artwork, overpriced
food, and pretentious wines are all part of the
Silvergate experience. However, the district does
contain a few truly luxurious inns, and a magic
emporium—[[Crystals of Denion]]—that buys and sells
magic items of considerable value. Items purchased in Silvergate are always of exceptional quality, but generally have a 5% markup on price.

There are four different dining clubs in Silvergate, but they only accept members from wealthy families or [[dragonmarked house]]s. 
In the first days of the City, the Silvermist Theatre was the finest theatre in Sharn. But as the towers rose, the Silvermist was forgotten. The curtains are faded and moth-eaten, and the silver gilt is peeling from its walls. Still, a handful of entertainers have managed to keep the old theater afloat, staging daring performances you won't see anywhere else in Sharn. 

Officially, the Silvermist is a dream
parlor secretly owned by the [[Boromar Clan]]—a place
where [[illusion]]s and glamers are used for the entertainment of guests. The regular entertainers include
Jix, a [[changeling]]
who uses her natural powers to perform unusual
one-woman ballets and operas, and Salleon, a [[gnome]] illusionist who fascinates audiences with bizarre and compelling hypnotic patterns. In addition, the Silvermist is a [[dreamlily]]
den—a place where people can buy and use dreamlily
without fear of the law. 
//This spell requires 12 hours to cast, as well as snow or ice in quantities sufficient to made a life-size copy of the duplicated creature; some hair, fingernail clippings, or other piece of that creature's body placed inside the snow or ice; and powdered ruby worth 150c, sprinkled over the duplicate and consumed by the spell.//

You shape an illusory duplicate of one beast or [[humanoid]] that is within reach for the entire 12-hour casting time of the spell. The duplicate is a creature, partially real and formed from ice or snow, and it can take actions and otherwise be affected as a normal creature. It appears to be the same as the original, but only about half as physically resilient, and is formed without any equipment. Otherwise, the illusion uses all the statistics of the creature it duplicates, except that it is a [[construct]].

The simulacrum is friendly to you and creatures you designate. It obeys your spoken commands, moving and acting in accordance with your wishes and acting on your turn in combat. The simulacrum lacks the ability to learn or become more powerful, nor can it regain energy lost from casting spells.

If the simulacrum is damaged, you can repair it in an alchemical laboratory, using rare herbs and minerals. The simulacrum lasts until it is incapacitated, at which point it reverts to snow and melts instantly.

The effects of this spell last until it is dispelled. If you cast this spell again, any currently active duplicates you created with this spell are instantly destroyed.
This strange aquatic creature is an enormous, two-headed serpent. A fierce
humanlike face with terrible, staring eyes glares from where the
serpent heads join its body. It is
about 20 feet long and as
thick and heavy as a giant
constrictor snake.

Sisiutl are very perceptive
and intelligent, despite their
bestial appearance. Those
whom they favor might earn the
creatures’ protection, but those who
trespass willfully incur their wrath.
''Leader:'' [[Lysse Lyrriman d'Sivis]] <br/>
''Headquarters:'' The [[Labyrinth|Labyrinth (enclave)]] ([[Korranberg]], [[Zilargo]])<br/>
''Dragonmark:'' [[Mark of Scribing]]

//Communication is the foundation of civilization.//

<div align="right">—Baron Lysse Lyrriman d'Sivis </div>

Bearing the emblem of the [[cockatrice]], the [[gnome]]s of
House Sivis facilitate communication. This is seen most
literally in [[speaking stone]]s, [[magic item]]s allowing a Sivis
heir to send a short message to another speaking stone.
House Sivis's message stations employ these items
as the backbone of their long-distance communication
network. The house also trains and licenses scribes, notaries, interpreters, cartographers, barristers, heralds,
bookbinders, and others who work with words. House
Sivis has an especially close relationship with House
[[Kundarak]], as Kundarak letters of credit must be notarized with a Sivis arcane mark.

House Sivis takes great pains to maintain the trust
of its clients and holds a position of absolute neutrality
in all disputes, whether between houses or nations.
Sivis gnomes are typically friendly, curious, and engaging, but that kindly exterior might conceal a scheming
mind. Gnomes have a natural love of intrigue, and the
different families within the house often engage in subtle schemes and feuds. Doyenne [[Lysse Lyrriman|Lysse Lyrriman d'Sivis]], the
leader of the house, takes pains to ensure that these
intrigues never threaten the house or its reputation. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
In addition to the local message
station, House [[Sivis]] maintains an enclave in [[Clifftop]]
devoted to the Speaker's Guild. This enclave specializes in two things: the translation of texts and other
materials recovered from [[Xen'drik]], and legal services
for adventurers in trouble. [[Josilian Kan d'Tarlian]] works out of this office,
and is widely considered to be one of the best barristers in [[Sharn]]—though at a base price of 5c/day (and possibly more, depending on the nature of the
case), he is certainly one of the most expensive.
The [[Sivis]] Enclave, tightly
enclosed in Sivis Tower, shares space with the
dwarves of House [[Kundarak]]. It has equally grand
architecture and ornamentation, though motifs of
writing and calligraphic engraving run through the
decoration of the Sivis locations. [[Solirion Torralyn d'Sivis]] is the head of the [[enclave]], and supervises the Speakers' Guild operations in [[Sharn]].
A [[Droaam]] tradition brought to [[Sharn]] by immigrants,
six stones is a game for seven competitors, who each
pay a base stake. The seven are then sealed in a large
chamber with a [[cockatrice]]. The match ends when six of the players have been turned to stone, at which point
the survivor is awarded all the stakes (except for a share
set aside for the organizers). A [[medusa]] handler monitors the competition to ensure that rules are followed.
Contestants carry no arms or armor, and no magic or
supernatural abilities may be used. Additionally, no one
is allowed to attack the cockatrice. The challenge lies
in outlasting the other contestants and luring them or
pushing them into the path of the cockatrice. The battleground might be barren or littered with rubble and
cover; it might be lit, or it could be be pitch black.

Six stones matches are staged by the criminal organization [[Daask]]. The sport is illegal, but the games go on
because the matches are confined to [[Lower Dura]] and
the [[Cogs]] and well hidden from the eyes of [[the Watch|Sharn Watch]].
A match usually occurs only once every few months.
Sometimes participants voluntarily enter the competition, but most are debtors who have been offered a
chance to pay off their loans by winning the match.
Daask takes bets on the outcome, and usually earns a
tidy sum as its share of the proceeds. 
Twenty-five of the twenty-seven noble families of
[[Breland]] have strong ties and interests in [[Sharn]],
along with all of the [[dragonmarked house]]s. But the
majority of the wealth of the city lies in the hands
of the gentry: merchants and landowners who have
built their fortunes through centuries of hard work
and clever investment. There are hundreds of powerful families in the City of Towers, but a few stand
out from the rest. These are known as the Sixty.

Sharn was built with the gold of the [[ir'Tain family]], and today the ir'Tains are the most powerful and influential family in the city. Once each month,
they hold a grand party for the aristocracy—The [[Tain Gala]]. When the ir'Tains were building their new manor on [[Skyway]], Lady Shala told the architects
to make the banquet hall large enough to seat sixty
families and their servants. The Sixty of [[Sharn]] are
those with standing invitations to the Tain Gala—the
clear sign of success. It should be noted that other
people may attend the gala, as it is uncommon for
all sixty families to bring all of their family members and servants, and the hall was designed to hold entertainers as well as guests. But a single invitation,
while prestigious, is entirely different from being
invited to join the Sixty.

While many members of the [[Aurum]] are also members of the Sixty, the two organizations are quite different. The Aurum is a highly organized conspiracy that carries out carefully orchestrated plans to provide its members with greater power and wealth. The Sixty is more of a social club—a visible manifestation of the most powerful families in Sharn.
Members of the Sixty discuss politics and business
at the [[Tain Gala]]s, and these discussions can have an
impact on adventurers, [[Sharn]], or even [[Breland]]. But
the Sixty almost never act as a concerted unit, and
many members are actually bitter rivals beyond the
walls of the Tain Manor.

All of the noble families and the [[dragonmarked families|dragonmarked house]] are members of the Sixty; this means that
any [[Sharn]] resident with the //ir'// or //d'// prefix on their
last name could be found at the [[Tain Gala]]. A standing invitation can always be
revoked to make room for a more deserving candidate; one of the greatest fears of Councilor [[Sorik Sensos]] is that his family will be displaced to make
room for Councilor [[Javan Tomollan]]. Just last year Celyria expelled the ir'Moros family and gave their place
to [[Saidan Boromar]].

!! Noble Families in Sharn

* Clarn: [[Haftak|Haftak's Books and Binding]] publishes the [[Sharn Inquisitive]]
* Lantar: Noble family of [[Aundair]]. Have secretly served the [[Lords of Dust]] for generations; work with the [[rakshasa]]s of Sharn.
* Laisha: Anador ir'Laisha is the [[Thrane]] ambassador in Sharn, very religious
* Tonn: See [[Bestan ir'Tonn]], councilor of [[Upper Tavick's Landing]] and part of the [[Boromar|Boromar Clan]] Block of councilors. Strong candidate for Xander's family beef.
* Zarna:  Eld ir'Zarna commands the King's Swords in Sharn
* Marasha: Councilor [[Evix ir'Marasha]] 
* Tain: [[ir'Tain family]]
* Demell: Cathan ir'Demell is [[Lord Mayor of Sharn]].
* Talan: [[Iyan ir'Talan]], lord commander of [[Sharn Watch]]. "Good guys" trying to clean up corruption
* Kavay: [[Wayfinder Foundation (Sharn office)]] liason
* Dain: Jairan ir'Dain is the [[Cyre]] ambassador to Sharn
* Moran: Ancient [[dwarf]] family of Sharn with a proud tradition of military service. [[Kellas ir'Moran]] is a known as a cheerful old retired general, but holds a deep grudge against [[Valenar]], extending to all elves and even Cyrans.
* Tarrn: Syra ir'Tarrn is the [[Karrnath]] ambassador to Sharn
* Thadian: See [[Maza Thadian]]
* Morgrave: Founders of [[Morgrave University]]
Skairn is a small, rugged town in the mainland [[Lhazaar Principalities]].
Warforged skirmishers were built to scout the edges of battle and
outmaneuver their enemies. They are lean and designed for speed. Quicker and stealthier than their [[juggernaut]] counterparts, they are better suited for subtlety than brute force.
A skulk is a humanoid with soft, leathery light-gray skin, and deep blue pupil-less eyes. They can change the color of their skin to match their surroundings, camouflaging themselves in any environment, even complex or regular patterns like bricks and mortar. They can be found scattered across [[Sarlona]], but can be found in significant numbers in the province of [[Ohr Kaluun]].

Legend says that at the conclusion of the [[Sundering]], the
people of [[Nulakesh]], [[Corvagura]], and [[Pyrine]] joined forces
to battle [[Ohr Kaluun]]. This dark kingdom was already
weakened by civil war, and the forces of the [[Inspired]]
took down the city-states of Ohr Kaluun one by one.
In what seemed to be an act of charity, a Shadow Lord
named Kul Uulan opened his war maze to the refugees of
fallen cities, suggesting that they might still find victory
through unity. The truth was far more macabre. Uulan
sacrificed thousands of refugees in a ghastly ritual calling
for the blessing and protection of the [[Dark Six]]. When the
soldiers of the Riedran Alliance came to Uulan's maze,
they found no trace of his people; even psionic [[scrying]]
proved useless. Soldiers were killed, and word spread
of evil spirits haunting the broken mazes. In time, the
truth came to light. Uulan's people hadn't vanished:
they'd been transformed. Through the blood sacrifice
of thousands of innocents, Uulan had gained a terrible
power for his own people. They had become the skulks.

The skulks of [[Riedra]] believe that they are the
chosen people of the [[Dark Six]], blessed and shielded by
the deities others fear. Although the skulks revere all
of the Six, they typically select one as a personal patron
and seek to emulate that force in all ways. The [[Mockery]]
inspires the most followers, and the skulks who idolize
the flayed god are terrifying indeed. Those skulks who
follow the [[Shadow]] often pursue arcane knowledge; the
most dangerous members of the [[Heirs of Ohr Kaluun]] are often skulk [[wizard]]s. Nonetheless, the skulks have never posed a serious threat to the [[Inspired]]. They are paranoid creatures who revere madness, treachery, and destruction. They have trouble forming large communities, as rivalries and feuds quickly arise, and they tend not to abide the company of other humanoids, even their [[tiefling]] brethren. The skulks love to kill [[Riedrans]]—but when there are no Riedrans about, they soon turn on each other.

Although most skulks are content with their savage
life amid the ruins, a few seek something more. Some of
these skulks end up working with the [[Dream Merchants]],
while others simply wander. A few seek to atone for the
dark deeds of their ancestors; it's said that a handful
of skulk guides have been seen on the [[Summit Road]] in
recent years. 
This small anvil is made from cold iron and alchemical silver, with a ring of small [[dragonshard]]s around one larger shard. A sky forge enhances the magical fabrication abilities of a person with the [[Mark of Making]], enabling them to transmute much higher quantities of raw materials into products.
Common jousting is popular enough throughout [[Breland]], but in [[Sharn]], the sport has taken to the air. In a
formal skyblade match, the goal is to knock an opposing rider from the saddle—attacks against mounts are
forbidden, along with the use of magic or other supernatural abilities. Formal matches take place in one of
Sharn's two aerial arenas, in [[Cornerstone]] and [[Hareth's Folly]]. Skyblade jousters typically ride [[hippogriff]]s and
carry blunted lances that deal nonlethal damage.

Informal matches, which don't always use the same
rules, occur from time to time in [[Lower|Lower Dura]] and [[Middle Dura]], [[Tavick's Landing]], and [[Menthis Plateau]]. An informal match might be played out across an entire district,
with competitors weaving between towers and around
bridges. The rules for an informal match are set before
the start, establishing (among other things) whether
magic can be used and mounts can be targeted. 
Skycoaches are flying vehicles resembling small boats that range from rowboat-sized skycars to longship-scale tour coaches. They are often found in [[Sharn]].
The Skyraker Forest is a forest in western [[Breland]], just north of the town of [[Ringbriar]].
''District Type:'' Park district<br/>
''Buildings:'' Parks (3), temples ([[Arawai]] and [[Balinor]]),
druidic site ([[Gatekeepers]]), upscale taverns (25),
exotic trades (20), upscale trades (40), upscale services
(70), upscale residences (120)<br/>
''First Impression:'' A park seems impossible in this
city of towers, but grass and trees actually grow from
the tops of a few towers in this district. A colossal
iron statue looks over the entire area.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Mithral Tower]] (northwest); [[Highest Towers]] (southwest); [[Korranath]] (north); [[Den'iyas]] (bridge, south); [[Sword Point]] (below)

Skysedge Park is Sharn's only park district, though
[[Shae Lias]] (in [[Upper Northedge]]) is similar in some
ways. Here, three large parks occupy the top floors of
some of the largest towers—grass and trees grow in a
deep layer of earth atop the towers, artificial ponds
carved into the surface shimmer invitingly, and the
noises of the city are magically dampened.

The population of Skysedge Park includes a
small minority (around 400 people) of immigrants
from the [[Eldeen Reaches]], struggling to maintain
something like their traditional lifestyle in a city
that defies the encroachment of nature.

!! Noteworthy Locations

* [[Skysedge Park (park)]]. The largest of the three parks in this district gave its name to the whole district.
* The [[Gatehouse]]. This small stone building is a sacred site to the sect of [[druid]]s known as the [[Gatekeepers]].
The largest of the three parks in this district gave its name to the whole [[district|Skysedge Park]]. Skysedge Tower stands near [[Highest Towers]] and [[Mithral Tower]], and contains upscale businesses just below the park. The park is beautifully landscaped, with gently sloping earth and well-tended grass, small fruit trees, and three small ponds. At the entrance to the park, a 100-foot-tall iron statue stands watch. Called the Iron Guardian, it was crafted centuries ago by the artisans of House [[Cannith]]. Legends tell that it is a [[construct]] crafted for use in the [[War of the Mark]], but it has not been seen to move in the recorded history of the modern city.
''District Type: ''Sky district<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]]), upscale lodging
(40), upscale food (50), exotic trades (20), upscale
trades (40), upscale residences (120)<br/>
''First Impression:'' This district is almost silent,
floating on clouds high above the hubbub of the city.
Servants scurry about from fabulous mansions to
exquisite shops, while the gentry who call this place
home parade in state, often riding griffons or hippogriffs, as they call upon their counterparts.<br/>
''Social Class:'' Upper class

A number of floating towers drift above the upper wards
of [[Sharn]], but these are dwarfed by Skyway, an entire
district suspended above and between [[Central Plateau]]
and [[Menthis Plateau]]. Built on an island of solidified
cloud, Skyway holds the mansions of the wealthiest
people in [[Khorvaire]]—nobles whose feet never touch the
ground. It's a realm of wonders, filled with the finest
examples of luxury and extravagance that gold can buy
and magic can produce. For instance, [[Cloudpool Park]] is
formed from sculpted cloudstuff, with window panels of
ice that provide a view of the city below.

Skyway is home to lavish estates. Prior to the [[Last War]], noble families from across the [[Five Nations]] maintained mansions here. Though some of these places
remain in the hands of their original owners, others
were seized by the crown during the Last War and sold to wealthy citizens of [[Breland]]. The resulting influx of
residents has brought more diversity to the district, with
[[dragonmark]]ed heirs and even wealthy criminals living
alongside the nobility. The grandest estate in Skyway is
Tain Manor, home of the [[ir'Tain family]] and the monthly
[[Tain Gala]].

This district offers the highest-priced services in the city. The [[Dragon's Hoard]] is a [[Ghallanda]] resort, where travelers can enjoy the utmost in luxury if they can afford the most expensive amenities. The [[Celestial Vista]] and the [[Cloud Dragon]] are wondrous restaurants. The [[Azure Gateway]] is a new hotel and restaurant that has
replaced a [[Ghallanda]] establishment. The owner has
remained anonymous, and this touch of mystery has
piqued interest in the place.

If you're interested in mingling with nobles or celebrities, or if you want to pull off a heist that targets the richest people in Sharn, Skyway is the place to do that.

No bridges or lifts connect Skyway to the rest of the
city, so the usual way to reach the floating district is by
taking a [[skycoach]] or hiring a flying mount. 

The Skyway consists of two neighborhoods: ''Brilliant'' to the north, and ''Azure'' to the south.

!! Noteworthy Locations

* The [[Azure Gateway]]. This luxurious hotel and restaurant recently replaced an old [[Ghallanda]] inn. The menu is a "[[Galifar]] fusion," combining styles from across the Five Nations.
* The [[Celestial Vista]]. This legendary restaurant is owned by Skyway's [[city councilor|Sharn Council]], Lady [[Evix ir'Marasha]]. The floor is studded with crystal windows, allowing diners to look down into the city below. The food isn't incredible, but tourist crowds keep the Vista filled with customers.
* The [[Cloud Dragon]]. This restaurant serves traditional Brelish cuisine, and it does so exceptionally well. It's rarely as crowded as the other venues in Skyway, but locals know its value.
* [[Cloudpool Park]]. This park is magically shaped from wispy cloudstuff, with window panels of ice that provide a spectacular view of the city below.
* The [[Dragon's Hoard]]. This resort, maintained by House [[Ghallanda]], offers every luxury for those who can afford its high prices.
* [[Tain Manor|ir'Tain family]]. Sharn's social life revolves around the ir'Tain family. The monthly [[Tain Gala]] is the hottest ticket in town, and it's held at the family estate in Skyway. 
1: A few [[gargoyle]]s perch on a mansion's walls. They're seemingly there for security, but they offer lively commentary about everyone who passes by.
2: A noble with auburn hair held in a silver diadem holds a [[darkwood]] staff encrusted with [[dragonshard]]s, and taps it impatiently while waiting for a [[skycoach]].
3: You pass by a hope well. Supposedly, any coins you throw in the well are gathered and transported down to help the troubled people of the [[lower ward]]s.
4: "Make way! Make way!" A boy clears a path for a jewel-encrusted [[warforged]] wearing a lavish fur cloak.
5: You come upon a fountain of cold fire. In the center, a brass dragon spits brilliant flames into the air, and they spill down and out into the surrounding pool.
6: A team of handlers from House [[Vadalis]] walk alongside a small [[gelatinous cube]]. "We're trying it out, seeing if it can help keep things clean," they say.
7: A [[magewright]] offers to use a simple charm to polish the coins in your purse for just 3 copper crowns. "We wouldn't want anyone here to get grime on their gloves from handling those filthy coins of yours from the [[lower ward]]s."
8: A tour group pauses to marvel at a mansion.
9: A large statue commemorates Lord Dalian [[ir'Tain|ir'Tain family]], a noble philanthropist lost at sea at the end of the [[Last War]]. He holds a spyglass in one hand and a miniature dragon turtle in the other.
10: A [[warforged]] with roses twined around her limbs offers to sell you a bouquet for five silver sovereigns.
11: It starts to drizzle. A well-dressed [[half-elf]] glares at the sky and snaps his fingers. The rain immediately stops.
12: A member of the [[Sharn Watch]] stops you. "Can I help you? Are you sure you're in the right ward?"
The toad-like slaadi are native immortals of [[Kythri]]. Though they do
reproduce (in strange and disturbing ways) and can die of mortal
ailments, they're defined as [[immortal]]s because their population remains constant. 

Slaadi reproduce either by implanting [[humanoid]] hosts with eggs or by infecting them with a transformative disease called chaos phage. Each color of slaad reproduces or transforms in a different way, with red slaadi spawning blue and green slaadi, and blue slaadi spawning red and green. Each green slaad undergoes a lifelong cycle of transformation into the more powerful gray and death slaadi. With each transformation, the slaad retains its memories. Some slaadi can shapeshift into the humanoid creatures from which they were originally spawned.

Whenever a new slaad is born—whatever the method of its creation—an existing slaad dies, seemingly at random. And whenever a slaad is killed, a new one is formed.
So while they seem to share many of the traits of mortals, they
can never be wiped out even if they die en masse, and even if a
blue slaad transforms a village of humans into slaadi with the
chaos phage, the overall number of slaadi doesn't increase.

The slaadi are the only native civilization of [[Kythri]]. They
aren't a monolithic society; some live in massive cities, while
others are tiny rustic communities. Each slaad community
has its own distinct culture and a grand name, and a few examples of these can be found below—but there are many more, and they're constantly changing. The grand city
of [[Cornerstone|Cornerstone (Kythri city)]] may be the seat of the brutal Concordance of Iron today, and the Enlightened Lyceum League a month later.
These changes are astonishingly fast, but they aren't instant;
there are usually at least a few days of chaotic transition and
revolution in between a change. The scope of a community
won't change—Cornerstone is always a metropolis, while [[Turn]] is always a village—but the structures of the community shift. Under the Concordance of Iron, Cornerstone is filled with brutalist iron towers, while the Cornerstone of the Lyceum
League is filled with slender glass spires.

* ''The Grand Concordance of Iron'' is a ruthless regime that intends to subjugate all slaadi, and then, the entire multiverse. It's a strict caste system in which the death slaadi are cruel tyrants and all slaadi serve in the military.
* ''The Enlightened Lyceum League'' is a democratic society of scholars and philosophers. They believe in finding a peaceful solution to every problem and a logical answer to every question.
* ''The Final Regency'' asserts that the [[Sovereigns|Sovereign Host]] have abandoned reality and ordered the slaadi of the Regency to rule the multiverse in their stead until they return. They are fanatically devoted to a slaad-based version of the Sovereign Host and are offended by all inaccurate representations.
* ''The Glorious Union of Flesh'' asserts that slaadi are the ultimate evolution of life and seek to grant all other [[humanoid]]s the gift of slaadhood through the chaos phage. They don't accept the idea that slaad numbers will always remain constant; clearly previous slaad cultures just weren't doing it properly.
* ''The Confluence of Reality'' believes that every civilization has something worth emulating, and studies other cultures to find these things. In a Confluence community, you could find slaadi eating [[Aundair]]ian crepes, playing an [[Aereni|Aerenal]] form of [[Conqueror]], and debating the finer points of [[Daanvi]] law.
* ''The Republic of B'ob'' is ruled by a red slaad who makes up new laws whenever he feels like it. Why is B'ob in charge? Well, that was the first rule he made, and the only one he hasn't changed. And he's B'ob! Who else would be in charge?

The slaadi themselves retain their core forms while their
buildings and government change. Red slaadi are always red
toad-like creatures that implant eggs, but the Lyceum slaadi
might be tall and slender, while the Concordance slaadi are
squat and heavy. Kythri's influence can also cause slaadi to
change color. So slaadi follow standard methods for creating
particular colors—a blue slaad infects creatures with chaos
phage, creating red or green slaadi—but a green slaad could
go to sleep one night and wake up as a death slaad, and vice
versa. In a culture like the Concordance, that means leadership
frequently changes, because it's based on color, not personality.

Because slaad cultures change so rapidly, they rarely enact
plans beyond their own communities, though cities occasionally
clash. Some weeks they seek to exterminate the [[githzerai|gith]], and
other weeks, to ally with them. You never know what you'll get.
Slade is the [[Dominion|dominion]] of Music. They craft and play
magical instruments, and may be willing to sell an
instrument, a song, or a performance at their storefront in the [[Immeasurable Market]] of [[Syrania]].
This small cloth pouch contains enough fragrant salt for a
single bath. You can sprinkle the salts into a tub of hot water, consuming them. If you soak in the water for 1 hour, and then fall asleep within 1 hour, you only need 4 hours of sleep to get an excellent night's rest. Only one creature can benefit from this effect. 
Made up entirely
of [[Chosen]] and
[[Inspired]] ([[tsoreva]] [[quori]] under the command of [[du'ulora]] spirits), this elite division of the [[Harmonious Shield]] of [[Riedra]] is valued both for its power and its unquestioned loyalty. It is assigned missions requiring
[[psionic|psionics]] power
and utter ruthlessness. Members
of the Sleeping Sword are typically
[[soulknives|soulknife]] or [[psi warrior]]s; a few are [[monk]]s, employing
the [[Tashalatora]] techniques also used by
the [[kalashtar]]. 
The blade of the sword is coated in an endless supply of violet-colored slime. Despite the sword's tendency to drip, the slime does not flow over the pommel, regardless of the angle at which it is held. You are entirely immune to the effect of the slime while attuned to this sword. You may communicate telepathically with [[ooze]] creatures while wielding this weapon, and you gain advantage when attempting to persuade oozes.

Once every few minutes, you may fling the slime on the blade towards a creature. This slime can poison living creatures.
While you wear these light shoes, you can move up, down, and across vertical surfaces and upside down along ceilings, while leaving your hands free. However, the slippers don't allow you to move this way on a slippery surface, such as one covered by ice or oil.
This grappling hook is affixed to a 60-foot-long silk rope.
When the hook is thrown, the rope animates to help affix
the hook. You have advantage on attempts to throw the hook. 
The Slogars were one of the first families
to settle in [[Graystone]], and their restaurant has served
the community for hundreds of years. The food isn't
fancy and the ambience is rather gloomy, but the prices
are quite reasonable. If you like traditional [[Karrn|Karrnath]]
peasant cuisine—which, truth be told, is usually an
acquired taste—it's hard to find better.
Slug Keep is located deep in the [[Crawling Swamp]] of the [[Shadow Marches]]. A half-buried castle of the sort built during the early years of the kingdom of [[Galifar]],
Slug Keep has never known a master. No legends or
records make mention of its construction, nor even
of the importing of its stones, which could have originated no closer than central [[Droaam]]. At particular times each year, the walls of the keep are overrun by
slugs, snails, and other slimy denizens of the swamp,
granting the site its name. [[Tharashk]] or another of the
[[dragonmarked house]]s might mount an expedition
to the ruined keep that the characters become a part of—or that they might be forced to rescue. Alternatively, what secrets from before the [[Last War]] might be hidden here?
This alchemically treated wooden stick instantly creates thick, opaque smoke when ignited.
''District Type:'' Theater district<br/>
''Buildings:'' Theaters (4), temple ([[Olladra]]), average
lodging (10), poor lodging (30), average food (20),
poor food (55), average trades (30), poor trades (60),
average services (40), poor services (80), average
residences (20), poor residences (40)<br/>
''First Impression:'' Theaters, restaurants, and concert halls offer the promise of an evening's musical
entertainment in this district.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[Little Plains]] (south); [[Everbright]] (southwest); [[Dragon Towers]] (bridge, northwest); [[Sword Point]] (bridge, north); [[Graystone]] (bridge, northeast); [[Dancing Shadows]] (bridge, east); [[Torchfire]] (below); [[Den'iyas]] (above)

Smoky Towers is in some ways an extension of the [[Torchfire]] district directly below it, perhaps slightly better off in general but not much different in essentials.
Smoky Towers is the entertainment district of [[Middle Menthis]], known for dinner theaters, recital halls, and one grand theater. It presents a grade of entertainment
that falls between the burlesque of [[Torchfire]] and the
classical drama of the [[University District]]—affordable
yet respectable, accessible yet thoughtful.

A small but significant number of people who
trace their origin to [[Cyre]] have made their home in
Smoky Towers. Although culturally they differ little
from their [[Brelish|Breland]] neighbors, this community has
become very active in the wake of Cyre's destruction, discussing rebuilding or reestablishing the nation elsewhere in [[Khorvaire]]. The [[Citadel|King's Citadel]] keeps
the Cyran community here under close watch due
to this potentially treasonous talk.


!! Noteworthy Locations

* The [[Atrium]]. A recital hall that features an acoustically resonant open performance space.
* The [[Classic Theater]]. A small and inexpensive theater, the Classic performs only works written before the start of the [[Last War]].
* [[Mizano Rupa's]]. A dinner theater venue that offers decent food and high-quality entertainment in a variety of styles.
* The [[Starfire Dragon]]. This dinner theater venue offers a steady diet of entertainment accompanied by exquisite meals.
* [[Thovanic Hall]]. A former theater converted to use as a recital hall, Thovanic has has begun performing works from [[Darguun]] and [[Droaam]] featuring monstrous performers.
This item appears to be a simple wooden chair, but close
inspection reveals a hidden compartment when the seat is
lifted. The hidden compartment fills the space between the
chair legs and is concealed by an illusion that makes it
appear empty. The compartment has a volume of 1 cubic
foot. 
This black belt is tooled with tiny scales. The buckle is silver and resembles a snake's head poised to strike.

When the command word is uttered, this belt uncoils and transforms into a black snake. The snake will obey simple commands as long as it is within 60 feet of the wearer, and it has a vicious (though non-venomous) bite. By speaking the command word again, the user can return the belt to its normal form.

If the snake is incapacitated, it dies and reverts to its belt form. The belt then crumbles and is destroyed. If the snake reverts to belt form before being incapacitated, it recovers from all damage.
A soarsled is a crystalline disk crackling with energy, 5 feet in diameter, that flies with
greet speed and maneuverability through the air. Within the city of [[Sharn]] or another [[Syrania]]n [[manifest zone]], a character can fly a soarsled at a speed of up to 25 mph, controlling its movements with their mind. The soarsled can carry up to 400 lbs, and stops hovering when the rider steps off it.

Outside a Syranian manifest zone, the soarsled's maximum speed is reduced to around 10 mph and the sled can only be used a few minutes until it spends at least 8 hours in a Syranian manifest zone.
Rare even in the abundant forests of [[Aerenal]], soarwood possesses a magical buoyancy. Ships made from soarwood skim effortlessly over the surface of the water. Soarwood is a necessary component of the [[airship]]s and [[elemental galleon]]s manufactured by House [[Orien]] and
House [[Cannith]].

The speed of a boat or ship made from soarwood is
double that of an equivalent boat made from ordinary
wood, and the cost is four times normal.
The holdfast of Clan [[Soldorak]], Solangap boasts vast
gold mines and the largest mint and treasury in [[Khorvaire]]. Clan Soldorak has recovered many [[daelkyr]] tools and weapons from the [[Realm Below]]. Solan lords
proudly wear [[symbiont]]s and make no effort to hide their
[[warlock]] pacts. 
A solar is godlike in its glory and power. On the battlefield, the solar's sword flies into the fray on its own, and a single arrow from a solar's bow can strike a target dead on contact. So great is a solar's celestial might that even arch[[fiend]]s on the fields of [[Shavarath]] shrink at its resonant commands.

Solars have a divine awareness that enable them to see through all illusions and deceptions. They can blind creatures with a glance, and heal any injury or affliction with a touch.
''Capital:'' [[Solangap]]<br/>
''Primary Resources:'' Gold, platinum<br/>
''Enemies: ''[[Doldarun]], [[Mroranon]]<br/>
''Celebrated Virtues:'' Independence, cunning. Question authority and find your own path.

In Dwarven, //sol dorak// means “defender of the realm.” While
most [[Mror|Mror Holds]] legends present the legendary Lord Mror as a wise
and powerful leader, the talespinners of [[Solangap]] say that
Lord Mror was an iron-handed tyrant—that the hero Soldorak
challenged Mror for the good of the common people, and it was this that led to the Exile. In all of the stories, Soldorak supports underdogs and challenges outdated systems and
oppressive authority. In some ways, this is at odds with the
fact that Soldorak remains part of the feudal system that has
defined the [[holds|Mror Holds]] for a thousand years. However, Soldorak is
more flexible than the other [[clans|Mror clan]]. Tenant families have a path
to become freeholders, and much like the [[Aereni]], Soldorak
seeks to draw the most talented dwarves from all walks of
life into the ruling clan. However, this is a knife that cuts
both ways; people can also be expelled from the ruling clan,
and heirs are expected to constantly prove their worth and
cunning, not to simply rest on the power of their name.

This principle is the cornerstone of the Soldorak character.
“Power must be earned. The ends justify the means.” They
believe the common concept of “honor” is a trick that serves
those in power; true honor lies in using your wits to defeat
impossible odds. It was this principle that led clan nobles to
found the [[Aurum]], originally as a nexus for acts of rebellion
against [[Galifar]]; today it continues to counterbalance the
influence of foreign aristocrats and [[dragonmarked house]]s.

Soldorak is one of the most populous holds, and one of
the richest. Its fortune lies in all manner of precious metals,
especially platinum and gold; coins from the Soldorak Mint
circulate across [[Khorvaire]], and Soldorak has many foreign
investments. It has invested deeply in the [[Realm Below]]
and is second only to Clan [[Mroranon]] in its subterranean
holdings. However, Soldorak has embraced the use of //dolaur//—[[symbiont]]s—and continues to explore the alien powers of the
[[daelkyr]] even while it recovers [[dwarf]] artifacts. Soldorak has
also embraced the path of the [[warlock]]. These dwarves have
less patience for arcane study than their allies in [[Narathun]], and
are less likely to become [[artificer]]s or [[wizard]]s. But bargaining
for power, earning supernatural gifts with your wits and will?
That's the Soldorak way. Soldorak maintains that this tradition
is entirely safe—that Sol [[warlock]]s can tap the power of the
[[daelkyr]] without serving them—but [[Doldarun]] is certain that all
Soldorak dwarves are corrupt, and [[Mroranon]] sees this foul
practice as another way to discredit its rivals.

While it's home to nobles and soldiers, Soldorakhold also
has more than its fair share of charlatans and criminals. It's a
haven for all manner of rogues and [[warlock]]s, especially those manipulating the powers of the [[daelkyr]]. While outsiders view the Soldorak as evil, they are primarily
about challenging tradition and refusing to accept unearned
authority; a Soldorak folk hero could champion underdogs
anywhere in [[Khorvaire]]. Soldorak dwarves are typically
skeptical of organized religion; there are relatively few temples
in the region, and [[cleric]]s and acolytes are uncommon.
The Archbishop Solgar Dariznu, formerly of [[Wyr]] in western [[Aundair]], governs [[Thaliost]] with the aid of a detachment of [[Thrane]] knights. Despite exhortations from the [[Council of Cardinals]] for him to be lenient, he rules savagely, using excessive force whenever and wherever there’s trouble. His knights round up treasonous ringleaders, stage trials, and at times burn prisoners alive in public to dissuade others from following their example. Citizens face random searches, invasion and seizure of property, and imposition of heavy fines for minor infractions. His methods have quelled the worst of the violence and pacified most of the population, but the people despise him. Many observers inside and outside Thrane wonder when the archbishop will finally overstep so much that he sparks a devastating uprising.

Dariznu is sympathetic to the cause of the [[Pure Flame]] sect.
This establishment serves hot
beverages and simple food. Unusual in that most of its
clientele are [[changeling]]s, it is a place for quiet conversation and meditation. Song of Skin changelings perform
guided meditations in which a dozen people travel through
a journey of different bodies, forming and abandoning
a dozen different forms. The proprietor is a changeling
named Silence. It is quite likely that Silence is in fact a
group identity shared by multiple changelings; their alignment and abilities could change each day. Silence enjoys listening to the tales of
travelers, and has a special service for favored customers:
they produce and sell [[psionic tattoo]]s. It is up to you to
decide what they have available at any given time and what it
will take to convince them to sell. 

There are many questions surrounding the Song of
Skin. Why do the [[Inspired]] allow Silence to sell tattoos?
What is their motivation? It's quite possible that Silence is
a creation of the [[Thousand Eyes]] and passes all information along to that group. On the other hand, perhaps Silence is a spiritual creation of the [[changeling]]s of Dar
Jin who serves as a focus for their belief in the [[Path of Inspiration]]. Either way, the Song of Skin could serve as a sanctuary for changeling dissidents such as [[Keshraa the Fallen]]. 
This amulet is a wide band of carved bone, threaded onto a necklace of braided twine. When swung in a fast circle on its necklace, this amulet emits a high-pitched sound that has a calming, soothing effect on creatures that hear it. It reduces anger, fear, and other forms of agitation, magical or natural. The stronger the emotion, however, the less likely the creature is to be calmed.
The [[hanbalani|hanbalani alta]] network in [[Riedra]] allows
the [[quori]] to broadcast telepathic messages to the [[people|Riedrans]] across wide
areas. The effect can be narrowed to a single village or linked to broadcast across an entire
sphere, but it cannot pinpoint individuals. The Voice
addresses the populace throughout the day, providing
news, encouragement, and instruction to the people.
This system is controlled and monitored from [[Dal Quor]].
Those who want to do so can cut off a village from the
Soothing Voice by deactivating a nearby monolith, but
they cannot transmit messages of their own without going
to Dal Quor. 
The stories of Sora Katra are many and varied, for she's a gifted
shapeshifter who seems to love meddling in the lives of heroes.
She's the old woman at the inn whose idle comment sows
doubt in lovers' hearts. She's the tinker who gives the farmboy
the magic sword that helps him become king—the same blade
he uses to kill himself in the final act. It's only through a wink to
the audience or a hint to the reader that Katra's true identity is
revealed. In some ways, this fictive role overlaps with that of the
[[Traveler]], but the gifts of the Traveler bring //chaos//, while those of
Sora Katra inevitably bring //tragedy//.

However, Sora Katra isn't always the villain in tales. When
she acts openly, she often poses a challenge that tests the
hero's wits or resolve. In most of these tales, the champion fails
the challenge—which is, to be fair, usually weighted against
them—and disaster ensues. But in those rare cases where the
protagonist remains true to their ideals or outwits the hag, she
always holds true to her promises. It's this penchant for testing
resolve and punishing failings that gave birth to the popular
tale that if a child makes a promise and breaks their word, Sora
Katra will come in the night and take a finger from them.

Sora Katra is known as a schemer. In many stories she's
found weaving curses on her loom—plotting misery and
misfortunes to release into the world. In the tale //The Sleeping Prince//, she curses the Prince of [[Wroat]] three days after his
birth. In the end of the story, the Woodcutter's Daughter kills
the [[giant]] in the King's Forest and gives Katra his tongue, and
when the curse is lifted, the Woodcutter's Daughter marries the
prince. Scholars have long debated Katra's motives in the tale.
Is it that she couldn't kill the giant, and was setting a scheme
in motion that would lead to his downfall? Or was it actually
her goal from the start to elevate the Woodcutter's Daughter—did she create the obstacle in order to give her chosen hero a chance to rise? While this is a positive spin, there's no question that Katra's actions always bring misfortune to someone—especially those who fail to measure up to her challenges.

Sora Katra is a brilliant orator. In the stories, she usually
uses her words to sow doubt or discord, but she is equally
capable of binding people together and weaving dreams of
glory. In [[Droaam]], she is the voice of the [[Daughters|Daughters of Sora Kell]], and her
speeches have drawn a dozen different species together,
and made raiders and brigands believe that they are part of
something greater and grander than they ever imagined. In
part, this is about playing on the peoples' anger and fear of the
easterners. But she also has a knack for simply knowing what
people want—such as the ambitions of her warlords—and using
that to her advantage. Combined with the guidance of [[Teraza|Sora Teraza]],
she foresees problems and invariably finds someone to take the
fall for things that cannot be avoided. In some ways, this is the
central mystery of Droaam: Why found a nation to begin with?
And why seek to be recognized by the [[Treaty of Thronehold]],
when Teraza most likely knew the effort would fail? One
possibility is that the entire nation is just a stepping-stone
toward her true goal—just as the prince in //The Sleeping Prince//
was a tool that ultimately elevated the Woodcutter's Daughter. It's possible [[Droaam]] is another of her tests—but who's being
tested, and what happens if they fail? What about the criminal
organization [[Daask]]? Is this just a diversion for Katra, or is
Daask advancing a mysterious agenda?

In her natural form, the Mistress of the Mires is a [[green hag]],
with green skin and dark green hair. However, she loves [[illusion]]
and rarely remains in her true form. If she has no reason to
remain in a particular form, she often shifts in mid-speech. She
delights in forms with a personal impact on the people she's
dealing with—taking the face of a dead lover or a betrayed friend.
She possesses abilities like a powerful [[bard]], both the ability to
inspire and to perform powerful [[enchantment]]s and illusions.

Sora Katra loves challenging heroes, which makes it easy to
tie her to a story. Perhaps [[Droaam]] itself has been created to test
the player characters—she's spent a decade and built a nation
to force the characters to make a difficult decision. If you want
to create a connection between Katra and a character, is the
character the archetypal Sleeping Prince—who Katra torments,
seemingly without reason—or are they the Woodcutter's
Daughter, who may be challenged but has a chance to come
out ahead in the end? Consider also the tale of the farmer
who became a king. Katra might give a character an artifact,
seemingly for no reason; can they use it wisely, or will it lead
them to despair? While a connection to Katra could develop
during play, you could establish a tie to the Mistress of the Mires
in a character's backstory. Perhaps Katra cursed the character's
family because of something their parents did; is there
something the character can do to lift the curse? Or perhaps
the character unwittingly did a favor for a disguised Katra back
when they were a child, and she promised to repay this act
of kindness; when and how will the character call in this
favor? 

Katra utilizes the agents of [[Katra's Voice]] to maintain order in [[Droaam]].
Sora Maenya is often depicted as a monster, said to wander the [[Towering Wood]]. She is known for her strength and her endless appetite; it's commonly said that she can crush a [[giant]] with her bare hands, then eat the whole thing and still be hungry.
Stories often depict her through her absence, as an unstoppable force that punishes arrogance or cruelty. The shepherd warns the foolish farmers not to settle in the forbidden meadow; later, he returns to find their bones picked clean and stacked near the hearth, but without their skulls. There's no need to say who it was or to show the battle. The tale notes the missing skulls, and everyone knows that Maenya keeps the skulls of her victims, binding their souls to the bone and using them as lanterns.

Maenya greatly enjoys games
and challenges, and she may
spare someone who shows spirit.
While she doesn't lay out schemes
as complex as does [[Sora Katra]],
there are many tales of Maenya
wandering the woods in disguise
and tricking travelers into unwise
contests. Her endless appetite
reflects a broad love of life; it's not
simply that she's hungry, it's that she
loves to eat. She fights for the sheer joy that comes in crushing an enemy, and in the folk song //Edar's Last Jig//, she dances until her partner dies of exhaustion. She
seems to have a sense of humor, albeit a morbid one; she may
spare someone who makes her laugh, or let someone live
because it amuses her to do so. There are stories where a hero
beats her in a seemingly impossible contest through cunning
and courage; when defeated, she honors any promise she has
made. However, a victor would be wise not to gloat; in the tales,
this is a sure path to an unexpected end.

Sora Maenya is the general of [[Droaam]]'s armies, the iron fist
that crushes any rebellion. The core of her power is Maenya's Fist, an elite corps of war [[troll]]s and skullcrusher [[ogre]]s. Everything about the Fist is shrouded in mystery. Some say Maenya bred and trained them in a buried [[Dhakaan]]i fortress; she calls these soldiers her children, and some scholars believe this might be literally true. Others say that Maenya herself forged the imposing plate armor
that they wear. Whatever the truth, the members of the Fist
are fanatically devoted to Maenya. While [[Droaam]] has yet to
assemble an army combining the full force of its warlords, thus
far, Maenya has shown herself to be a brilliant and unorthodox
strategist, one not to be underestimated.

In her natural form, Sora Maenya is an [[annis hag]]—a
towering, powerful figure. She can assume smaller forms, but
rarely seeks to play psychological games with her shapeshifting
as [[Katra|Sora Katra]] does. She appears in many tales as a hungry woman—tall and thin, with ragged clothing and long black hair, seeking shelter and food. While her primary power is her martial might, she does have supernatural gifts; the most infamous is her soulbinding. And perhaps she also has other [[necromantic|necromancy]] skills that
haven't been revealed in the tales...

While she's known for her immense strength, Sora Maenya
isn't just a brute; there are stories in which she actually
trains a hero, either teaching them to fight or granting them
unnatural strength. While it would be an unusual path, a
monk or barbarian could attribute their class features to early
training with Sora Maenya. The question is whether they
knew her identity when she taught them; was she the Reaver
of the Woods, or did she teach them in an assumed form? If
a character is from the [[Eldeen Reaches]], might they have met
Sora Maenya as a child? Perhaps they ran away from home,
and Maenya devoured their village while they were away. Or
maybe they made an unwise bargain—asking Sora Maenya to
kill a childhood rival, which she did; now the character owes her
a debt, and someday she'll come to collect. Or perhaps it's the
other way around; perhaps as a child, the character defeated
Maenya at a game, and it's she who owes the character a favor.
Sora Teraza is the most enigmatic of the [[Daughters of Sora Kell]]. She's known to be blind, yet she's perfectly aware of her
surroundings; it's not that she can see, she simply knows where
everything is. In some tales, it's said that she knows when every
individual will die; in other stories, she herself chooses when
each person will die. It's also said that she has a library in which
she keeps books documenting the lives of remarkable people—books that contain the souls of those heroes, and that she appears to collect the soul when that champion is near death.

Sora Teraza is a [[dusk hag]]. While she can change her shape,
she rarely does so; she wears an old, tattered robe and hides
her face beneath a deep hood. She rarely speaks, other than to
issue cryptic pronouncements. When she's not with her sisters, she spends her time tending her library in the [[Great Crag]], or in
meditation. Teraza is certainly the most gifted oracle of the age.
This may be connected to the [[Draconic Prophecy]], or it may be
that she perceives the future in a different way. Certainly, Teraza
is never depicted as having to seek her answers; it seems she just
knows them. Given this unerring knowledge, it would seem like
it should be impossible for the Daughters to ever fail; she can
reveal the plans of their enemies and the location of any treasure
they might seek. But Teraza doesn't always share her knowledge,
act in the best interests of her sisters, or even her own interests.
Why not? The simplest answer is that she is unhinged; any
mind could be broken by the burden of such knowledge. A
more complicated possibility is that she is trapped by her own
knowledge—that she already knows what she is going to do,
and doesn't actually have any real free will. Or perhaps her
knowledge isn't as absolute as it appears: she has the potential
to know anything, but some things simply evade her sight.

Regardless, Sora Teraza certainly can, and sometimes does,
warn her sisters about possible threats, such as treacherous
warlords or approaching player characters, and directs them to
the best path to ensure victory. But she can also remain silent,
or only offer information later than others consider helpful. For
example, she could reveal that there's an [[Aundair]]ian war
criminal—a [[wizard]] of tremendous skill, who [[Sora Katra]] would
surely have a use for—hiding out in [[Graywall]]. But she might
provide this information a year after his arrival, and only a day
before he plans to depart—leaving Katra with just 24 hours to
mobilize agents to try and capture the wizard. Will these agents
compete with the player characters, or will they be the player
characters? Teraza might also provide a character with a
mysterious piece of information—via dream or [[sending]]—that
could be very useful, even if it could hurt her sisters. This
doesn't mean she is betraying her sisters; it is simply that she
does what she must do, when she must do it. While Sora
Teraza's knowledge is potentially limitless, in practice, it's a
tool to drive an interesting story, not to derail it. 
''Capital: ''Blackhammer<br/>
''Primary Resources:'' Artisans, Eberron [[dragonshard]]s, manufactured goods<br/>
''Enemies:'' None<br/>
''Celebrated Virtues:'' Industry, innovation. There's always a better way to do things.

When the exiles were driven from the [[Realm Below]], it was
Soranath who made them weapons. Clan Soranath is one
of the smallest [[clans|Mror clan]], but its influence reflects the talents of
its artisans. Other clans have mines and fields—it's Soranath
who takes what they produce and makes wonders.
Not all artisans are from Soranath, just as not all of the
denizens of Soranathhold are artisans. Most blades in
Mroranonhold are forged by [[Mroranon]] smiths. But Soranath
artisans are unmatched in their techniques and their work ethic. Rather than being bound by secrets of the past, Soranath
smiths are always looking for ways to improve their techniques,
searching for new sources of inspiration. While this sounds
impressive, Soranath is a small hold with limited resources,
without the capabilities either in research or production of
House [[Cannith]] or the [[Arcane Congress]]. The artisans of Clan
Soranath won't change the world with their works, but they
produce remarkable things for those who can afford it.

Soranathhold is small, with only three spires. Its families
are tightly knit, and the divide between tenant and clan is
a thin line. Industry is the prime virtue of Soranath, and its
people work hard and live austere lives; for Soranath dwarves,
a job done well is more satisfying than any luxury. Soranath
has abundant deposits of [[dragonshard]] geodes, and thus
isn't dependent on [[Tharashk]], but doesn't seek to challenge
Tharashk as an exporter of shards. Due to its otherwise limited
resources, Soranath is dependent on other clans for many
things, including protection. Soranath [[artificer]]s are fascinated
by the potential of the [[Realm Below]] and what they could learn
both from the Udar artifacts and the [[symbiont]]s of the [[daelkyr]],
and Grayroot Spire has been experimenting with fleshcrafting.
However, they are artisans, not warriors; they must hire others
to venture into Sol Udar on their behalf.

The Soranath dwarves are devoted to the [[Sovereign Host]],
especially to [[Onatar]]; they are quick to assign credit for any
great work to the Sovereign of Fire and Forge. There may also
be a cult of the [[Traveler]] within Soranath, perhaps in Grayroot
Spire; if so, it keeps its true devotion well hidden.

Soranath dwarves are generally guild artisans, acolytes, or
sages. [[Artificers|artificer]] (primarily Battle Smiths) and [[cleric]]s of the
Forge are both logical classes for Soranath dwarves.
Sorcerers carry a magical birthright conferred
upon them by an exotic bloodline, some otherworldly
influence, or exposure to unknown cosmic forces.
One can't study sorcery as one learns a language, any
more than one can learn to live a legendary life. No one
chooses sorcery; the power chooses the sorcerer. 

[[Arcane magic|arcane magic]] is a part of every sorcerer, suffusing body, mind,
and spirit with a latent power that waits to be tapped. Sorcerers have no use for the spellbooks and ancient tomes of magic lore that [[wizard]]s rely on, nor do they
rely on a patron to grant their spells as [[warlock]]s do.
By learning to harness and channel their own inborn
magic, they can discover new and staggering ways
to unleash that power. Depending of the nature of that inborn magic, sorcery can sometimes trigger unusual [[side effects|random magical effect]].

By far, the most common source of sorcerous power in [[Eberron]] is [[dragonmark]]s. Either by sharing ancestry with a [[dragonmarked house]] and manifesting one of their marks, or by spontaneously manifesting an [[aberrant dragonmark]], you can channel arcane magic instinctively by channeling the power of the mark. 

Other kinds of sorcerers are exceedingly rare by comparison. One might obtain sorcerous power by being born within a [[manifest zone]] and thereby gaining a magical link to the associated plane. Perhaps you are a survivor of the [[Mourning]], and since that day you have undergone mutations and gained strange, disturbing arcane powers. Or maybe you were created to be a sorcerer: a [[warforged]] created as a living wand; a creation of the [[daelkyr]] made to be an arcane conduit to [[Xoriat]]; or a super-soldier magebred by House [[Vadalis]] and infused with [[dragon]]'s blood.
Sorik Sensos ([[half-elf]] councilor for [[Middle Central]]) is a clever man and a brilliant orator, and he is one of the oldest and most influential voices on the Council. However, he is influenced by his need for gold, and his supporters are aggravated by the growing economic gap between [[Middle|Middle Central]] and [[Upper Central]]. His frustration is compounded by the rising success of [[Javan Tomollan]], and every month he becomes increasingly obsessed with Tomollan. Sorik is determined to humiliate Javan and to bring down his fortunes, but he needs to be careful. 
Most assassins strike with physical weapons,
and many burglars and spies use [[thieves' tools]] to
infiltrate secure locations. In contrast, a soulknife strikes and infiltrates with the mind, cutting
through barriers both physical and psychic. These
rogues discover [[psionic|psionics]] power within themselves
and channel it to do their roguish work. 

Soulknives can manifest their psionic power as shimmering blades of psychic energy. These mind blades can be thrown, honing in on their target even behind cover. They can also weave a veil of psychic static to mask their presence, and communicate telepathically with their allies.
While wearing these iron studs, the user can hear nothing at all.
The South Circle is the northernmost latitude in the Southern Hemisphere at which the sun can remain continuously above the horizon for 24 hours during the [[Zarantyr|Khorvaire calendar]] equinox (or below the horizon during the [[Lharvion|Khorvaire calendar]] equinox).
This viscous, milky-white substance can form a permanent adhesive bond between any two objects. It must be stored in a jar or flask that has been coated inside with [[oil of slipperiness]]. When found, a container contains <<dr "1d6 + 1">> ounces.

One ounce of the glue can cover a 1-foot square surface. The glue takes 1 minute to set. Once it has done so, the bond it creates can be broken only by the application of [[universal solvent]], or with a [[wish]] spell.
* The Sovereigns are with us at all times. [[Onatar]] stands at every forge, and [[Dol Dorn]] is with you whenever blades are drawn.
* The Sovereigns shape the world. They offer us guidance and strength, but we must learn to listen.
* Honor every Sovereign in their place and time. If you hear one voice clearly, embrace their path.

As a follower of the Sovereign Host, you believe that the hand of the Sovereigns can be seen in all things. What others take to be intuition or instinct, you see as the voice of the Sovereigns offering guidance. You don't need absolute proof; the fact of a bountiful harvest is evidence of [[Arawai]]'s benevolence.

The pantheon of the Sovereign Host embodies all that
is good in the world. The people of [[Khorvaire]] have followed the Sovereigns for thousands of years, and everyone knows the names of the Sovereigns and the [[Dark Six]]. Even people who aren't devout might still swear by
the Sovereigns or offer a prayer in a moment of crisis. 

The Sovereign Host is wondrously diverse. Variations
and subsects of the faith thrive, and temples are only
loosely aligned. In a small community, a skilled smith
might double as the priest because people believe he's
close to [[Onatar]]. A midwife might symbolically speak for
[[Arawai]] and [[Boldrei]]. Typically, the faithful are united by
their shared beliefs; no central authority seeks to enforce a singular creed.

As a Vassal—a follower of the Sovereign Host—you
might feel connection to a particular Sovereign, but still
show reverence to each. Your background can influence
your particular interpretation of the Sovereigns—the
[[Talenta|Talenta Plains]] [[halfling]]s consider the Sovereigns part of a pantheon of spirits, while some [[Karrn|Karrnath]]s honor only the Sovereigns of war—but any character can be a Vassal. 

!! Sovereigns

These common names and attributes describe the nine
Sovereigns as they are worshiped in Khorvaire: 

* [[Arawai]] is the Sovereign of Life and Love.
* [[Aureon]] is the Sovereign of Law and Lore. 
* [[Balinor]] is the Sovereign of Horn and Hunt.
* [[Boldrei]] is the Sovereign of Hall and Hearth.
* [[Dol Arrah]] is the Sovereign of Sun and Sacrifice.
* [[Dol Dorn]] is the Sovereign of Strength and Steel.
* [[Kol Korran]] is the Sovereign of World and Wealth.
* [[Olladra]] is the Sovereign of Feast and Fortune.
* [[Onatar]] is the Sovereign of Fire and Forge. 

!! Symbol

The Octagram is the symbol of the Host as a whole. A
Sovereign priest either carries a metal Octagram holy
symbol or holds a staff tipped with the icon. Priests
dedicated to a particular god also display their deity's
symbol, and Vassals carry tokens with the symbols of
the Sovereigns whose favor they seek. There are eight
points in the symbol for eight Sovereigns; the ninth Sovereign ([[Aureon]]) is represented by the Octagram itself. 

!! Rites and Customs

Formal prayers to the Sovereigns usually involve song.
Specific songs invoke each Sovereign and seek their
favor, appreciate the blessings received, and recognize
the presence of a Sovereign. Celebrants sing the songs
of [[Boldrei]] and [[Aureon]] at weddings, and soldiers sing
[[Dol Dorn]]'s marching songs on the move and [[Dol Arrah]]'s
hymns on the dawn before a battle. 

In truth, the Sovereigns are ubiquitous
in the [[Five Nations]]. When
you go into a courtroom,
you stand on an Eye
of [[Aureon]]. Standard
marriage ceremonies
invoke [[Boldrei]]. Many people
aren't devoted Vassals and don't
actually believe the Sovereigns are
guiding their every action. But even
such pragmatists recall the names of each
Sovereign, know many of their songs, and
will celebrate [[Wildnight]] or [[Boldrei's Feast]]. By and large, if you live in the
[[Five Nations]], it's assumed you're a
Vassal unless you specifically say
you're not.

!! Temples

Sovereign shrines arise where people feel the deities
are close, such as a library for [[Aureon]] or a smithy for
[[Onatar]]. The rites of [[Boldrei]] or [[Arawai]] typically occur in
the wild, and a tavern could serve as a shrine to Olladra.
The shrines can take any form, but they prominently display the symbol of the particular Sovereign.

Temples of the Sovereign Host are made of stone and
have eight doors. The walls depict images of the Sovereigns, with the icon of Aureon over the altar and the Octagram engraved on the floor. 

!! The Power of Divinity

The [[giant]]s of [[Xen'drik]], in the practice of their Rushemé faith, raised temples
to "Ouralon Lawbringer" long before
humanity embraced [[Aureon]], the
Sovereign of Law and Lore. Hunters
in [[Aundair]] give thanks to [[Balinor]], but
[[orc]]s in the [[Shadow Marches]] invoke
"Baalkan the Beastlord", while the [[Talenta|Talenta Plains]] [[halfling]]s tell stories of clever "Bally-Nur".

Though scholars debate the
reason why, most agree that the more
similar a tradition is to an archetypal
Sovereign, the easier it is to draw
[[divine power|divine magic]] from that faith. A culture
that invokes a deity of the hunt is more
likely to produce [[cleric]]s and [[paladin]]s than
a culture that worships a giant salmon of the
same name—and if the deity's name is similar
to “Balinor,” the connection to divine magic will be
easier still. Vassals sages assert that this proves the
existence of the Sovereigns, while skeptics say it could simply
be a numbers game—it's easier to draw power from a shared
belief, and belief in the Sovereigns has reached critical mass. 

!! Paths of the Faith

The Sovereigns are worshiped in many different configurations and forms. A particular community could be devoted to a single Sovereign, or it could present a Sovereign and member of the [[Dark Six]] as being allied forces (as seen with the [[Restful Watch]]). Because of this diversity, Vassal priests are rarely concerned
with heresy. Those who follow the [[Pyrinean Creed]] may attempt
to correct what they see as flawed beliefs, but ultimately, most
just smile at the ignorance of the Marcher [[orc]], content in the
knowledge that they know the proper names of the Sovereigns. 

This openness is also reflected in Vassal interactions with the Church of the [[Silver Flame]]. The [[Pyrinean Creed]] asserts that the Sovereigns defeated the [[overlord]]s at the dawn of time; if the Silver Flame is what keeps the overlords bound, presumably the Sovereigns created it. So there's no inherent conflict; rather, a Vassal will simply shrug and say, “But why do you worship a cage?

A few of the best-known Sovereign Host sects are below.

* the [[Pyrinean Creed]]
* the [[Church of the Wyrm Ascendant]]
* the [[Restful Watch]]
* the [[Three Faces]]
''District Type:'' Temple district <br/>
''Buildings:'' Temples (10: each of the [[Sovereign Host]]
and the [[Silver Flame]]), shrines ([[Aureon]], [[Dol Arrah]],
[[Onatar]], The [[Traveler]], The [[Undying Court]]), upscale
lodging (5), average lodging (15), upscale food (15),
average food (30), exotic trades (20), upscale trades (20), average trades (40), upscale services (40), average services (100), upscale residences (20), average
residences (80)<br/>
''First Impression:'' This district regales all things
holy, or at least their representation in art and architecture. Statues, paintings, and mosaics of deities and
saints are everywhere, and great temples stand out
among the lesser buildings.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Tradefair]] (northwest); [[Ambassador Towers]] (west); [[Sword Point]] (southwest); [[Oakbridge]] (bridge, north); [[Holdfast]] (bridge, northeast); [[Boldrei's Hearth]] (below); [[Korranath]] (Korran-Thiven neighborhood) (above)

The Central Plateau's temple district houses some of
[[Sharn]]'s greatest monuments of faith. Unfortunately,
too often these monuments seem cold as the faith
that inspired them evaporated long ago, replaced by
ritual or even a deep corruption.

!! Noteworthy Locations

* [[Cathedral of the Cleansing Flame]]. The central temple of the Church of the [[Silver Flame]] serves both as a templar garrison and the site of grand rituals and celebrations.
* [[Pavilion of the Host]]. The center for worship of the [[Sovereign Host]] is a grand open tower surrounded by nine temples, each dedicated to one of the Sovereigns. 
The spellcaster touches a living creature on the verge of death. That creature is stabilized.
The //spark// is a small oval stone engraved with [[Fernia]]n glyphs. While you are holding the //spark//, you can touch a candle, torch, small campfire, or similar object, and instantly ignite it.
You grant the semblance of life and intelligence to a corpse of your choice within 10 feet, allowing it to answer the questions you pose. The corpse must still have a mouth and can't be [[undead]]. The spell fails if the corpse was the target of this spell within the last 10 days.

Until the spell ends (after up to 10 minutes), you can ask the corpse up to five questions. The corpse knows only what it knew in life, including the languages it knew. Answers are usually brief, cryptic, or repetitive, and the corpse is under no compulsion to offer a truthful answer if you are hostile to it or it recognizes you as an enemy. This spell doesn't return the creature's soul to its body, only its animating spirit. Thus, the corpse can't learn new information, doesn't comprehend anything that has happened since it died, and can't speculate about future events.
The key to long-distance, virtually instantaneous communication across [[Khorvaire]] is House [[Sivis]]'s network of message stations. Each station contains at least one speaking stone, which is carved from a Siberys [[dragonshard]] and inscribed with arcane symbols that uniquely identify it. If you're a [[gnome]] with the [[Mark of Scribing]], you can touch the stone and send a short message from it (about 25 words or less; or, if compressed, up to 50 words; as the [[sending]] spell). The target is any other speaking stone whose location or unique sequence of symbols you know. A creature within 5 feet of the stone hears the message as if they were the target.

In a Sivis message station, a gnome is always on duty by the speaking stone, listening for messages that might come in and transcribing them for delivery to their intended recipients.
Fashioned in the style of a whaling spear, this long, barbed weapon is made from bone and heavy, yet pliant, ash wood. Its point is lined with decorative engravings of fish, clam shells, and waves. While you carry this spear, you receive advantage on any attempts to swim or to acquire food via fishing. When set on the ground, the spear always spins to point west.

When thrown in a westerly direction, the spear does a significant amount of additional cold damage to any creature it strikes.

Speartip is a small island in the [[Lhazaar Principalities]], located between [[Ninebay Island]] and [[Greentarn]].
While wearing these glasses, you can choose to perfectly recall anything you have seen during a 5-minute period within the past month.

Once you have used this property, it can't be used again until the next dawn.
A spectator is a lesser [[beholder]] that can be summoned directly from [[Xoriat]] by a magical ritual of the [[Vigilant Eye]], the components of which include four beholder eyestalks that are consumed by the ritual's magic. Appropriately, a spectator has four eyestalks, two on each side of the wide eye at the center of its four-foot diameter body.

Like any beholder, a spectator views itself as the epitome of its kind, and it has an intense hatred of other spectators. If two spectators encounter one another, they almost always fight to the death.
A specter is the angry, unfettered spirit of a [[humanoid]] that has been prevented from passing to [[Dolurrh]]. Specters no longer possess connections to who or what they were, yet are condemned to walk the world forever. Some are spawned when dark magic or the touch of a [[wraith]] rips a soul from a living body.

//''Dwellers in Darkness.''// Sunlight represents a source of life that no specter can ever hope to douse, and it pains them. When night falls, they leave their final resting places in search of living creatures to slay, knowing that few weapons can harm them in return. At the first light of dawn, they retreat back into the darkness, where they remain until night falls again.
A spell is a discrete magical effect (typically [[arcane|arcane magic]] in nature), a single shaping of the magical energies that suffuse the multiverse into a specific, limited expression. In casting a spell, a character carefully plucks at the invisible strands of raw magic suffusing the world, pins them in place in a particular pattern, sets them vibrating in a specific way, and then releases them to unleash the desired effect—in most cases, all in the span of seconds.

Spells can be versatile tools, weapons, or protective wards. They can deal damage or undo it, impose or remove conditions, drain life energy away, and restore life to the dead.

Uncounted thousands of spells have been created over the course of the multiverse's history, and many of them are long forgotten. Some might yet lie recorded in crumbling spellbooks hidden in ancient ruins or trapped in the minds of dead gods. Or they might someday be reinvented by a character who has amassed enough power and wisdom to do so.

!! Schools of Magic

{{||spell school}}

!! Spell Tiers

{{||spell tier}}

!!

For a complete list of spells, check <<showspells "Find Spells">>.
Academies of magic group [[arcane|arcane magic]] [[spell]]s into eight categories called schools of magic, or "{{!!schoolname}}s". Each {{!!spellname}} cast by a [[wizard]] or [[magewright]] falls into one of these categories. 

<<list-links-article "[tag[spell school]sort[title]]">>

Some arcane spellcasters focus on only a few schools of magic; for example, [[eldritch knight]]s typically cast only [[abjuration]] and [[evocation]] spells.

However, not all magic is [[arcane|arcane magic]], and magic that is [[divine|divine magic]], [[primal|primal magic]], or [[psionic|psionics]] in nature may not even neatly fit into the category of "spell". But for spell-like phenomena in these categories, we can structure them in much the same way as arcane spells, with a "spell school" tag corresponding to their power source.
This device emanates an antimagic field (same effects as
the [[antimagic field]] spell) in a radius of 1 to 3 miles. The
field can be activated or deactivated with a
touch by its controller.

The form that the device takes depends on the nature
of its creator. The [[Ashbound]] [[druid]]s despise unnatural
magic, so a spell sink created by them might be a living
artifact, such as a twisted tree that consumes the magical energy around it. Conversely, a spell sink created by
a mad [[artificer]] might be a massive vessel composed of
[[dragonshard]]s and exotic metals.

A variant device called the //spell siphon// not only neutralizes magic but also absorbs all magical energy in the
area, storing that power for a cataclysmic effect. 
A {{!!spellname}}'s tier is a general indicator of how powerful and rare it is.

# ''Cantrip.'' A cantrip is a quick and simple spell that can be performed without a significant expenditure of energy. Ex: [[prestidigitation]], [[fire bolt]], [[mage hand]], [[light]].
# ''Common Spell.'' These spells require more effort or time to cast than cantrips. The people of Khorvaire are used to dealing with tools and services that mimic cantrips or common spells. Ex: [[knock]], [[alarm]], [[burning hands]], [[floating disk]], [[zone of truth]]. Common spells require the expenditure of 1 "spellcasting [[stress]]" to cast.
# ''Rare Spell.'' These spells are exceptionally potent, but aren't part of everyday life, and the typical commoner doesn't expect to run into them. Ex: [[fireball]], [[sending]], [[conjure elemental]], [[raise dead]], [[cloudkill]]. Rare spells require the caster to expend 2 stress.
# ''Legendary Spell''. These are magical incantations of mythical proportions, usually the product of more advanced civilizations—the [[dragon]]s of [[Argonnessen]], the [[elves|elf]] of [[Aerenal]], the ancient [[giant]]s of [[Xen'drik]]. Ex: [[eyebite]], [[plane shift]], [[simulacrum]], [[antimagic field]]. Legendary spells cost 3 stress to cast.
# ''Mythical Spell.'' Spells of never-before-seen power over the fabric of reality. Ex: [[wish]], [[true resurrection]], [[imprisonment]]. Mythical spells cost 4 stress to cast.

Player characters who are able to cast spells (usually by taking a [[talent]]) generally start with only the capability to cast cantrips and common-tier spells. With increasing skill, they can learn how to cast rare, legendary, and perhaps even mythical-tier spells. They may also obtain extra [[stress]] boxes that can only be used for spellcasting.

If a [[magic item]] grants a character the ability to cast a spell, but places a daily limit to the number of times the spell can be cast, that spell does ''not'' cost any stress to cast. The energy needed to cast the spell is stored (and slowly recharged) within the item itself. If there is no limit, that means the spell is simply added to your spell list and you must expend your own energy to cast it.

If an item grants a non-spellcaster access to a spell, they may still cast it using that item, but at a single disadvantage.
These scarab-like [[symbiont]]s, bred by the [[daelkyr]] [[Valaara]],
have brilliant, iridescent shells. To attune to a spellburrow,
you must place it on your head; in the process of attunement,
it digs in and burrows through your skull, establishing
a psychic connection with you. While it lacks any sort
of human consciousness, it possesses a strange alien
sentience that responds to your desires. There are tales
of rarer spellburrows that possess greater knowledge and
sentience; such stories sometimes end with the spellburrow
consuming the brain of the [[wizard]] who pushed it too far—but these are surely just fanciful stories!

A spellburrow knows one cantrip and two common-tier [[spell]]s of the DM's choice, and you can cast these spells as if you know them.
While holding this shield, you have a large advantage to resist or avoid [[spell]]s.
This polished Eberron [[dragonshard]] fits in the hand and stores information similar to a book. The shard can hold the equivalent of one book that's no more than 320 pages long. A shard can be created blank or already filled with information. When the shard is created, the creator can set a passphrase that must be spoken to access the information stored within.

While holding the shard, you can close your eyes and open your mind to the shard, seeing its content in your mind. Reading the text or scribing new text on blank "pages" in the shard requires concentration and takes the same amount of time it takes you to read and write normally. Thinking of a particular phrase or topic draws you to the first section in the shard that addresses it.
1: cantrip
2: common
3: rare
4: legendary
5: mythical
''[[Spell Tier|spell tier]]: ''''<$transclude tiddler="SpellTierNames" index={{!!tier}}/>''
The [[deathless]] state isn't the only way to experience eternity. Most
honored dead of [[Aerenal]] are preserved in spirit idols that preserve
the soul from the dissolution of [[Dolurrh]]. This stone bust of a
dead elf holds relics of their corpse (bone shards, a lock of hair)
embedded within it. While dormant, the spirit within the idol is unaware of the outside world or the passage of time, existing in an ongoing trance—a dreamlike existence built from memories and personal experiences. A spirit idol can be awakened with the [[speak with dead]] [[spell]], though some remain conscious indefinitely and can be found serving as tutors, provosts, and judges.

Not all [[Aereni]] want to become [[deathless]]—many consider the
spirit idol the superior state. The deathless are sworn to protect
and serve the living, and must deal with the ongoing inconvenience
of physical existence; within a spirit idol, an [[elf]] can experience
eternal peace in a dream of their own making. For many Aereni,
their greatest goal in life is to gather the memories and ideas that
will be their companions in their eternal trance after death.

While there are more spirit idols than there are deathless, not
all dead are preserved this way. Spirit idols are reserved for those
who have proven worthy of eternal existence. The common dead
are embalmed after death and interred in the vast catacombs
below the land, along with a record of their life. Only those who
have committed truly heinous crimes—such as grave robbers—are denied memory; such criminals are burned after death, their ashes scattered in the oceans, with no records kept of their lives.
A spirit of the land is a powerful [[elemental]] force of nature tied to [[Lamannia]] that lies dormant until the area it guards is threatened. Each assumes dominion over a particular bounded geographical area, such as a small valley, a river, or a desert, existing as a living part of the land. [[Ahdryatmin]] is one such spirit, dwelling in a fertile valley in the heart of [[Adar]].

In its natural form, a spirit of the land is an invisible and
intangible force. It appears as a shapeless mist to creatures
that can see invisible things. When it wishes to manifest a
physical form, a spirit of the land can assume the shape of a
humanoid, animal, or elemental of its own size composed of
one particular element—air, earth, fire, or water.

Spirits of the land are always aware of what transpires in
their territories, and they punish all who would ravage or
defile them. They get along well with [[druid]]s as well as with
races that respect the land.
* We are the spiritual anchors of the greatest champions of our people. Through our faith, we keep their spirits from being lost to oblivion.
* You have been chosen by a hero. Live your life as they lived theirs, letting their instincts guide you.
* Treasure our past and the stories of our people. You are the vessel through which new legends will arise.

As a [[Tairnadal]] [[elf]] of [[Valenar]], you were raised on the legends of your people, on tales of champions who battled mighty [[dragon]]s and armies of [[giant]]s. When you came of age, the Keepers of the Past read the signs to determine which of these ancestors chose you to be their vessel. Since that day, it has been your duty to emulate
your patron ancestor. If you're a [[wizard]], you've studied
the spells created by your ancestor. If you're a warrior,
you've practiced their specific martial techniques. When
you trance, you relive their greatest battles. But these
studies are just preparation. Now it's your sacred duty
to be a revenant of your ancestor: to live your life as they
did and allow the champion to walk the world again
through you.

The bond between ancestor and living [[elf]] is holy. Your
ancestor doesn't speak to you or control your actions.
But as a [[Tairnadal]], you believe that they are with you—that your instincts and your reflexes are the ancestor
moving through you, telling you what to do. The closer you follow the path, the more guidance they provide,
helping you create new legends.

The folk of [[Khorvaire]] see your people as mercenaries and conquerors. But you don't care about gold or
personal glory. All you want is to let your ancestors
live again, and that means you need to perform deeds
worthy of champions. That drives you now: seeking out
adventures that will add to the legends of your patron.

You and your GM should develop the identity of your
ancestor. How did they fight? What were some of their
legendary deeds? Did they have a distinctive weapon
or favor a particular kind of magic? Equally important
is your relationship with the ancestor. Are you proud of
your ancestor and excited to live as they did, or is your
duty a burden?

Since the rise of [[Valenar]], [[half-elves|half-elf]] and even some
[[human]]s have sought to be inducted into the faith. But so
far the Keepers of the Past have declared that only [[elves|elf]]
can be revenants. Beyond the blood connection to the
ancestor, an elf communes with their ancestor during
trance, and half-elves can't enter this state. The Keepers say it can't be done, but perhaps you'll be the one to
prove them wrong. 

!! Symbol

The primary symbol of the faith is the zaelshin, an amulet that bears the seal of your patron ancestor and worn either as a brooch or embedded in the forehead of a
helmet. A devotee of the faith typically wears a veil—the
zaelta, or "spirit mask"—over their lower face while in
battle or performing rituals, so an opponent sees the
zaelshin rather than the living [[elf]]. 

The zaelshin is the symbol of the faith, but the holy
symbol used by a [[cleric]] is an object associated with their
personal ancestor. 

!! Rites

Services revolve around the stories of the ancestors,
commemorating their glorious deeds, as well as ritual
exercises and trance meditation. While resting, an elf
spends four hours in trance. The faithful spend this time
in communion with their ancestor, experiencing their
memories and contemplating their deeds. 

!! Temples

The nomadic [[Tairnadal]] elves don't raise permanent temples; a Keeper of the Past marks a circle on the ground with their blade, and the space within becomes sanctified for the service. The one major exception is the [[Temple of the Ages]] in [[Taer Valaestas]].
Spring Harbor is a bay off the coast of mainland [[Lhazaar Principalities]], near the town of [[Tantamar]]. It connects to the [[Eel Bay]].
In secret groves and shaded glens, tiny sprites with dragonfly wings flutter. For all their [[fey]] splendor, however, sprites lack warmth and compassion. They are aggressive and hardy warriors, taking severe measures to ward strangers away from their homes. Interlopers that come too close have their moral character judged, then are put to sleep or frightened off.

//''Forest Protectors.''// Sprites build little villages in the boughs of trees and willing [[treant]]s, in verdant glades brightened by moss, wild flowers, and toadstools. Wild nature thrives, and the sprites allow no trespassers. When intruders are spotted, the sprites lead them astray with ominous rustling from the bushes and distant snapping twigs. Creatures foolish enough to persist in intruding on a sprite's territory are stung with poisoned arrows and lulled into a senseless sleep. While they slumber, the sprites make good their escape, retreating to an even more secluded area of the forest.

//''Heart Seers.''// Sprites can sense whether a creature is good or evil by the sound and feeling of its beating heart. Weighing the balance of a creature's past actions, a sprite can tell whether its heart beats rapidly in love or flags in sorrow, or whether it is darkened by hate or greed. The sprite's power to perceive the heart always shows the truth, because the heart can't lie.

//''Poison Brewers.''// In their forest domains, sprites brew toxins, unguents, antidotes, and [[poison]]s, including the sleeping poison with which they coat their arrows. They venture far into the woods to harvest rare flowers, mosses, and fungi, sometimes crossing dangerous territory to do so. If desperate, sprites even steal their ingredients from the gardens of [[hag]]s.

//''Good-Hearted.''// Because they are judges of the heart and favor good creatures, sprites oppose the will of evil [[fey]] and pledge to thwart evil [[archfey]] at every turn. If they encounter adventurers on a quest to rid their forest of an evil fey creature or [[fiend]]ish menace, they will pledge their support and even come to their aid when the adventurers least expect it.

Unlike [[pixie]]s, sprites rarely indulge in frivolous merriment and fun. They are firm warriors, protectors, and judges, and their stern bent causes other [[fey]] to consider them overly dour and serious. However, fey that respect the sprites' territory find them staunch allies in times of trouble.
The Spur is a small cluster of mountains on the [[Nulakesh]] peninsula in [[Riedra]], just east of the [[Forest of Lurking Shadows]]. 
Objects viewed through a spyglass are magnified to twice their size.
If you place an object weighing no more than 1 pound (such as a shard of crystal, an egg, or a stone) above the tip of the staff while holding it, the object floats an inch from the staff's tip and remains there until it is removed or until the staff is no longer in your possession. The staff can have up to three such objects floating over its tip at any given time. While holding the staff, you can make one or more of the objects slowly spin or turn in place.
This wooden staff is decorated with bird carvings. It holds 10 charges, which recharge daily. While holding it, you can expend 1 charge from the staff and cause it to create one of the following sounds out to a range of 60 feet: a finch's chirp, a raven's caw, a duck's quack, a chicken's cluck, a goose's book, a loon's call, a turkey's gobble, a seagull's cry, an owl's hoot, or an eagle's shriek.
If a spellcaster is attuned to this staff, they can cast [[charm]], [[command]], or [[comprehend languages]] using their own power. 

In addition, the wielder gains advantage to resist [[enchantment]] spells cast on them. On a [[critical|full success]], the spell is reflected back onto the caster as if the staff wielder had cast the spell.
This slender, hollow quarterstaff is made of glass yet is as strong as oak. It weighs 3 pounds. You must be a spellcaster and attune to the staff to gain its benefits and cast its spells.

While holding the staff, you gain a small amount of passive protection against physical damage. In addition, you can cast [[mage armor]] and [[shield]] using your own power.
This wooden staff holds 10 charges, which recharge daily. While holding it, you can expend 1 charge from the staff and cause a flower to sprout from a patch of earth or soil within 5 feet of you, or from the staff itself. Unless you choose a specific kind of flower, the staff creates a mild-scented daisy. The flower is harmless and nonmagical, and it grows or withers as a normal flower would.
This staff can be wielded as a magic quarterstaff.

When you physically attack with this staff, you can [[push yourself]] to deal extra force damage to the target.

If you are a spellcaster, this staff allows you to cast the following spells using your own power: [[cone of cold]], [[fireball]], [[globe of invulnerability]], [[hold]], [[levitate]], [[lightning bolt]], [[magic missile]], [[ray of enfeeblement]], and [[wall of force]]. You also gain two additional spellcasting stress boxes.

You can choose to break the staff over your knee or against a solid surface, performing a retributive strike. The staff is destroyed and releases its magic in an explosion that expands to fill a 30-foot-radius sphere centered on it. You have a chance of instantly teleporting to a random [[plane]] of existence, avoiding the explosion.
While holding the staff, if you are a spellcaster, you can summon a cloud of swarming insects that you can control. This cloud persists for up to 10 minutes, and can have one of the following properties:

* Fills a 20-foot radius sphere, and consists of biting insects that can rapidly chew through anything in the area.
* Fills a 60-foot radius sphere, and consists of harmless but annoying flying insects that heavily obscure the area to all creatures except you.

You can use this staff twice per day before it needs to recharge. Overusing the staff may result in it being consumed by the summoned insects, destroying it.
A [[cleric]], [[druid]], or [[warlock]] can speak this staff's command word and make the head of the staff become that of an animate poisonous snake for 1 minute. The snake head can bite targets up to five feet away. By speaking the command word again, you return the staff to its normal inanimate form.

The snake head can be attacked while it is animate. If the head is incapacitated, the staff is destroyed. As long as it's not destroyed, the staff head recovers all damage when it reverts to its inanimate form.
A [[cleric]], [[druid]], or [[warlock]] can speak this staff's command word and throw the staff on the ground within 10 feet of them. The staff becomes a giant constrictor snake under their control. They can send mental commands to the snake as long as it is within 60 feet of them and they aren't incapacitated. By speaking the command word again, they return the staff to its normal form in a space formerly occupied by the snake.

If the snake is incapacitated, it dies and reverts to its staff form. The staff then shatters and is destroyed. If the snake reverts to staff form before being incapacitated, it recovers from all damage.
Creatures struck by this staff are afflicted with a magical withering that saps their strength and vigor for up to an hour.
The Starfire Dragon offers a
steady diet of entertainment accompanied by exquisite meals. In this case, however, the entertainment clearly takes a back seat to the food. Trying to compete in a crowded market, the Starfire Dragon's
owner, Amman Todav ([[human]]), has hired excellent cooks, and the
restaurant's menu offerings reflect the trouble he
has gone to. Todav's choice in entertainers is less
discriminating, however; he lost a good portion of
his hearing fighting in the [[Last War]], and judges performers more on their looks than the quality of their
performances. On a good night, the entertainment
ranks with the best [[Middle Menthis]] has to offer.
But the Starfire Dragon is gaining a reputation for
showcasing a great number of beautiful women with
mediocre singing voices.
One of [[Upper Menthis]]'s four theaters, the Stargazer Theater is located
on the top of Kelsa Spire, open to the sky. A grassy
park surrounds the open-air amphitheater, allowing audience members to picnic on the lawn if they
prefer. Once confined to the summer months, its
performance season was extended to the whole year
thanks to the weather-controlling powers of House
[[Lyrandar]]. Now, audiences can enjoy the warmth
of a spring or summer day whenever they visit the
Stargazer. Its repertoire focuses on classics with
family appeal. 
Starilaskur is a large city in [[Breland]], located near the shores of [[Lake Brey]] and the [[Brey River]]. The city's population has a higher percentage of devout Vassals of the [[Sovereign Host]] than most other Brelish cities. It is home to the Martial Temple of [[Dol Arrah]], an academy of war that specializes in honing the talents of Vassal [[cleric]]s and [[paladin]]s.

In 916 YK, during the peaceful festival of [[Sun's Blessing]], the armies of [[Thrane]] mounted a great assault against Starilaskur. Since that day, many [[Brelish|Breland]] curse Thrane and its dishonorable attack on this holiday.
The Starkwood is a forest in the northern mainland [[Lhazaar Principalities]].
The Starpeaks are a mountain chain in northern [[Aundair]], best known as the location of the Starpeaks Observatory. 

!! Starpeaks Observatory

Located high in the mountains, the Starpeaks Observatory was constructed in [[512 YK|Modern Age]] by King Daroon of [[Galifar]]. Daroon became fascinated with the practice of
charting the moons and stars, especially with the idea
that these charts could provide signs and portents for the
future. He had the observatory built, but he died before
construction was completed. 

The [[Arcane Congress]] recently claimed the Starpeaks Observatory. The complex had
been abandoned for centuries, and observers wonder
about the Arcane Congress’s sudden interest in the
ancient structure and its view of the heavens.
When looking through these spectacles, the constellations
in the night sky are outlined in white lines. While wearing
the spectacles, you have advantage when navigating using the stars. 
The fortress of Sterngate protects [[Breland]]
from [[Darguun]] invaders. It sits at the end of [[Marguul]] Pass,
and for more than six hundred years it has defended the
nation from marauding [[goblinoid]]s and other threats
from the [[Seawall Mountains]]. Today, the militia assigned
to Sterngate watches for Darguun warbands and sometimes has to drive such bands back into the mountains
from which they emerge. The frequency of such incursions, despite the [[Treaty of Thronehold]], demonstrates
the fragile nature of the current Darguun government.

Captain Toris, a [[changeling]] veteran of the [[Last War]], distinguished herself as a goblin
fighter to be reckoned with. Her hatred for goblinoids
sometimes clouds her judgment, but King [[Boranel|Boranel ir'Wynarn]] rests
easier with Sterngate under Toris's command. The militia
also keeps an eye on the [[Zilargo]] border, but relations with
the [[gnome]] nation are so good as to make strict vigilance
there unnecessary. 
You create a 20-foot-radius sphere of yellow, nauseating gas centered on a point within 100 feet. The cloud spreads around corners, and its area is heavily obscured. The cloud lingers in the air for 1-10 minutes, or until dispersed by a strong wind.

Each creature in the cloud that can't withstand the poison immediately stops everything and starts retching and reeling. Creatures that don't need to breathe or are immune to poison aren't affected.
The Stone Cage Mountains in the western reaches of the [[Demon Wastes]] are named for their peculiar shape; the peaks are thin and narrow, and resemble worked iron.
Stone [[giant]]s have granite-gray skin, gaunt features, and black, sunken eyes which gives them a stern countenance. For giants, they are surprisingly lithe and athletic. They tend to be reclusive and quiet. Average height: 18 ft.
This division of the [[Harmonious Shield]] of [[Riedra]] is typically assigned to defend fortresses or to battle the [[Akiak]] [[dwarves|dwarf]] or [[dromite]] hives—situations where durability is more important than speed. Recruits are selected for their strength and toughness, and are equipped with shields and armed with longswords or polearms.
This dismal fortress is a hub for negotiations between the [[Znir Pact]] [[gnoll]] mercenaries and their clients.

This keep was known as "Stubborn" when it was under [[Brelish|Breland]] control. See [[Droaamish History]].
Stonespur is an island in the [[Lhazaar Principalities]]. 

There are rumors that Baron [[Elar d'Thuranni]] has
been constructing secret [[enclave]]s for activities that
the [[Shadow Network|Thuranni]] wants to hide even from trusted
clients. Sailors claim to have seen a black citadel near
the island of Stonespur, protected with powerful
magic; this could be one of Elar’s secret fortresses.
''District Type:'' Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor
residences (220)<br/>
''First Impression:'' Balcony orchards line the exterior
towers of this quiet residential district, and small parks
are scattered throughout the district. A large number of
[[shifter]]s inhabit the area, and shifter children scamper
through the trees with great enthusiasm and agility.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Longstairs]] (northwest); [[North Market]] (southeast); [[North Towers]] (bridge, southwest); [[Boldrei's Hearth]] (bridge, south); [[Oakbridge]] (above)

Stoneyard is a peaceful residential district, notable
primarily for its significant [[shifter]] population and the
large number of orchards and parks scattered throughout the region. Shifter children often use the parks
for [[hrazhak]] matches, swinging through the trees and
racing through the grass. A [[druid]] named Teln ([[shifter]]) helps to maintain the foliage and tend to those injured in hrazhak; in exchange for his services, the locals provide for his needs. Teln follows the [[Gatekeeper|Gatekeepers]] tradition, and sends word to the [[Gatehouse]]
in [[Skysedge Park]] if he sees anything disturbing. 
''District Type:'' Warehouse district<br/>
''Buildings:'' Warehouses (50), poor trades (25), poor
services (50), poor residences (400)<br/>
''First Impression:'' Wide storage towers dominate
this district, surrounded by tenements and smaller
warehouses. The streets are full of wagons and
laborers hauling goods to and from the skydocks
of [[Precarious]].<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Callestan]] (northeast); [[Precarious]] (northwest); [[Fallen]] (south); [[Forgelight Towers]] (bridge, southeast); [[Ship's Towers]]/[[Sharn's Welcome]] (below and west); [[Stormhold]] (above); 

The Stores district has much in common with [[Precarious]]. However, the Stores is not actually built on
the cliff side, and the [[Watch|Sharn Watch]] focuses its attention
and resources on Precarious. The result is that the
Stores are slightly more dangerous than Precarious,
and smugglers are more likely to hide their goods
in these warehouses. The [[Boromar Clan]] has strong
interests in this district, and thus a considerable
[[halfling]] population can be found here. 
This boomerang is a ranged weapon carved from [[griffon]] bone and etched with a symbol of elemental air. When thrown at an enemy, on a hit, it emits a loud cracking sound like thunder and deals additional damage to the target.

After it is used this way, the magic in the boomerang is expended until it spends at least 1 hour inside a [[Lamannia]]n [[manifest zone]].
Storm [[giant]]s have pale purple-gray skin and hair, and glittering emerald eyes. Some rare storm giants are violet-skinned, with deep violet or blue-black hair and silvery gray or purple eyes. They are masters of the storm, able to hurl lightning bolts and control weather. They can be found deep beneath the waves of the [[Thunder Sea]]. Average height: 26 ft. 
Legends on wings, the Storm Guardians are reputed to
be a clan of [[blue dragon]]s that calls the [[tallest peak|Korrandar]] in [[Adar]]
home. Many believe these majestic beasts are responsible
for the storms that plague and defend Adar. [[Adarans]]
imagine that a draconic heart beats at the center of every
thunderhead that blows over the land of refuge. Those
Adarans are close to correct. 

In some ways like [[Rhashaak]], who guards the ruins of [[Haka'torvhak]] in [[Q'barra]], the Storm Guardians might be mythic figures, but they are real. They, however, have
not been corrupted by their time in [[Adar]] or [[Korrandar]].
Concerned with the protection of a realm shaped long
ago by [[dragon]] and [[couatl]] magic, the Storm Guardians
watch from above and below. They count among their number [[dragon turtle]]s and [[sea drake]]s that stalk the oceans around Adar. Such sea
dragons often attack any flotilla that contains more than
a few ships. Most of these dragons are aloof from mortal
concerns, but their hold in Korrandar contains what
could be considered the soul of Adar—the [[Teeth of the Three]].

The [[overlord]] imprisoned in [[Khyber shards|dragonshard]]
under Adar sleeps restlessly. It is wrath incarnate. The
[[rakshasa]]s name it [[Ran Iishiv]], the Unmaker, and one
could suppose that the [[Teeth of the Three]] are in place to
keep it quiescent. This isn't true, however, because the
[[dragon]]s would have other such devices to quiet other
great overlords. The truth is that the dragons foresaw a
time when Adar would serve as more than the prison of
a great [[fiend]]. 

The Storm Guardians live by their duty to guard
[[Korrandar]], and they are content to be legendary. While
some folk near Korrandar have built shrines to the Storm
Guardians and even lay valuables within as prayers for
peace, the Guardians do not communicate with mortals. Those
who climb Korrandar are rarely seen again. Though the
current [[Speaker of the Word|Chanaakar]] is a survivor of such a trek,
he does not speak about it, like other similar persons
from [[Adar]]'s history. 

''Getting the PCs Involved:'' One does not trifle with
[[dragon]]s. Still, a problem that can't be solved by mortal
magic might require the characters to make a treacherous
ascent into [[Korrandar]]'s storm clouds to ask the Storm
Guardians for aid.

Though silent on the subject, [[Chanaakar]] is actually
on the lookout for adventurers who will fulfill the next
part of the [[Draconic Prophecy]] in [[Adar]]. These intrepid
explorers, he knows, will uncover secrets of the [[dragon]]s
and [[couatl]]s among the ruins that still riddle Adar.
Through hints and general wisdom, Chanaakar can
guide such individuals, and they might discover a way to
defend Adar better than it is now.

''Argunastrisek'' is an ancient [[blue dragon]] who seeks and punishes those who violate ancient draconic sites. She does so by drawing explorers to her, being
particularly murderous toward mere treasure hunters.
However, those on a righteous path set by [[Chanaakar]] and
the Storm Guardians might be able to persuade her to
help. She is curious about upright mortals. Securing her aid can be one of the
challenges the Storm Guardians actually set for the PCs
before allowing them onto [[Korrandar]]. 
A 20-foot-radius sphere of whirling air springs into existence, centered on a point you choose within 150 feet. The sphere remains for up to 1 minute, or until your concentration breaks. Each creature in the sphere is buffeted by strong winds.

Until the spell ends, every few seconds, you can cause a bolt of lightning to leap from the center of the sphere toward one creature you choose within 60 feet of the center. You have advantage on the attempt if the target is in the sphere. If struck, a target takes a great deal of lightning damage.
This [[eldritch machine]] can only be controlled by creatures that bear the [[Mark of Storm]]. Storm spires allow
House [[Lyrandar]] to influence the weather, which can be
a boon for the local population or a curse if a Lyrandar
baron chooses to demand payment for ideal weather. 
In order to attune to this magic item, you must possess the [[Mark of Storm]].

When you fall while wearing this ring, you descend 10 feet per second and take no damage from falling.
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' The houses of this district are
extremely solid, and almost seem more like miniature fortresses than residences. The people tend to
be serious and suspicious. Children are kept off the
streets, and strangers are watched closely.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Underlook]] (northwest); the [[Bazaar]] (northeast); [[Rattlestone]] (south); [[Warden Towers]] (bridge, southeast); the [[Stores]] (below); [[Daggerwatch]] (above)

[[Clifftop]] solicitors, overseers from the workhouses
in [[Redstone]] and the [[Bazaar]], and other successful
crafters and merchants have made their homes in
Stormhold. A number of manors built by the aristocratic founding families of [[Sharn]] in the first days of
the city can be found in this district, but most of the
powerful families have moved on to [[Central Plateau]]
or [[Skyway]] in recent centuries. A handful of the [[Sixty]]
great families still live in this district, however. The
townhouses of Stormhold are generally cramped
and uncomfortable, but the walls are thick and the
doors stout. Stormholders take security extremely
seriously, and the powerful families hire [[Deneith]]
mercenaries to supplement the [[Watch|Sharn Watch]] patrols. 
This island city at the mouth of [[Scions Sound]] has been the seat of House [[Lyrandar]] for 600 years, and Queen [[Aurala|Aurala ir'Wynarn]] allows the house a free rein in governing the isle. It is the finest resort and vacation spot in [[Khorvaire]]. Spies, charlatans, sailors, and house agents all have a place in Stormhome. Even though the island escaped the devastation wrought during the [[Last War]], it
remains a hotbed for clandestine activities.

[[Lyrandar]] [[wizard]]s use magic to continuously alter
Stormhome's weather, turning the otherwise bleak and
storm-blasted location into a temperate island getaway. 

Stormhome remains part of [[Aundair]] but is left to
its own devices, making it an ideal retreat for foreign
dignitaries and nobles. Even Queen Aurala seems
enchanted with the place, spending a portion of each
year in the company of Lyrandar’s [[baron|Esravash d'Lyrandar]], swapping
secrets and rumors to the dismay of both their advisors. As the premier destination for the wealthy and
powerful, Stormhome has emerged as a hotbed of
intrigue, and agents come to broker alliances and
gather intelligence about their rivals.
The Stormhorn Clan guards an [[Age of Demons]] ruin in the [[Q'barra]]n jungle near the [[Hope]] town of [[Wyrmwatch]]. [[Mishva Garodya Stormhorn]] hails from this clan.

{{dragonborn clanhold}}
Once a haven for pirates and smugglers,
Stormreach has become a thriving port that serves
as the passage to the [[Xen'drik]] interior. All the [[dragonmarked house]]s have outposts in the city, and it is home
to refugees, renegades, criminals, and others who have
no place on the other continents. The city is ruled by the
council of [[Storm Lord]]s, who hold absolute power. As
Stormreach is built on the foundations of an ancient [[giant]] city, ruins abound around and below the city. Some
fear that if the city continues to expand, the growth will
trigger an ancient curse. But for now, Stormreach is a
prosperous community and a gateway to adventure. 
This luxurious tower serves
as the private estate of [[Dantian d'Lyrandar]]. Dantian, a
trade minister for House [[Lyrandar]], is second in
influence to his aunt Solia. While [[Solia d'Lyrandar]]
spends most of her time in the [[house enclave|Lyrandar Enclave (Dragon Towers)]] in
[[Dragon Towers]], Dantian prefers the luxury of
Stormwind Keep. The house often uses Dantian's
estate when hosting gala events or entertaining
important guests. Dantian himself is a diplomatic
individual, but primarily interested in furthering
the economic and political power of his house. He
has little interest in dealing with adventurers or
other members of the lower classes. 
Stormwreck Bay lies off the coast of [[Q'barra]] and the southern tip of the [[Mror Holds]], as well as [[Tempest Isle]].
This blue silk mask with golden beads lining the hem covers the wearer's nose and mouth. While worn, the user can alter their voice to mimic anyone they have heard before. They can also mimic simple sounds with great accuracy.
Stout [[halfling]]s are hardier than average and have
some resistance to poison. Some say that stouts have
[[dwarven|dwarf]] blood. In some places, these halflings
are called stronghearts.
The Straits of Orthoss lie between the islands of [[Farlnen]] and [[Orthoss]] in the [[Lhazaar Principalities]]. They connect the [[Lhazaar Sea]] to the [[Bitter Sea]].
The Straits of [[Port Verge]] lie between the islands of [[Questor]] and [[Trebaz Sinara]] in the [[Lhazaar Principalities]]. It connects the [[Lhazaar Sea]] to the [[Eel Bay]].
The Straits of Shargon form the western edge of the [[Thunder Sea]], and include the dangerous [[Shargon's Teeth]] chain of islands that make ocean travel between [[Sharn]] and [[Stormreach]] treacherous without a [[sahuagin]] guide.
The number
is an exaggeration, but this single ward of [[Korranberg]]
has more shrines and temples than some [[Khorvairian|Khorvaire]]
cities. Every member of the [[Sovereign Host]] and the
[[Dark Six]] is represented here, in addition to multiple
temples dedicated to both pantheons as a whole. A
sanctuary of the [[Path of Light]] sees [[gnome]]s meditate
alongside [[kalashtar]] mentors, and the [[Blood of Vol]] has
a sanguinary where folk peacefully contemplate the
divinity within. Shrines to the [[Cults of the Dragon Below]] and to the [[overlord]]s of the [[Age of Demons]] can be found here, though worshipers who take their
beliefs too seriously face the wrath of the [[Trust]]. The
centerpiece of the street is the Codex Vault, the largest temple to [[Aureon]] in [[Khorvaire]].
This branch of the [[Unity]] of [[Riedra]] tends to the infrastructure
of the nation, construction, villages, bastions, roads, and
the [[monolith|hanbalani alta]]s. It is based in the bastion of [[Dul Borin]]
under the leadership of Lord Laneth ([[hashalaq]] [[Inspired]] [[shaper]]). 
You suggest a course of activity (limited to a sentence or two) and magically influence a creature you can see within 30 feet that can hear and understand you. Creatures that can't be charmed are immune to this effect. The suggestion must be worded in such a manner as to make the course of action sound reasonable. Asking the creature to stab itself, throw itself onto a spear, immolate itself, or do some other obviously harmful act ends the spell.

If the target does not have the resolve to resist your suggestion, it pursues the course of action you described to the best of its ability. The suggested course of action can continue for the entire duration (up to 8 hours). If the suggested activity can be completed in a shorter time, the spell ends when the subject finishes what it was asked to do.

You can also specify conditions that will trigger a special activity during the duration. For example, you might suggest that a knight give her warhorse to the first beggar she meets. If the condition isn't met before the spell expires, the activity isn't performed.

If you or any of your companions damage the target, the spell ends.
//I know the secrets that shape the world. With three words, I can kill with fire; with four, ice. But why should I, when I can bend you to my will? The Queen of Shadows reveals your secrets—do as I command, or all will learn what you've hidden.//
<div align="right">—A cultist of Sul Khatesh</div>

The overlord Sul Khatesh embodies the fear of both magic
and of secrets... for what is magic but secret knowledge? She
whispers insights to students at [[Arcanix]] and inspires evokers
working on weapons of war. But she also encourages people to
keep secrets, and then sets misery in motion when she reveals
these secrets to those who would use them.

//''The Queen of Shadows.''// An entity of shadow, Sul Khatesh can assume any form. Her favored shape is a twelve-foot-tall humanoid figure draped in a flowing, hooded robe formed of swirling mist and clinging shadow.

Sul Khatesh's heart [[demiplane]] is the [[Tower of Shadows]].

//''Cultists and Minions.''// Sul Khatesh's cults often begin as transactional. [[Wizard|wizard]]s or would-be [[warlock]]s invoke her with rituals, offering blood or
service in exchange for power and knowledge. Sul Khatesh has
no need of mortal souls, but a cultist might believe they have
sworn their soul to her. What truly delights her is when magic is
used for cruel purposes or in ways that cause people to fear it. Covens devoted to the Queen of Shadows use dark magic and fear to dominate whole communities, while isolated warlocks make pacts with Sul Khatesh to pursue power and revenge. By sharing her power in this way, the overlord perpetuates the image of the evil warlock, inciting fear that strengthens the Keeper of Secrets even more.

While cultists may forge a bond for rational reasons, the more
people that draw on her gifts, the more that corruption can
creep in. Members of the Court of Shadows believe that they
are part of a shadow kingdom that becomes more real with
each day; some members even believe they can see its towers
and spires overlapping the structures of the real world. Other
cults may become obsessed with their own power, embracing
the idea that those who can do magic are superior to those who
cannot—that it is their right to prey on these mundane cattle.
Given her love of secrets, the cults of Sul Khatesh are almost
always hidden and subtle. While magic usually plays a role in
her cults, she could certainly have one that deals purely with
blackmail and the manipulation of secrets.

Sul Khatesh's chief agent among the [[Lords of Dust]] is the [[rakshasa]] [[Hektula]], who serves as the librarian in the demonic citadel of [[Ashtakala]]. Known as the First Scribe, Hektula presides over an immense trove of arcane knowledge and artifacts.
Lord Sulakhal of the Silver Shield is a [[du'ulora]] [[Inspired]] [[psi warror]] and the commander of the military forces of [[Dar Jin]]. He is rarely seen
on the streets, but should a major riot or other disruption occur, the du'ulora champion will appear to take personal action.
The Sulat League was an [[Age of Giants]] civilization of titans in [[Xen'drik]]. They specialized in elemental binding and magebreeding.
They created the [[drow]] as living weapons to deal with
rebellious [[elves|elf]], and it's thought that [[fire giant]]s are remnants
of the Sulat.
The [[du'ulora]] champion Lord Sulatesh commands
[[Kintam Ulakhun]], the great fortress that watches [[Kasshta Keep]] from the edge of [[Syrkarn]]. Sulatesh has commanded this front since the war began—he was present at
the first disastrous siege of Kasshta, and he still thirsts
for vengeance. Sulatesh is a cruel being who takes great
pleasure in torturing his foes, both on the battlefield
and in his dungeons. The [[kalashtar]] and agents of the
[[Summit Road]] who fall into his hands suffer for weeks
before being allowed to die. While the tortures Sulatesh
devises are horrifying, this obsession could provide the
time rescuers need to liberate a prisoner, or it could give
prisoners time to devise a plan of escape.

Although cruel to his foes, Sulatesh treats his troops
well and is loved by his soldiers. Many are disturbed by
the practice of torture, but most accept their lord's explanation that it is a necessary tool to purge the prisoners of the //altavars// that possess them. A few, however, are deeply
troubled by what they have seen, and these doubters could
come to the aid of prisoners in [[Kintam Ulakhun]]. 
//"You heard I can get you into [[Adar]]? Well aren't you a bold one—[[Brelish|Breland]] I'd bet from the swagger, the accent, and that gods-awful blue. How'd you and your whelp friends survive long enough to get here, boy? And even if I could get you to Adar, why would I? Go home. You've been misled."//
<div align="right">—[[Murephan]], Summit Road guide</div>

Some dissidents within [[Riedra]] live long enough to
escape, but few places in [[Sarlona]] are welcoming, and getting into [[Adar]] is not easy. Occasionally, [[Adaran|Adarans]] warriors
engage in sorties to bring the war to the [[Inspired]] or to get
to other lands. Adar's defenders also need intelligence on
their enemies' movements along their borders. In sum, a
need for spies and a secret way across Adar's boundary is
obvious. A clandestine organization called the Summit
Road, or simply "the Road," performs these services. 

!! Joining the Summit Road

Entry into the Summit Road's ranks is a mixed blessing, and few take to this arduous pursuit lightly. But the Summit Road doesn't just trust those who would join it
because they pass a cursory magical examination. Membership on the Road is only offered to hardy souls who have proven themselves capable and
daring, steadfast and honorable. Such persons must be
loyal to [[Adar]] and foes of the land's enemies. Such agents
are often called Summit Road guides, or just guides.

All sorts of people work for the Summit Road. Their common
bond is a desire to fight for freedom and willingness to face, confound, and even kill Riedran authorities. Members are
prepared to die before allowing themselves to be captured.
About half of the members of the Road are spellcasters or
[[psionic|psionics]] manifesters of some sort, since these talents aid in fooling
and defending against the forces of the [[Inspired]].

!! Summit Road Benefits

At its core, the Summit Road is a group of highly skilled
infiltrators and sneaks. They form a network of individuals and small groups, [[Adarans]] and non-Adarans, willing to shelter those on the move. All hope to thwart
the [[Inspired]] and to free as many awakened [[Riedrans]] as
possible. Many in [[Sarlona]] sympathize with the Summit
Road, or would if they knew about it.

The large number of spellcasters and
manifesters in the ranks of the Summit Road means
easy access to services provided by such persons. Healing
and spells or powers that remove mind-affecting magic are accessible within a day, as long as the spell or power requested is [[rare-tier|spell tier]] or lower. Guides
must provide costly material components. Similarly, if
they provide the materials and can show a great need,
Summit Road guides can get a [[magic item]] made for cost.
Those who abuse these services for personal gain quickly
find that their fellow guides won't provide such aid.

Information is one of the Summit Road's strong suits, particularly when it comes to [[Adar]]'s borders. Many of the Road's members and sympathizers are
knowledgeable and capable information brokers. It has maps of Riedran fortifications near Adar, diagrams of regular patrol routes, lists of sympathizers, and so on. Usually, when a group of guides goes on a mission for the Road, the leader (trailblazer) assigning the task supplies all relevant intelligence available for and pertinent to the job, including destination, contacts, and expected challenges. Known information gaps are always revealed. Of course, sometimes the job is to gather intelligence, in which case some or all of these facts can be "gaps." 

As Summit Road guides, characters have
access to a wide variety of travel modes and routes, as
well as known safe houses and hiding spots. Secret routes
through underground passages and psionic portals are
all available. NPCs sympathetic to the cause might also
provide aid. Access to all such benefits is given on a need
basis—important and sensitive information and locations
are reserved for trusted guides. 

!! Playing a Summit Road Guide

You are the pathfinder on a way to safety and hope from a land
that has lost all freedom. Sometimes you are a chirurgeon's
knife, infiltrating diseased territory to lead someone in need
from [[Riedra]] to [[Adar]]. Other times you are the watchman's
eyes, observing to discern truth and useful knowledge
about the enemy. And when need be, you are the merciful
arm of death that removes those who cannot be saved.

Trust is vital to you and your team members, and to
those who direct you. Misplaced faith is death or worse.
Without one another, Summit Road guides can't survive—each provides essential skills. Your team is only as strong as its weakest member, and when failing can cost you your
mind, nobody wants to be the chink in the group's armor.

You do much of your work incognito. Whether you're
actually masked or disguised depends on the work and
the timing, but letting someone see your face who doesn't
need to do so is a mistake. Many persons you aid never
learn your name or what you look like.

When you joined the Summit Road, you did it because you thought it was right or because you had nowhere else to go. Regardless of your initial motivations, the risks you take in infiltrating [[Riedra]]n territory or the [[Syrk|Syrkarn]] frontier aren't part of some romantic fantasy. Worst of all, people back home in [[Adar]] might respect what you do, but they're always wondering if the person who comes home is really you.

Still, you are a hero. You can see it in the eyes of the
Riedran defector you smuggle through [[Zi'til'natek]] and
into central [[Adar]]. He has seen horrors, you know, and now
he'll have a hard life, but he'll be free. Sure, the monks
will watch him, but he'll marry a valley woman and
raise his children to be whatever they want to be. And he
won't have to serve beings he has come to know as evil and
alien. You created that life for him, and, the [[Light|Path of Light]] willing,
you'll survive long enough to do it for many others.

One day, the [[Inspired]] will kill you if you're lucky, or
capture you if you're not. Between now and then is the
time to make them pay and take from them what they
never deserved to own. Maybe you'll live to see the
Inspired fall. Until then, your homage to the [[Path of Light]] is walking the Summit Road. 

!!! Combat

You evade enemies until you must engage,
using three "weapons" taught to every Summit Road guide:
information, stealth, and speed. First off, know your enemy
and your path as well as you can before you set out. "Prepare for the worst, but travel light" is a maxim for those on the
Summit Road. Stealth means going only where you have to,
and doing so unnoticed. Speak with whom you must, but
reveal only that which must be told. Speed means getting
whatever you came for and getting out. If you must engage
an enemy, kill quickly, letting that be a form of mercy to
those doing their duty for the [[Inspired]]. If you want to send
a message with your violence, send it directly to the [[Chosen]]
or the Inspired—the [[soldiers|Harmonious Shield]] and [[common folk|Riedrans]] of [[Riedra]] are slaves, and they don't deserve further pain. 

!!! Advancement

The Summit Road recruited you because you showed the ability to do what needs to be done. You exemplify some combination of stealth, fighting prowess, and resistance to mind control. You also showed a willingness to do thankless work in nerve-rattling conditions.

New recruits face intense scrutiny and dangerous missions. Green guides are given information and shelter as needed and no more. As you show dependability and
good performance, along with a willingness to undergo
regular and rigorous testing to guard against [[mind seed]] and
other sorts of infiltration, you can be inducted further
into the Road's internal structure, and you become privy
to more sensitive information.

Rank isn't formal on the Summit Road—respect must be
earned and kept through merit. If leadership is for you, the
current leaders, called trailblazers, must make sure you're
not an infiltrator. Once you do get in, you can assign teams
to special operations and oversee information-gathering.
Staying in the field is always an option, but doing so means
never being truly on the inside. 

!!! Missions

Working the Summit Road is hard but simple. You get missions from trailblazers and you perform them.

A Summit Road guide might be asked to do any
number of tasks. Helping a dissident cross into [[Adar]] is
usual, but guides might be assigned to take out a group of
monsters that have moved into one of the organization's
secret passages through or under Adar's mountains.
Scouting enemy positions and removing obstacles for
another team's mission, or even providing a distraction,
can be part of a guide's duties.

Sometimes a Summit Road guide is taken prisoner.
Other guides are dispatched to help the prisoner escape
or, if they must, end the unfortunate's life. 

!!! Responsibilities

The Summit Road expects you
to devote your time to the organization's needs, taking
missions whenever they are available. You can engage in
other activities as long as they don't endanger the Road,
and finding and planning your own missions is looked
upon favorably when such undertakings prove successful
and meaningful. However, long absences raise suspicions,
especially when they're not prearranged. Such a hiatus
can lose a member some standing and might require them
to undergo interrogation and a fresh [[mind probe]].

!! The Summit Road in the World

"//Those guides, they're hard and strange. Not normal, you know? Why anyone would do what they do is beyond me. Still, if any come here needing a roof or some food, my house is open to them. My wife's grandfather was Riedran...//"
<div align="right">—Deepak Ruudraksh, Adaran herder</div>

As Summit Road guides, the PCs are revolutionaries and soldiers—perhaps in an unwinnable war. The Road requires a stoic resolve and unswerving commitment. It also offers a great deal of freedom. Guides can plan and
execute their own missions, gaining that much more glory
when the undertaking works in favor of [[Adar]]. Further, the
characters can rest assured that if they're captured, their
allies in the Road won't sit idle. Members of the Summit
Road are like a strange family where interdependence is
as important as good steel and the right spell.

!!! Organization

When [[Adar]] shut its borders after repelling the initial attacks of the [[Inspired]], the early focus was on fortifying all points of entry. During that time the
[[Shroud]] was built. The masters of the monastery-fortresses,
especially [[Kasshta Keep]], [[Malshashar]], and [[Shalquar]],
quickly found they needed a way to get into and out of Adar.
This need was the genesis of the Summit Road.

[[Malshashar]] has always had friendly contact with the
[[dromite]]s of [[Zi'til'natek]]. Zi'til'natek's inhabitants had no
love for [[Riedra]]'s new leaders. Preliminary crossings were
through Zi'til'natek and underground ways constructed for
the purpose. In this time, many would-be Riedrans still
opposed the [[Inspired]] and sought escape. [[Adaran|Adarans]] warriors
also took the fight to the Inspired on a small scale.

Conditions on both sides of the mountains soon stabilized, more [[Riedrans]] becoming loyalists and [[Adarans]] becoming more defensive and insular. The Summit Road
evolved. Failed missions and subverted guides proved the
need for strong will among Road members. Supernatural
defenses were essential parts of any team, so the remaining leaders began to favor mystical recruits. During this growth phase, the Road also put forth tendrils, establishing bases in [[dromite]] city-hives under [[Riedra]] and even in the [[Syrk|Syrkarn]] port of [[Ardhmen]]. 

Summit Road guides call their leaders trailblazers—
those who find new ways. New, probationary, and regular
members have always been called guides, and most Road
agents are guides for years before being named trailblazers.
Guides have differing levels of esteem in the organization,
but no official rank differentiates them. Those with less
experience usually defer to those with more. Advancement
is based purely on merit and is totally optional—under
the control of existing leaders. No guide is ever forced to
become a trailblazer, which can be a sedentary job.

Masters of the temple-keeps in [[Adar]] are nominally in
control of the Summit Road. It is they who often ask the
trailblazers to undertake some task for the good of Adar.
The trailblazers in turn assign guides to a task, or even
oversee a mission directly. Most trailblazers remain in Adar
however, so it is harder for the Road to be subverted. 

The Road is highly decentralized, like [[Adar]]'s entire
defense infrastructure. Guides must speak or learn Riedran, and they learn special phrases and sign language that help them identify one another and communicate
secretly. Few outside the Summit Road know its underground language, and unauthorized persons who show such knowledge are often met with hostility.

Cells of the Road operate independently. A group of
guides is a highly specialized team composed of four to
six members. Each member has skills that complement
those of the others in the group. In this way, each Summit
Road squad is a strong support system for its members.

Information is shared between groups by [[psionic|psionics]], magical, and mundane means, and teams change operations centers as needs dictate.
All teams are expected to take circuitous routes from
their starting points to prevent those points from being
located by [[Riedra]]n patrols. 

!!! NPC Reactions

[[Adarans]] admire the courage and
skills of Summit Road guides, and those who recognize
a guide are often friendly. Only in the smallest Adaran
thorp might a group of guides find no aid. However, most
Summit Road guides keep their affiliation secret, and few
people can tell a guide on the Summit Road from other
hardened folk who travel the wilds of Adar.

Many of the Road's members are outsiders in Adaran
society. Some are known criminals. Others are members of
races that rarely work on Adar's surface but that also dislike
the [[Inspired]], such as [[dromite]]s. Because of this unusual
membership, a few inside [[Adar]] fear Summit Road guides.
One slip, these people say, could open the door to the
[[Inspired]] or worse. Such persons might be unfriendly.

Agents of [[Dvaarnava]], [[Shalquar]], [[Malshashar]], and
[[Kasshta Keep]] closely watch members of the Summit
Road, but they are usually indifferent. Their job is to
catch any unusual behavior among the guides, not to help
or hinder.

Loyal [[Riedrans]] have no love for Summit Road
guides, believing they are kidnappers and assassins in the
service of fiendish magicians. Such Riedrans who discern
a guide's true connections are invariably hostile. 

!! Summit Road Adventures

Summit Road guides are facilitators, spies, soldiers, and,
well, guides. If somebody needs to get into [[Adar]] from the
outside, it's likely that the Summit Road is going to be
involved somehow. Guides are meant to be a "first contact" point between foreigners and the land of refuge, but
they also serve as foils for [[Riedran|Riedrans]] patriots and a way for
[[Adaran|Adarans]] characters to move into the wider world.

From rescue missions, to strikes against Riedran
fortifications, to expeditions to uncover potentially
useful artifacts from [[Sarlona]]'s bygone ages, the Summit
Road can be a motivating force behind an entire campaign. Outsiders and foreigners can earn the respect of
Adarans by serving the Road, so foreign characters could
do worse than to have the Road as an ally or a patron.
Players who like action and intrigue mixed with a good
dose of paranoia should find the Summit Road to be a
fine home for their PCs. 

The Summit Road has the potential to be a group of allies or foes, or even a patron. Initial
encounters with guides are always edgy as they get to know
foreign characters or raw recruits. Everything is a test
at that stage. If pushed, Summit Road guides don't take
chances—they strike with deadly efficiency against those
they see as risks to the Summit Road. 

''Example Encounter:'' [[Murephan]] and his sidekick [[Kelki]] are in [[Ardhmen]] in [[Syrkarn]] looking for the PCs, having heard of them through intermediaries. The rogue [[Chosen]] wants to size up the foreigners and see why they're in [[Sarlona]]. If he
likes what he sees, he offers the characters their first test
run for the Summit Road. Alternatively, Murephan and
Kelki are about to put some inexperienced Adaran guides
to the test by pretending to be a couple of questionable
wanderers in Adar's wilderness. 
The spellcaster completes a foul ritual using the blood of a [[humanoid]] killed within the last 24 hours, calling forth between four and eight [[tier 1|creature tier]] [[demon]]s (such as [[quasit]]s or [[dretch]]es) from a [[demiplane]] of [[Khyber]] or another [[plane]] of existence. 

The DM chooses the demons, and you (the spellcaster) choose the unoccupied spaces you can see within 60 feet where they appear. A summoned demon disappears when it is incapacitated or when the spell ends after 1 hour (or your concentration breaks).

The demons are hostile to all creatures, including you. The demons pursue and attack the nearest non-demons to the best of their ability.

As part of casting the spell, you can form a circle on the ground with the blood used as a material component. The circle is large enough to make a 2-foot-radius circle around you. While the spell lasts, the summoned demons can't cross the circle or harm it, and they can't target anyone within it. 

If you are able to cast legendary-tier spells, you can cast this as such to double the number of demons summoned.
This item appears to be a longsword hilt. While grasping the hilt, you can cause a blade of pure radiance to spring into existence, or make the blade disappear. 

This sword deals radiant damage instead of slashing damage. It deals extra damage to [[Mabar]]an [[undead]].

The sword's luminous blade emits bright light in a 15-foot radius and dim light for an additional 15 feet. The light is considered sunlight. While the blade persists, you can expand or reduce its radius of bright and dim light, to a maximum of 30 feet each or a minimum of 10 feet each.
''Date: '' [[15 Therendor|Khorvaire calendar]]

The festival of [[Dol Arrah]], the Sovereign of Honor and Light, is a day of peace, a time for enemies to set aside their differences and commune. This tradition continued throughout the [[Last War]], when most
armies kept the peace on Sun's Blessing. However, in
916 YK the armies of [[Thrane]] conducted a great assault
on the [[Brelish|Breland]] city of [[Starilaskur]] on Sun's Blessing,
and many Brelish curse Thrane on this holiday.

Most of [[Sharn]] observes Sun's Blessing, and a
grand celebration takes place at the [[Pavilion of the Host]] in [[Sovereign Towers]]. It is one of the safest days to wander the city, and a time when rivals often try
to resolve their conflicts peacefully. 
The arrival of the [[kalashtar]] in [[Adar]] 1,800 years ago was the beginning of the end
for the [[Twelve Kingdoms|Sarlonan province]] of [[Sarlona]]. War raged in [[Dal Quor]], and the enemies of the kalashtar were determined to bring the struggle to [[Eberron]]. The quori that served [[il-Lashtavar]] (The [[Dreaming Dark]]) were not prepared to sacrifice their power and individuality as the kalashtar spirits
had, and this prevented them from directly taking hosts.
But they could still manipulate mortals through dreams.
They could give a paranoid king nightmares of a conspiracy, leading him to persecute his own people. They could
send a charismatic general visions of justice, urging him
to rise up against a tyrannical king. They could send two
people dreams of love, ultimately forming a relationship
and a child more suited to quori manipulation.

Starting 1,500 years ago, they did all this and more.
Using fear, prejudice, and greed, the [[quori]] threw the
kingdoms into chaos. For two hundred years, Sarlona
was shaken by war. As one nation became stable, another
would attack it, driven by racial prejudice or religious
zealotry, or a new rebel group would arise within its borders. Terrible magic was unleashed. No [[human]] nation had the power to rival the [[giant]]s of [[Xen'drik]], but the [[wizard]]s of [[Khunan]] and the [[sorcerer]]s of [[Corvagura]] were
mighty in their own right, and the lords of [[Ohr Kaluun]]
were masters of [[divine|divine magic]] and [[arcane magic]]. This period was
known as the Sundering, and nations were shattered in
its wake.


The [[quori]] used their power to set the Sundering in
motion, and so they used their power to end it. After two
hundred years of careful manipulation, they managed to
establish bloodlines across [[Sarlona]] whose members were
especially vulnerable to quori manipulation and possession—the predecessors of what are today known as the
[[Chosen]]. They began a campaign of dreams, promising
salvation to those who would follow their newly forged
"[[Path of Inspiration]]." Soon, the first [[Inspired]] appeared.
These beings had great charisma and impressive [[psychic powers|psionics]], and to the people of the war-torn lands they
were literally the answer to their dreams. The Inspired
brought an end to many feuds, frequently by uniting
former enemies against carefully selected scapegoats. The
[[yuan-ti]] of [[Syrkarn]], the [[shulassakar]] of [[Khalesh]], the [[oni]] of [[Borunan]], and the mystics of [[Ohr Kaluun]] were
all targeted in this way. Many were destroyed or enslaved;
others fled to [[Adar]], [[Xen'drik]], or [[Khorvaire]]. Throughout
these struggles, the [[Inspired]] extolled the virtues of unity.
Within two centuries, the old traditions of the twelve
kingdoms had been abolished. Where once twelve proud
nations stood, now only one remained: [[Riedra]]. 

!! The Age of Unity

Over the course of the next thousand years, the [[Inspired]]
tightened their grip on the people of [[Riedra]], slowly
expunging the remaining traces of the old cultures. The
Inspired moved slowly, making changes with each generation until no one alive remembered a time when life was
any different. Through psychology, indoctrination, and
control of dreams, the quori shaped a nation of slaves
whose people were grateful for their chains, believing that
the Inspired were their only shield against the horrors of 
the past and the outside world
''District Type: ''Average residences<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' The few mansions in this district
are on the east side, where they get the best view of
the sunrise over the cliffs. Most of the people in this
neighborhood are successful, but not tremendously
wealthy; they are the shopkeepers, hirelings, and
servants who see to the needs of the rich and powerful
inhabitants of the quarter.<br/>
''Social Class: ''Middle class<br/>
''Neighbors:'' [[Highhold]] (northwest); [[Ocean View]] (east); [[Seventh Tower]] (bridge, north); [[University District]] (bridge, northeast); [[Kenton]] (below)

Sunrise is a quiet, unremarkable district. It is exceptionally clean, and one of the safer places to live. However, inhabitants still have to comply with [[Tavick's|Upper Tavick's Landing]] Laws, which can prove to be quite annoying for adventurers. 
This 1-foot-long, gold-tipped, iron rod glows brightly when struck. It clearly illuminates a 30-foot radius and provides shadowy illumination in a 60-foot radius. It glows for 6 hours, after which the gold tip is burned out and worthless.
The Sunscale Clan guards an [[Age of Demons]] ruin in the eastern tip of the [[Q'barra]]n jungle.

{{dragonborn clanhold}}
This province of [[Syrkarn]] is the most sparsely populated of the four, with much of its land covered by the [[Andnemun Desert]]. The crystalline ores used for [[crysteel]] are mined here, as well as iron and other ores. In addition to the [[human]] and [[eneko]] population, a small band of [[stone giant]] nomads known as the Sandstriders are rumored to roam the Andnemun.
Lord Surasek, supreme pathfinder of the [[Guiding Path]], guides the nation of [[Riedra]] from the metropolis of [[Durat Tal]] in [[Corvagura]]. As Eidolon of the Sphere of Surasek, he also holds final authority over the governing of nearby [[Dar Myan]] and [[Dul Kabana]]. He is one of only three [[kalaraq]] [[quori]] who spend most of their time in their [[Inspired]] vessels on [[Eberron]] rather than scheming in the [[Region of Dreams|Dal Quor]]; the other two are Lord [[Zoratesh]] and Lady [[Sharadhuna]].
Within this satchel are a number of items that can be used by any adventurer to help endure the hardships of the harsh wilderness. Each part of the satchel can be put to good use if the person carrying it knows basic survival skills. The features of the satchel are as follows:

* The strap of the satchel can be removed. Speaking the word "rope" changes it to 50 ft. of hemp rope. Speaking the word "chain" transforms it into 20 ft. of chain. Speaking the word "strap" returns it to its ordinary form.
* One of the pouches within the satchel holds a single branch. Each morning, this branch grows <<dr 1d4>> [[goodberries|goodberry]] up to a maximum of 10. These goodberries accelerate healing and provide sustenance for an entire day.
* Attached to the front of the satchel is a small, round yellow orb. If it is removed from the satchel, it begins to glow. This casts bright light in a 15-foot radius and dim light for another 15 feet.
* Speaking the word "shelter" causes the satchel to spring up into a tent large enough to hold 4 human-sized creatures comfortably. Any items that were contained in the bag when this command word is spoken are stacked up neatly in the corner of the tent. Speaking "satchel" causes this item to return to normal, but only if the contents of the tent can be contained within the satchel.
This ruin of an ancient [[Dhakaan]]i city is today populated by [[troll]]s and [[ogre]]s. The ruins and the surrounding lands are the domain of the [[warlord]] [[Taal'chib]].
Swiftstride [[shifter]]s are graceful and quick. Typically
feline in nature, swiftstride shifters are often aloof and
difficult to pin down physically or socially. 
This sword was sculpted from [[Mabar]]an [[quintessence]], and hungers for the spark of life.

When you attack a creature with this magic weapon and score a [[critical|full success]], that target takes extra necrotic damage if it isn't a [[construct]] or an [[undead]]. You simultaneously rapidly recover from minor injury.
When this [[devil]]ish weapon wounds a living creature, green steam issues from the wounds. Injuries dealt with this weapon cannot be healed through magical means, and excruciating necrotic energy widens the wounds for a few minutes after they are dealt. 
''District Type:'' Garrison<br/>
''Buildings:'' Garrison building, temple ([[Dol Arrah]]), average lodging (20), poor lodging (4),
upscale food (8), average food (15), poor food (15),
upscale trades (15), average trades (33), poor trades
(28), average services (40), average residences (160),
poor residences (40)<br/>
''First Impression:'' Officers of the Watch march to
and fro, others stand at attention, and still others
drill for combat. Shouted commands and marching
songs fill the air.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Sovereign Towers]] (northeast); [[Dragon Towers]] (southwest); [[Dava Gate]] (northwest); [[Smoky Towers]] (bridge, south); [[Olladra's Kitchen]] (below); [[Skysedge Park]] (above)

Sword Point houses the [[Sharn Watch]] [[garrison|Sword Point Garrison]] responsible for maintaining order throughout the [[Central Plateau]] and [[Northedge]], with just over 500 guards in residence or assigned to duty in the district. 
This sprawling complex
links five adjacent towers into an enormous fortresslike structure. Thick walls crowned with battlements
connect the towers along the periphery, while a huge
platform connects all five towers to form an open
yard for drills, all a half-mile above the ground.
The ranking officer at Sword Point, Commander
[[Belew Yorgan]],
is a harsh but effective leader. He tries to curry favor
with the [[Citadel|King's Citadel]], the [[dragonmarked house]]s, the [[city council|Sharn Council]], and the temple leadership all at the same
time. As a direct result, he commits most of his
resources and attention to the [[Upper|Upper Central]] and [[Middle Central]] districts, leaving [[Lower Central]] under protected and [[Northedge]] practically ignored. 
(Tyrannosaurus Rex)

This enormous predator terrorizes all other creatures in its territory. Despite its size and weight, a swordtooth titan is a swift runner. It chases anything it thinks it can eat, and there are few creatures it won't try to devour whole. While prowling for substantial prey, a titan subsists on carrion, and on any smaller creatures that try to dart in to steal its meal.

These creatures are native to parts of [[Talenta Plains]], and are sometimes hunted by [[Valenar]] raiders for sport.
The [[daelkyr]] create living tools and weapons, objects formed from chitin, bone, and muscle. Many of these items bond to their bearer, drawing sustenance from the creature attuned to them; for this reason, they are commonly called "symbionts." Though symbionts are living tools, they are not necessarily considered sentient creatures.

Most of these items, once they bond to their bearer, cannot be removed even if the bearer desires it. The only way to end the "attunement" and remove a symbiont is to use an effect or spell that ends a curse.

!! Symbionts

<<list-links-article "[tag{!!title}sort[title]]">>
! The Shadow

''Color:'' Smoky gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Shadow|Mark of Shadow]]<br/>
''Associated Plane:'' [[Mabar]]

Sypheros is a dim [[moon]], and people often find it difficult to spot in the night sky. Recent observations using powerful spyglasses have confirmed that a jagged crack runs down the center of the moon, as if the moon is splitting in two. Many believe that children born in the month of Sypheros inherit a shifty, untrustworthy nature, and parents often seek to time pregnancies to avoid this month. However, the [[druid]]s say that the children of Sypheros are not evil; rather, they are comfortable with the shadows and can face them without fear.
Imagine a perfect blue sky, stretching
off into the horizon. There's no sign
of the sun, but the sky is clear and
bright, and the floating crystal
towers gleam as if caught in a
sunbeam. A warm, gentle breeze
brushes over you, and there's a faint sound of distant chimes. You feel absolutely calm; in this moment, all anger melts away.

This is Syrania, the Azure
Sky. While people often
think of its floating towers
and crystal spires—the
same magic that sustains
the great towers of [[Sharn]]—Syrania is the plane of
peace and all that flourishes
in peaceful times: commerce,
education, reflection. There are
no vast armies here, no dangerous
monsters. The magic of Syrania allows
all creatures to communicate and dispels
aggression. As such, it's a common crossroads for beings who
do travel the planes, and the [[Immeasurable Market]] of Syrania
is the safest place to interact with [[fiend]]s, [[slaad]]i, and other
extraplanar beings. However, while bloodshed is rare in the
Azure Sky, you can still make deadly enemies; mortals are
always wise to tread lightly in the cities of [[angel]]s.

!! Universal Properties

Syrania encourages communication and negotiation, and
grants all creatures the gift of flight. The [[Open Sky]] of Syrania
is an endless void, and without flight, you could fall indefinitely;
fortunately, all creatures find that they can move through the
air just as naturally as walking.

* //''Unburdened.''// A creature can fly as easily as they can walk, unless it already fly faster than it can walk, in which case its existing flight speed is enhanced.
* //''Gentle Thoughts.''// A creature has advantage when using gentle persuasion and disadvantage when using intimidation.
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.
* //''Universal Understanding.''// A creature can understand the literal meaning of any spoken language that it hears and can understand any written language that it can see. This doesn't decode secret messages or reveal the meaning of symbols that aren't part of a written language.
* //''Absolute Peace.''// Creatures have disadvantage to attack or cast damaging spells, and suffer 1 additional stress whenever suffering consequences for aggressive actions.

!! Denizens

Syrania is a curiously empty plane. While the [[Immeasurable Market]] is always bustling, most of this traffic is comprised of creatures from other planes. Syrania's other spires have comparatively few inhabitants—not so few that they feel
desolate or barren, just enough so that it always feels slow
and peaceful. There's no need for people to perform menial
tasks in Syrania, nor does this plane have [[manifestation]]s to populate it; damaged structures gradually repair themselves,
and litter and debris slowly dissolve.

The native inhabitants of Syrania are winged humanoid
[[immortal]]s, collectively referred to as [[angel]]s, though they
differ from those of other planes in some important ways.
While they're considered to be [[celestial]]s, most angels of
Syrania are neutral in alignment. They aren't champions
of justice or bringers of hope; rather, they're observers
and scholars, defined by their [[domain|Syranian domain]] of study. The lesser
immortals are simply referred to as angels, while the higher
orders have titles—[[virtue]]s, [[dominion]]s, and [[throne]]s. These
higher angels are bound to the contemplation of a particular
concept, based on their domain, and devote their existence
to contemplating and understanding it. Some believe that
it's through this contemplation that the concept continues
to exist (though most inhabitants of other places—mortal
and immortal alike—consider this to be highly unlikely). The
appearance of Syranian angels is influenced by their domain,
so the Dominion of Storms might be wreathed in lightning
and have wings formed of storm clouds, while the Dominion
of Trees could have bark for skin and moss for hair.

Unlike lesser angels and visitors to Syrania, virtues,
dominions, and thrones are immune to the effects of Syrania's
//Absolute Peace// property, and are capable of taking aggressive
action to defend Syrania, or when pursuing their domain—so
a virtue of war could fight. However, they always try to find
nonviolent or nonlethal solutions to threats.

!!! Lesser Angels 

Lesser angels are the least of the [[immortal]]s of Syrania. They have
no names or domains and are generally interchangeable;
they serve as scribes and guides, performing minor tasks.
They do not engage in combat and their statistics are largely
inconsequential.

!!! Greater Angels

[[Virtue|virtue]]s act as assistants and emissaries of the [[dominion]]s.

[[Dominion|dominion]]s focus on a very specific aspect of a single [[domain|Syranian domain]], like "wolves" or "swords".

The greatest angels of Syrania are the [[throne]]s. There's a
single throne for each domain, and they have a profound
knowledge of their entire domain.

!! Layers

Rather than being divided into separate [[layer]]s in the same way
as many other [[plane]]s, Syrania is comprised of crystal spires
floating in the seemingly infinite void of the [[Open Sky]]. The
space within a spire may be far larger than it appears from the
outside, whether the spire leads to the multiple towers of the
[[University]] or the vast expanse of the [[Immeasurable Market]].
However, all of these regions are connected through the
medium of the spires and the Open Sky.

The majority of spires aren't all that vast. Most are the seats
of a [[dominion]], who is attended by a few [[virtue]]s and additional
angels as needed. These have the general flavor of a library
or museum, with additional facilities to allow the dominion to
practice or study its subject. The spire of a dominion of nature
has gardens, while the tower of a dominion of war has displays
of armor and a dueling chamber. But these are still places for
study and contemplation; the seat of a dominion of war isn't an
impenetrable fortress, and the spire of a dominion of nature
has cultivated gardens, not the wilderness one finds in [[Irian]]
and [[Lamannia]].

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

!! Planar Manifestations

Here are some ways that Syrania affects the Material Plane.

!!! Manifest Zones

[[Manifest zone|manifest zone]]s tied to Syrania can reflect one or more of
the properties of the plane, but often in more limited ways.
The manifest zone containing the city of [[Sharn]] has a lesser
aspect of the //Unburdened// property; it doesn't grant flight,
but it enhances effects that grant flight or levitation, enabling
the skycoaches and flying buttresses that support the towers.
A zone that has the //Absolute Peace// property might encourage peaceful
behavior without actively enforcing it. Temples are often
built on Syranian zones with the //Absolute Peace// property, while universities and House [[Sivis]] search for zones with the
//Universal Understanding// property.

In addition to standard manifest zones, there are a few
portals to the [[Immeasurable Market]] hidden in [[Eberron]]. These
take many forms; a back door could be an actual door, a large
chest, or a shallow pool of water. A back door only opens under
specific circumstances: when opened with a special key, when
used at a certain time, when blood is spilled, or when a heart
is broken. Most who discover these portals jealously guard
them; a merchant with access to the Immeasurable Market can
acquire remarkable goods!

!!! Coterminous and Remote

When Syrania is coterminous, goodwill spreads across the
world and people find it nearly impossible to contemplate
violence. These periods brought welcome moments of peace
during the [[Last War]], and there are stories of enemy soldiers
coming together to share stories or play games. During these
times, the //Absolute Peace// and //Gentle Thoughts// properties
apply across [[Eberron]]. However, if a creature is attacked,
harmed by a spell, or witnesses its friends being harmed, that
creature is unaffected by //Absolute Peace// for a few minutes. The
influence of Syrania limits violence, but once conflicts break
out, it can't stop them.

While Syrania is coterminous, the skies are clear and the
weather is calm—it's believed that if you're in a Syranian
[[manifest zone]] during this time, it's possible to fly into the [[Open Sky]] simply by flying straight up to the edge of the sky. This may
be apocryphal or only true in certain manifest zones... there's
only one way to find out!

When Syrania is remote, the skies are gray and the sun can't
be seen. People feel quarrelsome and it's difficult to come to an
understanding. Creatures have disadvantage when using gentle persuasion and advantage when using intimidation. Outside of Syranian manifest zones, all flying speeds
are reduced.

Traditionally, Syrania is coterminous on the 9th day of
the month of [[Rhaan|Khorvaire calendar]], once every ten years. Followers of the
Sovereign Host celebrate this day every year as [[Boldrei's Feast]],
a time for people to come together and resolve their grievances;
the tenth-year coterminous celebrations are especially grand.
Syrania is remote once every ten years on the same day, five
years after the coterminous period. This day is still celebrated,
as people make a conscious effort not to give into anger.

!!! Syranian Artifacts

Syrania's greatest treasure is the [[Immeasurable Market]] itself,
with all manner of exotic goods available there. Many of the
[[dominion]]s of Syrania are more interested in collecting relics
tied to their domain than in creating them, but there are a few
who do both; the limits of what they can produce are tied to
their domain.

Other Syranian items are usually linked to the plane's
universal properties. The power of Syrania enhances flight;
there's a stall in the Market that sells [[wings of flying]] that
resemble the wings of an [[angel]]. Things that encourage or
enforce peace may come from Syrania, along with items that
enhance a character's diplomatic ability.

!! Syranian Stories

Wandering angels can stumble into any story, and the
[[Immeasurable Market]] is a boon for adventurers lucky enough
to find it. The [[Last Resort]] can be an interesting place for a
powerful enemy to arrange a meeting; what safer place for neutral negotiations than on the [[plane]] of peace? Given the versatility and opportunities available in the Immeasurable Market, a DM may wish to limit access to Syrania; even if
adventurers find a back door, it could open only at certain
times or require a particular sacrifice.

//''Curious Virtue.''// After the adventurers acquire a curious
object that defies any attempt to divine its powers and history,
a hireling or observer is revealed to be a Syranian [[angel]] that's
observing the adventurers. The item is a powerful extraplanar
artifact; the [[virtue]] doesn't want to take it from them, but rather,
to observe the effect it has on its bearer and the world around
them. The virtue is the key to unlocking the powers of this
powerful artifact... but how do the characters feel about being
subjects of a celestial case study?

//''Pursuit through the Market.''// An enemy of the adventurers
has been making use of powerful and exotic weapons—[[Shavaran|Shavarath]] explosives, a [[Mabar]]an shadow-blade, [[Fernia]]-forged
armor. The adventurers corner the supplier, but they escape
through a portal, and when the characters pursue, they find
themselves in the [[Immeasurable Market]]. Can they find their
foe in the Market? If so, how will they deal with them in a realm
where violence is all but impossible?

//''Celestial Knowledge.''// The adventurers need to obtain a
particularly obscure piece of information, and the only being
that might possess it is a [[dominion]] of knowledge in Syrania.
Can the adventurers find a way to reach the celestial's library
spire? What does it want in exchange for its knowledge—
and will the adventurers try to pay this price, or steal the
information they need?
Each [[virtue]], [[dominion]], and [[throne]] of [[Syrania]] is dedicated to
contemplation and mastery of a domain. Here are
some example domains.

* Arcana
* Art
* Commerce
* Death
* Knowledge
* Life
* Nature
* War
Five thousand years before the arrival of the [[Inspired]] and the present age, the nations now known collectively as Syrkarn were the jewels in the imperial crown of old
[[Sarlona]]. Today, only ancient stonework and half-forgotten
legends mark the fall, passing, and rebirth of this land.
Still, to those who have inherited this seemingly inhospitable kingdom, Syrkarn offers a gift denied to both the warring nations of the past and the Inspired-dominated
lands of the present. To its [[people|Syrks]], Syrkarn is the promise of freedom.

Syrkarn is a vast expanse of arid plains where four nations
of old once stood. Its history is rich with conflict and
conquest, and it is one of the few places in [[Sarlona]] where
the devastating effects of the ancient [[magewars|Sundering]] can still
be seen, untouched by [[Inspired]] reconstruction. A land
surrounded by [[Riedra]] yet distinct from it, Syrkarn has
long been left to its own devices for reasons that none but
the Inspired understand.

Nearly all settlements in Syrkarn are agricultural
centers—communal farmsteads (//daabi// in the Giant
tongue) that trap the windblown soil of the steppes
behind vast networks of berms and stone walls. However,
nearly a third of Syrkarn's population lives on the open
steppes. Though most are nomadic herders or hunters, a
distinct class of traders (mostly [[eneko]]) are the lifeblood
of commerce across the nation. Regular trade roads
carry goods, laborers, and knowledge between the larger
settlements, allowing the [[Syrks]] to maintain a social
infrastructure that belies the land's isolation.

!! Land of the Far Horizon

Syrkarn is an arid landscape of harsh deserts, lush grasslands, and endless steppes sloping up from the southern extent of the [[Sea of Rage]]. Its population consists of an
almost equal mix of Sarlonan [[human]] clans and tribes of [[eneko]]—the mongrel [[ogre]]s who trace their lineage back to the nation of [[Borunan]]. 

Though the climate and the isolated life of this
land are never easy, the coastal steppes and inland
savannah of Syrkarn offer limitless range for animals
and agriculture. Herds of wild bison and domesticated
goats, deer, and horses roam the grasslands, while
cultivated fields of oat grass and flax spread across the
[[Itzaina|Khunan]] plains and the steppes of the [[Lamecha]] lowlands.
The natives grow a range of vegetable crops, including the gnarled root known as [[sepse]], native to Sarlona and prized for its high nutritional value. Exotic spices
found nowhere outside Sarlona thrive in the heat of
the savannah, as does [[dreamlily]]. Use of the drug is
rare among the [[Syrk|Syrks]] humans, but the [[eneko]] (who are
immune to dreamlily's narcotic effects) grow it for its
medicinal value. Harvests are hard in some years, but
the clans and tribes of Syrkarn know bounty more often
than not. 

Though the ruins of great cities dot the landscape, modern-day Syrkarn is predominantly a land of hamlets, villages, and nomadic town sites. The remnants
of [[human]] cities are common in the former lands of
[[Mae-Kree]], [[Sunyagir]], and [[Lamecha]], but the plains
and savannah that were once [[Khunan]] are marked exclusively by the ruins of the [[yuan-ti]]. [[Shulassakar|shulassakar]] and yuan-ti ruins are especially common on the [[Hailana Islands]], said to be the site from which the yuan-ti launched
their desperate voyage to [[Argonnessen]] and left their
homeland behind. 

[[Wild zone|wild zone]]s linked to [[Fernia]], [[Risia]], and especially [[Lamannia]] are found throughout this land. Like all of [[Sarlona]], Syrkarn is beset by storms whose force borders on the unnatural, and
planar disturbances flare and flood across the steppes
like unnatural wellsprings. Still, these rifts are seldom
as haunting or destructive as the [[reality storm]]s of the
[[Tundra|Tashana Tundra]]. The prominent planar connection in Syrkarn
is the [[Whitewater]], the crystal-clear lake believed to
mark a [[manifest zone]] linked to [[Lamannia]]. 

!! Getting There

As with any other destination in [[Sarlona]], travel to
Syrkarn is never undertaken lightly. The direct sea route
from eastern [[Khorvaire]] covers the entire length of
the [[Sea of Rage]]. Ships embarking from Khorvaire's western shores must ply the [[Barren Sea]] and the [[Sea of Lost Souls]]. In either case, the journey is long, and ships
must pass through the waters of unwelcoming [[Riedra]].
Most ships traveling to Syrkarn are privateers from
the [[Lhazaar|Lhazaar Principalities]] isles making trade runs, and the majority
of adventurers arriving in Sarlona take passage on a
Lhazaar ship. The privateers' destination is almost always the
southern port of [[Ardhmen]].

Attempting to land an unauthorized ship in [[Riedra]]n-controlled
territory is extremely dangerous. As a result, travelers
who have secret dealings often enter Riedra across the
Syrkarn frontier. Likewise, [[kalashtar]] pilgrims and
refugee Riedrans seeking to escape the gaze of the
[[Thousand Eyes]] usually make their way to [[Khorvaire]] by
way of Syrkarn. 

Khorvairian ships traveling east often stop at
[[Stormreach]] before returning to [[Sharn]], seeking to maximize their profits on the long voyage with a quick pickup of [[Xen'drik]] goods. Those [[eneko]] who leave Syrkarn
typically book passage on that route, seeking to experience the lands of their forgotten [[giant]] explorers.

!! Five Common Syrkarn Legends

# ''Syrkarn is free.'' Though nominally a protectorate of [[Riedra]], Syrkarn and its people owe no fealty to that land or its [[Inspired]] overlords. When occasional muttering chalks this fact up only to Riedra's apparent lack of interest in Syrkarn. a pint or two of [[ustah]] and a toast to the past will drown it out.
# ''In the past, greatness lingers.'' The [[eneko]] are descendants of [[ogre]]s and [[giant]]s, the latter thought to be explorers from ancient [[Xen'drik]]. From this lineage, the mongrel tribes believe that the blood of both the mighty titans of Xen'drik and the former [[oni]] [[sorcerer]]-kings of [[Sarlona]] flows in their veins.
# ''The yuan-ti once held this land in the iron grip of dark magic—and seek to do so again.'' The [[yuan-ti]] empire that rose in the ruins of [[Khunan]] is one of the few pieces of old [[Sarlona]]n history still predominant in the age of [[Riedra]]. Some speculate that this is so because Riedra wants it that way, and many Syrks question whether the yuan-ti are a force to be fought along with the [[Inspired]], or a potential ally in the fight against Sarlona's masters.
# ''The giant-based faiths of the eneko hide dark secrets.'' The [[eneko]] tribes follow religious traditions drawn from the faith of ancient [[Xen'drik]], [[Rushemé|Sovereign Host]]. However, it is said that dark cults among the "mongrel ogres" use the veneration of [[Karrak]] (thought to be an aspect of the [[Keeper]]) to conceal the practice of dark magic.
# ''Beneath the beauty of Syrkarn, dark things abide.'' No one who has ridden the [[Itzaina|Khunan]] range or spent a night within sight of the [[Whitewater]] can deny the natural splendor that is Syrkarn. At the same time, whispered rumors speak of a nameless darkness in the desert, and of voices that call to those who walk the plains alone. Some who seek to define this darkness speak of connections between the fragmentary legends of the [[yuan-ti]] and the lore of the [[Age of Demons]]. What the truth is, none can say. 

!! Who Rules Syrkarn

According to the [[Unity]] of [[Riedra]], Syrkarn is a protectorate of that nation, and ostensibly owes fealty to Riedra and the [[Inspired]]. In truth, however, the Inspired's last act of governance in Syrkarn was to order the land emptied of its [[human]] population in the aftermath of a victorious purge of the [[yuan-ti]] more than twelve centuries ago.

"Sahar" is a general term of leadership common among both humans and [[eneko]], but it can cover a wide range of power. The sahar of a nomadic tribe might rule only two dozen people, half of them her immediate family. The sahar of a large settlement might rule a mixed population of a thousand humans and eneko, and have ultimate authority over security, trade, and commerce in a wide region. 

In larger settlements, sahar are usually elected to
fixed-year terms, the exact length of which is set by
tradition. Among the tribes and clanholds, leadership is a matter of strength or will, with warriors, spellcasters, or manifesters of [[psionics]] often taking up the mantle of power.
Whether by social accident or design, no central leadership exists in Syrkarn, though the sahar of [[Nderitese]]—the territory's largest settlement—is
sometimes asked to broker disputes between other settlements and larger clans.

Smaller disagreements on trade, tariffs, and power
sharing are typically handled by the time-honored tradition of threats and force, but the reality of Syrkarn means that its people typically have little reason to fight.
Resources and land are plentiful, and the common culture
forged by [[eneko]] and [[human]] has created social customs and
a rule of law unheard of in agrarian tribal societies. 

However, those Riedran exiles who monitor the
activities of the [[Inspired]] in Syrkarn often claim to see
signs of subtle manipulation of the clans and tribes that
hint of [[psionics]]. Rival chieftains who have long histories
of being at each other's throats will suddenly declare a
mutual commitment to peace and allegiance. Smaller
factions will suddenly gain tactical sophistication that
allows them to thwart the expansionist plans of more
powerful nomadic tribes, or force the larger settlements
into a defensive stance.

The least populous (and most mysterious) residents
of Syrkarn are the [[yuan-ti]]. Descended from the few of
their kind who did not flee to [[Argonnessen]] when their
nation was overthrown, these serpentfolk keep themselves well hidden. Even after twelve hundred years, the utter destruction of the yuan-ti at the command of the
[[Inspired]] remains a potent reminder of the power the
lords of [[Riedra]] can bring to bear. 

!! Foreign Relations

[[Syrks]] are content to leave others alone and hope for the
same in return. For all intents and purposes, [[Riedra]] is
the nation's only neighbor, and the monolithic and isolationist bent of that land means that Syrks frequently
define themselves as its antithesis. 

!!! Riedra

The [[Inspired]] in [[Riedra]] clearly have the resources and the
military might to take Syrkarn in a heartbeat, driving
its people into the sea if they so chose. Although desert
and mountain marks much of Syrkarn's inland frontier,
unlike [[Adar]], no natural or mystical defenses protect this
land from invasion.

The fact that the Inspired have chosen not to invade
suggests that they have strong reasons to leave Syrkarn
as it is. The [[Thousand Eyes]] has agents throughout the land, but these seem primarily focused on maintaining the status quo among the tribes and clans. Isolated skirmishes are sometimes made against the human exiles, but clear benefits can be seen in Riedra's allowing the exile clans to survive as a beacon to the like-minded. No matter how many exiles swell its population, vast Syrkarn
will never have the resources or the population to challenge
the [[Inspired]]. Better to have those who oppose Inspired rule
flee for the "freedom" of the barbarian frontier than to
disturb the Riedran peace. 

Riedran agents harass the [[eneko]] tribes with
greater frequency than they do the [[human]] clans. Some
speculate that this behavior marks a fear that the "mongrel ogres"
are more apt to pursue dark magic, as has been seen in
the recent rise of the [[Karrak]] cults. It is known that the
[[Horned Shadow]] has sought to recruit eneko from Syrkarn in recent years, but whether any connection exists between the rebellious [[oni]] and
the cults remains to be seen. 

More than anything else, [[Inspired]] agents seek signs
of magic use in Syrkarn. They are especially watchful
for any sign of the [[Heirs of Ohr Kaluun]] in the steppes
and the [[yuan-ti]] ruins. When it is found, the [[arcane|arcane magic]] is
exterminated. Riedra is intent on seeing that Syrkarn's
lost lore stays that way.

Sharing a desert border as it does with [[Borunan]],
Syrkarn has a more open relationship with the former
[[ogre]] kingdom than with the other Riedran provinces.
Just as the ogres made their way south centuries ago,
more than a few [[eneko]] make the trek north today. The
eneko in the [[Savage Legion|Taskaan Legion]] are drawn from the ranks
of such Syrk exiles. 

!!! Adar

The lands of the mountain refuge of [[Adar]] border Syrkarn to the
southeast, and the outposts of that frontier are firmly in
[[Inspired]] hands. For the Syrks of the border territories,
the land along [[Jathara Sound]], guarded by a series of
coastal forts, is merely another part of [[Riedra]], and that
nation's business with the folk of the distant mountains
is none of their concern.

However, for those Syrks who actively oppose the rule
of the [[Inspired]], the [[Adarans]] are brothers in arms. The
treacherous seas and inhospitable cliffs of [[Adar]] channel
those seeking to enter the mountain refuge to Syrkarn,
where they land at [[Ardhmen]] or the smaller fishing villages of the western coast. They then make their way
inland, crossing into Adar between Riedran outposts
and patrols.

Syrkarn is also the departure point for the goods that
[[Adarans]] trade to [[Khorvaire]], and a steady flow of couriers
passes along the [[Summit Road]] throughout the year.

!!! Other Nations

Outside of academic circles, few non-[[Sarlona]]ns even
know of the existence of Syrkarn. Unlike the [[Adar]]an
monks and the [[kalashtar]] who have established enclaves on
[[Khorvaire]], [[Syrks]] have little reason to leave their land.

Since the end of the [[Last War]], [[Lhazaar|Lhazaar Principalities]] traders have
made their way to [[Ardhmen]] in order to barter for spices
and [[dreamlily]]. However, with the [[Inspired]] now actively
directing trade between [[Riedra]] and [[Khorvaire]], Syrk
merchants are seeking contacts among the Riedrans,
hoping to broker more profitable trade in mainstream
Khorvaire. The merchants of the [[Lhazaar Principalities]]
have largely turned their own trade to Syrk art, antiquities, and textiles—their quality as high as Riedran goods, but their design incorporating an old-Sarlonan aesthetic
lost to Riedra. 

!! The Syrkarn Overlord

From fragments of [[yuan-ti]] lore and contemporary
human records, some scholars assert that a demonic [[overlord]]
exists in Syrkarn, possibly beneath the ruined yuan-ti
city of [[Sustrai Mor]]. The [[eneko]] [[Karrak]] cults are said to
be numerous within the wasted plain that surrounds the
ruins. Among the Syrk nomads, the city has a reputation
for being haunted or overrun with secret sects of yuan-ti.

Whatever the truth, the Syrks avoid the place.
Whether the [[Inspired]] or the [[Dreaming Dark]] have
reason to fear the might of a bound [[overlord]] is an open
question. It seems likely, though, that the Inspired's
unwillingness to risk the resources necessary to destroy the Syrkarn [[fiend]] drove the decision to simply empty that
land—denying the fiend (and its inevitable [[Lords of Dust]]
allies) the followers it would inevitably seek.

At the same time, the Inspired show little of the same
concern for the overlords thought to be trapped in the [[Tashara Tundra]]
and [[Adar]]. Perhaps the lords of [[Riedra]] have some plan for
keeping these other fiends in check, either before, or
preferably after, they run rampant in those lands. At the
same time, the fall of [[Khunan]] and the subsequent rise of
the yuan-ti suggests to some that the Syrk overlord was once
unbound—and that whatever act saw it put down might not
have bound it as strongly as the Inspired would like. 

Abel Varmanc, patron and leader of the [[Korranberg]] expedition that bore his name, has gained recent notice for his attempts to collect the fragmentary lore of old Sarlona
from Riedran merchants engaging in trade with [[Khorvaire]].
In academic papers and private debate, he has suggested
that some lingering power from the [[Age of Demons]] was not
only involved in the creation of the [[yuan-ti]], but also in the
destruction of [[Khunan]] that preceded that genesis. In his
view, oral traditions describing the legendary devastation of
Khunan bear an eerie similarity to the events in [[Thrane]] of
299 YK, when the rising of a terrible [[force|Bel Shalor]] bound since the
[[Age of Demons]] gave birth to a manifestation of [[Silver Flame]] through the
sacrifice of a [[couatl]] and the [[paladin]] [[Tira Miron]]. Whether
the destruction of Khunan was the result of a bound [[fiend]]'s
stirrings or of potent magic wielded by the Khunani in their
attempts to confine it once more, "Syrkarn" is the name the
legends give to that dark presence. 
The population of [[Syrkarn]] is largely a mix of [[eneko]]
and [[human]] clans descended from [[Riedran|Riedrans]] refugees.
Settlements dot the plains, and semi-nomadic clans wander regular
hunting grounds in the forests and river valleys with
the changing of the seasons. The clans and tribes both
see themselves as the only truly [[Sarlona]]n culture left on the continent—avoiding the stagnation of [[Riedra]]
and the rigid culture of [[Adar]] as they build their lives
in the shadows of the past. 

Whatever their race, Syrks are thoughtful and
hardworking folk who believe that celebration should be
the end result of all honest labor. Their love of freedom
leads Syrks to respect privacy and the individual, but they
balance this with a sense of community that allows them
to thrive in the sometimes hostile plains. A Syrk neither
seeks to lead nor to follow. He does the job to the best of
his ability, and expects the same in return from those he
trusts and depends on.

The love and celebration of freedom is central to the
Syrk spirit, and nearly all disputes between Syrks concern
obligation, restitution, or a sense that someone desires
power not rightly theirs. Such disputes are not infrequent,
but rarely lead to more than threatening standoffs.
Those unfamiliar with Syrk customs can sometimes
find themselves caught off guard when angrily accused
of some affront by a Syrk native. Those who don't know
the appropriate Syrk response (be fierce, be truthful,
and apologize when truth turns against you) sometimes
needlessly respond with violence that the other party
never anticipated.

Syrkarn is a rural and agrarian nation, but that
nation is built on the bones of old [[Sarlona]]. As a result,
Syrks appreciate art, architecture, and formal music that
contrasts with their humble lives. From field laborers
to nomadic hunters, Syrks take as much pride in their
appearance as they do their work and skill. Textiles are
one of the primary trades of Syrkarn, and those too
young or too old for harder labor spend their days at the
loom or with needle and thread.

Nearly a third of Syrk society leads some form
of nomadic life, but no great differences can be seen
between the Syrk nomads and their brethren who settle
in villages and towns. In fact, many Syrks live a cyclical
life—wandering the steppes in their youth, later settling in a community to raise children or pursue a formal
vocation, then breaking away to take up the life of a
nomad or trader in their twilight years.

Likewise , the harmony between [[Syrkarn]]'s two
main races is remarkable, given [[Sarlona]]'s long history
of conflict. Though the [[human]] clans and [[eneko]] tribes
maintain their own separate ways and traditions, little
sense of division exists between the races, and virtually
all settlements and nomadic groups feature members
of both races living alongside each other. Humans and
eneko often form lifelong romantic bonds, but they
cannot interbreed. Mixed couples do adopt orphaned kin
of either race.

Syrks typically define themselves by vocation and
deed. A majority of traders and herders happen to be
eneko; most farmers and artisans happen to be human.
Still, these happenstances are unimportant next to the
quality of the artisan's goods, the shot that brings a bison
down, or the strength that drives a plow. Syrks take great
pride in their work, and they spend as much time as that
work allows celebrating the wealth and heritage their land
has bequeathed them. 

!! Syrk Names and Speech

The [[eneko]] tribes typically use a first name and a clan name. Because clan names are fixed in number, eneko traveling outside their homeland often add their place of birth or vocation as a de facto third name.

//''Masculine Eneko:''// Alimbida, Ametzama, Baraxil, Eusko, Iker, Kaxen, Kusko, Perutxo, Txartiko, Urtungo.<br/>
//''Feminine Eneko:''// Agosti, Denlilla, Eninnuta, Immasa, Iziaka, Jhaszuurra, Nahia, Ospinu, Szagani, Urumea.<br/>
//''Eneko Clan:''// Dgatumdut, Galgalmemean, Garranan, Hrursaggat, Ididignaam, Lagaskiaker, Maraandun, Numanigar, Tartarredar, Tumagin.<br/>
//''Humans:''// Humans newly fled to [[Syrkarn]] bring
their names with them from [[Riedra|Riedrans]]. The long-established human clans maintain Riedran surnames, though human given names have evolved a Giant-inflected flavor over time.

!!! Phrases

The following turns of phrase are unique
to Syrkarn, and are expressed in both Giant and
Riedran.

* "//Serpent's eye.//" A catch-all expletive or curse, as in "The serpent's eye take you!"
* "//Arch-strong.//" "//Long as a column stands.//" General expressions of praise or commitment are often drawn from the long-lasting architecture of old Sarlona.
* "//Shackled.//" Cowardly, vacillating, a general term of contempt. All Syrks value freedom, and while the realm is far from lawless, being beholden to the will of others is seen as a sign of weakness. 

!! Syrk Religion

Derived as it is from [[Riedran|Riedrans]] refugees and their
descendants, [[Syrkarn]]'s human population is uniformly
contemptuous of the [[Path of Inspiration]]. Nearly half
of all human Syrks follow no gods at all, instead placing their faith and devotion in the land itself. For Syrk [[cleric]]s, the spirit of Syrkarn is treated as a neutral
force that provides access to some sparks of [[divine magic]].

In much of Syrkarn, humans have reclaimed the
worship of the [[Sovereign Host]] from contact with [[Lhaazarites|Lhazaar Principalities]]. At the same time, the [[eneko]] have always invoked
aspects of [[Arawai]] and [[Balinor]], naming these "Rowa of the
Enduring Trees" and "Banor the Bowhunter". Human Syrks
thus focus their own worship on Arawai and Balinor, with
this accidental meeting of traditions underpinning the
long-term social stability in the region. 

Among the [[eneko]], some worship [[Karrak]] the Final
Guardian. No analogous faith exists among the humans,
and Karrak's sects are among the few eneko-only enclaves
in [[Syrkarn]]. 

!! Syrk Style

A nation of farmers and hunters would seem an unlikely
place to seek the highest artistic traditions of an empire.
[[Syrkarn]] is the only place where the legacy of old [[Sarlona]]
still lives—a legacy that spreads through Syrk culture on
every level. 

!!! Art

The cloaks and clothing of the Syrks are decorated with
intricate line-art patterns in a style reminiscent of the
architecture of old [[Sarlona]]. The images are created
using long-lasting red and black inks created from the
berries and leaves of the hardy hilp bush. Given most
Syrks' dismissal (or outright distrust) of [[Riedra]], the
modern artistic style of that land, with its flowing lines
and curves, is all but unknown here. 

!!! Architecture

Because [[Syrkarn]] has never been subject to [[Inspired]]
rule, it has been spared the cultural purges the Inspired
used to build monolithic [[Riedra]] over the nations of old.
Syrkarn is thus one of the few places in Sarlona where a
significant portion of the architecture of the past survives. Across this land, derelict castles stand atop windswept tors, their stark lines seemingly thrust up from the
living rock. Where the villages of the [[eneko]] have
been built on the central plazas of the ruined cities that
came before them, ancient avenues and neighborhoods
(called "corners") still radiate out through the surrounding grasslands like ghostly spokes. Along isolated
mountain passes and long-lost wayroads, fortresses stand
whose foundations are as solid as when they were laid two
thousand years before.

Dominated by columns, straight lines, and square
arches, the architectural style of old [[Sarlona]] still affects
this land and its people. Even the most utilitarian structures are built to a standard of stark beauty, and whether of wood or stone, are typically buttressed,
arched, and reinforced to last a lifetime. The nomadic
tribes are no less inventive than their brethren in
Syrkarn's fixed settlements, building their mobile homes
from elaborate frameworks of interlocking poles and
light beams over which decorated hides are stretched
and sealed. 

!!! Cuisine

Food in [[Syrkarn]] is plentiful, well spiced, and served with
copious amounts of [[ustah]]—a potent liquor brewed from
honey and wild berries, reportedly from an ancient [[ogre]]
recipe. The demands of rural life limit the choices available to the Syrk palate, with meat, fruits, and vegetables (including the region's native [[sepse]]) all typically dried for storage and transport. However, Syrks treat cooking with the same reverence as their other arts, and need no excuse for a feast. 

!!! Fashion

True to Syrkarn's reputation as a land of freedom, the
fashions of its people encompass an eclectic range of
styles, and a remarkable artisanship can be seen in the
textiles, cloth, and weaving of Syrkarn. Among both
the [[eneko]] and the humans, a wild aesthetic
predominates, combining utilitarian function and the
simple beauty of old [[Sarlona]]n design.
A [[troll]] [[warlord]] of great age and
power, Taal'chib ("Skeleton Chief" or "Prince of Bones") rules the land around
the ruins of [[Suthar Draal]]. He is one of the oldest and
most loyal followers of the [[Daughters of Sora Kell]],
and his cadre of [[troll]]s, [[ogre]]s, and [[giant]]s is always at
the [[hag]]s’ disposal.
When this tabard is worn over armor, it completely disguises the fact that the user is wearing armor. All armor, including helmets, seems to disappear completely.
Taer Lian Doresh is a [[feyspire]], one of the cities of [[Thelanis]]. 

Long ago, the tyrant titan [[Cul'sir]] cursed the feyspire and cast it into [[Dal Quor]], after an ongoing revenge feud following the sacking of [[Shae Tirias Tolai]]. Caught in the transformation of the //Quor Tarai//, these [[eladrin]] became embodiments of classic nightmares, and ease their pain by spreading fear among mortals. The spire itself is a vision from nightmare, and no two people perceive it in the same way.

Taer Lian Doresh now exists between [[Dal Quor]] and the
Material Plane, hidden deep in the [[Whitepine Forest]] in the [[Lhazaar Principalities]]. The [[eladrin]] of this feyspire can freely pass to both planes, but other creatures can only enter Taer Lian Doresh and return to their plane of origin; they can't use it as a portal to
the other plane. Thus, [[quori]] and adventurers can walk the halls
of the Fading Dream together, but the quori can't cross over
to physically enter [[Eberron]] itself, nor can the denizens of the
Material Plane (including eladrin of other feyspires, humans,
and all other creatures of Eberron) enter Dal Quor.

!! Organization

The [[fey]] of the Fading Dream are led by an [[eladrin]] named ''Shan Lian Doresh''. This brooding king rarely leaves his [[feyspire]], watching the
world through the dreams of innocents and destroying lives with whispered secrets and terrible visions.

Seven Knights of Terror serve Shan Lian Doresh, each of which embodies
a particular primal fear. The shrouded sages, led by the [[night hag]] ''Santyriana'', are mystics and dream weavers.
The fortress of Taer Sadaen in [[Valenar]] was raised by the [[Aereni]] who settled these lands 10,000 years ago. According to legend, the citadel was the
site of a terrible battle between [[goblin]]s and [[elves|elf]]
shortly before those ancient settlers returned to [[Aerenal]]. The ruins of Taer Sadaen have never been found, and some say that the fortress was shifted out of the
world by a powerful elven curse. When the stars and
[[moon]]s properly align, Taer Sadaen is said to reappear
with that ancient battle still raging around its walls.

PCs traveling in [[Valenar]] might find themselves
in the right place at the right time when the fortress
crosses back into the mortal realm. Or, interests in
[[Aerenal]] or the [[Five Nations]] might have information
that points to the location of the fortress—and reasons
for the PCs to find it before the [[Valaes Tairn]] does.
Near the western edge of the [[Karrnwood]], the Winter Citadel rises through gray pines, the blue-white stone of its slender towers and delicate minarets sparkling in the light. Fragile bridges span the gaps between, giving the place the appearance of a crystalline web formed from ice. A steep ice wall surrounds the [[feyspire]]. Helmeted guards, their faces hidden behind grim visors, stand guard, watching for enemies and intruders alike.

When the spire is in [[Karrnath]], [[eladrin]] knights ride forth from the citadel in the dead of night on white horses, bringing winter’s breath to the
surrounding woods. Their passing freezes the needles
on the pines and leaves icy impressions of their
horses’ hooves in the ground. The riders are slender,
with pale skin and blue-white hair. Dressed in milky
white armor and armed with matching blades, they
brook no trespass on their lands, cutting down any
interlopers they find.

Taer Syraen is the seat of the [[Prince of Frost]], and is closely allied with the winter fey of the [[Moon Court]].
The [[elves|elf]] of [[Valenar]] have little love for cities, but
they recognize that their nation and their king require
a capital. Taer Valaestas is a walled city built with
military precision. The wall surrounding the city is
a massive thicket of [[bronzewood]] thorns. Its narrow
streets are designed to thwart attack by armored
forces, and its buildings are constructed of stone and
dense wood for strength and resistance to fire.

High King [[Shaeras Vadallia]] maintains his seat in Taer
Valaestas. Though unimpressive by the standards of other nations, the royal palace is the
most ostentatious structure in Valenar. High King
Vadallia’s quarters are austere, but the palace’s regal
courtyard with its towering columns evokes memories of the forests of [[Aerenal]] and the great city of [[Shae Cairdal]].

In addition to the royal palace, outposts of most [[dragonmarked house]]s, and a [[market|Peasants' Market]] where foreigners sell their wares, Taer Valaestas hosts the primary [[temple|Temple of the Ages]] of the [[Keepers of the Past|Spirits of the Past]] and a vast arena used for horse training, races, and other displays of equestrian skill. 
''Date: '' first [[Far|Khorvaire calendar]] of each month

The [[ir'Tain|ir'Tain family]]s are the richest and most powerful family in
[[Sharn]]. Each month, Lady [[Celyria ir'Tain]] holds a ball at
her [[Skyway]] mansion. The guest list defines the current
social order of the city; those families who hold permanent invitations, known as the [[Sixty]], are the de facto royalty of Sharn. Celyria does invite unusual guests and attractions each month, and an up-and-coming entertainer
or a renowned folk hero might catch her notice.
Tairnadal, also called wood elves, have keen senses and intuition, and their fleet feet carry them quickly and stealthily through their native forests. Their skin tends to be copperish in hue, sometimes with traces of green. Their hair tends toward browns and blacks, but it is occasionally blond or copper-colored. Their eyes are green, brown, or hazel. 

Tairnadal elves dedicate themselves to the arts of
war. The greatest heroes of the Tairnadal's many
wars—against [[giant]]s, [[dragon]]s, and the champions of
[[Dhakaan]]—live on after death, becoming the patron
ancestors of the Tairnadal. Upon reaching adulthood, a Tairnadal elf forms a bond with one of these ancestors and strives to follow in the footsteps of this [[ancestor|Spirits of the Past]], living as the patron did. In this way, the champion comes
to embody their ancestor, allowing the dead to live on.

The Tairnadal have three distinct lines: the [[Draleus Tairn]], the [[Silaes Tairn]], and the [[Valaes Tairn]]. All three lines roam the northern plains of [[Aerenal]], having left
the forest long ago, but the Valaes Tairn now reside
mostly in [[Valenar]], being the Tairnadal most often encountered in [[Khorvaire]]. Despite sharing a homeland
with the Aereni, the Tairnadal have distinct religious
traditions, revering their [[patron ancestor|Spirits of the Past]]s rather than
the [[Undying Court]].

In creating a Tairnadal character, including a Valenar
elf, think about your patron ancestor. Most Tairnadal
pursue the same class as their patron, so if your character is a [[wizard]], your ancestor was likely a legendary archmage. Was your ancestor a famous blademaster, a
stealthy hunter, or a war chanter? Were they chivalrous
or merciless? Bold or clever? Whatever their path, it
is your duty to follow their example. Is this something
you proudly embrace, or do you resist it? Do you know
another elf with the same patron ancestor, and what's
your relationship to that character? Do you know an elf
whose patron ancestor was a bitter rival of yours?

Also consider why you are traveling with a group of
player characters (who are presumably not also members of your war band) instead of serving with the Tairnadal. Do you experience visions of your patron ancestor driving you on a particular course? Are you pursuing
an epic quest that mirrors your ancestor's legendary
deeds? Are you seeking vengeance for the death of a
friend or ally? Or have you turned away from your people, either by choice or because of the actions of a rival? 

!!! Double-Bladed Scimitar

The double-bladed scimitar is the signature weapon of
[[Valenar]] elves. A haft of fine wood supports a long, curving blade on either end. Forged with techniques honed over centuries, these blades are strong, sharp, and
remarkably light. Each scimitar is a masterpiece, and as a result the double-bladed scimitar is an expensive weapon—few though ever have the opportunity to purchase one. A Valenar blade in the hands of a non-elf is generally assumed to have been stolen or looted from a fallen foe, and a Valenar elf might feel entitled to demand its return or challenge the bearer to prove they're worthy to wield it. 
This fortress houses both the
[[Sharn Watch]] and the elite [[Redcloak Battalion]]. While
slightly smaller than the [[Daggerwatch Garrison]], it
is far more heavily fortified and could withstand an
extended siege.
The people of the [[Talenta Plains]] have little interest in
political machinations. Stories say that they draw straws
to see who has to serve as an ambassador, but these
rumors are false. In truth, they fight duels, with the
losers being sent to the courts of the western nations.
Ambassador R’tannan attends diplomatic meetings and trade negotiations, but he is far more interested in gambling,
especially on the many races that occur in the city.

The Talenta embassy has no direct connection with the [[Boromar Clan]], House [[Ghallanda]], or House [[Jorasco]]. 
''Capital:'' [[Gatherhold]]<br/>
''Hallmarks:'' Dinosaurs, halflings, livestock

The [[halfling]]s of the Talenta Plains have no cities and no
industrialized magic, but they do have [[dinosaur]]s. The
halflings domesticated the dinosaurs of the plains and
use these creatures as mounts, livestock, and beasts
of burden. A sacred bond exists between a hunter and
mount, and few people are prepared to face a raging halfling barbarian riding a furious [[clawfoot]] raptor.

Talenta religion reveres spirits, both departed ancestors and natural spirits. Each tribe has a lath—a chieftain who guides the tribe—and shamans who consult
the spirits and choose the paths of migration.

In the past, the tribes stood alone, but during the Last
War, many halflings came together under [[Lathon Halpum]] to defend their land. Halpum won recognition for
the Plains as one of the [[Thronehold nations|Treaty of Thronehold]], though it's
still unclear what this means beyond increasing passage
between the Plains and the outside world. 

!! Interesting Things About {{!!article}}{{!!title}}

* House [[Ghallanda]] and House [[Jorasco]] both originated in the Talenta Plains. The [[dragonmark]]ed bloodlines appear throughout the tribes, though you can play a dragonmarked halfling from the Plains who doesn't work for the houses. 
* The Talentan reverence for spirits derives from the fact that a variety of spirits haunt the Plains. The region contains an unusual number of manifest zones tied to [[Dolurrh]] and [[Thelanis]]. Ghosts are more likely to linger in such places, and minor fey are scattered across the Plains.
* Stories tell of ancient ruins that date back to the first age of the world and of a vast graveyard holding the bones of [[dragon]]s. 

!! Talentan Characters

* ''Wild Warriors and Tricksters.'' You were born in the wild, and your wits and your weapons helped you survive. Talenta warriors are often barbarians or rangers, relying on speed and skill. Outlander is a logical background, but you could easily be a folk hero, entertainer, or charlatan. You could even be an urchin who was stranded in a great city and adapted to life there.
* ''Surrounded by Spirits.'' Fey, fiends, and the ghosts of ancestors, these are all part of the spirit world, and they're all around you. Do you believe that the spirits guide your actions? Do you show respect to the spirits of a location? Talentan shamans often shapeshift into the form of dinosaurs. You could also reflect a strong bond to spirits by playing a [[warlock]] with an [[archfey]] patron, a [[cleric]] with the Nature domain, a [[paladin]] sworn to the Oath of the Ancients, or a barbarian on the Path of the Totem Warrior or Path of the Ancestral Guardian. Hermit and outlander are natural backgrounds, but you could be an acolyte or a sage who consults spirits instead of books. Warriors and shamans both wear masks to present a particular face to the spirit world.
* ''Dinosaurs.'' Talenta halflings have a close bond to their [[dinosaur]] companions. If you don't begin the campaign with a dinosaur mount or companion, you might acquire one over the course of your adventures. You can also consider whether a fallen dinosaur is part of your backstory; perhaps you lost your faithful mount in the [[Last War]], but you believe its spirit is still with you. 

!! Cities and Sites

The Talenta Plains have been described as an ocean of
grasslands. The nomadic halflings have little interest
in building towns; most shelter in the Talenta Plains is
temporary. Halflings shun the ruins scattered across the
Plains, believing them to be haunted by [[fiend]]s.

<<list-links-article "[tag{!!title}category[location]sort[title]]">>

!! Aftermath of the Last War

The [[halfling]] tribes joined together to defend themselves
from outsiders, and the Talenta Plains were recognized
as a nation under the [[Treaty of Thronehold]]. Now that
the war is over, most of the tribes have returned to their
hunting grounds and ancient traditions. They united to
defend their way of life, and now they wish to enjoy it.

But the halflings don't yet know if it's possible to
return to the previous ways. More foreigners visit
the Plains than at any time in the past. Settlers and
merchants cross the Plains as they make their way to
[[Q'barra]], and they clash with Q'barran bandits. The [[Valenar]] [[elves|elf]] ride through the Plains in search of adventure.
Monsters emerge from the [[Mournland]]. [[Dragonmarked houses|dragonmarked house]] seek to expand their role at [[Gatherhold]] and to
explore the untapped resources of the Plains.

The halflings have no interest in change, but it might
be inevitable. [[Lathon Halpum]] believes that if the tribes
can work together, they could become a nation of nations, but others aggressively oppose such a path. [[Holy Uldra]] is a powerful shaman and the leader of her own
tribe. She urges halfling warriors to join together for a
single purpose: to drive all outsiders from the Plains
and to maintain the ancient traditions. The halflings
must decide whether the tribes will choose the path of
peace or return to war. 
While this stuffed doll is within 5 feet of you, you can spend a short rest telling it to say up to six phrases, none of which can be more than six words long, and set a condition under which the doll speaks each phrase. You can also replace old phrases with new ones. Whatever the condition, it must occur within 5 feet of the doll to make it speak. For example, whenever someone picks up the doll, it might say, "I want a piece of candy." The doll's phrases are lost when your attunement to the doll ends.
While you are holding this wand, your voice and other sounds you produce are three times as loud as normal. House [[Phiarlan]] makes use of the //thunderous amulet//, a similar device that leaves the wearer's hands free.
This tankard has a stern face sculpted into one side. You can drink ale, wine, or any other nonmagical alcoholic beverage poured into it without becoming inebriated. The tankard has no effect on magical liquids or harmful substances such as poison.
The Tanni River in the [[Tashana Tundra]] flows from [[Lake Aat]] into the [[White Sea]]. 
Tannishold is a fortress in the [[Eska Mountains]]. The Stone Council of the [[Dorann Holds]], previously an intermittent conclave gathered to settle important intraclan disputes, has been in permanent session in the fortress in recent years. 
Tantamar is a town in mainland [[Lhazaar Principalities]]. It has a high population of [[dwarves|dwarf]] and [[orc]]s with family ties to the [[Ironroot Mountains]].
Taratai was the [[kalaraq]] leader of the rebel [[quori]] and the
originator of the [[Path of Light]] on Eberron. She led sixty-seven spirits that became the [[kalashtar]] to [[Adar]], where the monk Hazgaal and his students accepted them. In
Hazgaal's body as Haztaratai (though many stories still
call her Taratai), she taught and wrote the precepts of
the Path of Light as a living symbol of balance. 

!! The Legend of Taratai

An aged
Haztaratai was the first of the [[kalashtar]] to cross [[Adar]].
Followed by her entire lineage, she did so as an indication
that her people should spread out over Adar, stopping at
[[Mountainsoul|Ahdryatmin]] and [[Korrandar]], marking both as holy to
many [[Adarans]]. In 151 Age of Taratai (-651 YK), Haztaratai passed from this world peacefully at [[Kasshta Keep]]. Taratai continued on, bound to Haztaratai's lineage, and
did so until over 550 years later. 

Taratai's scions were the most numerous among
those who had visions or dreams of the [[Shroud]] in the
winter of 701 AT (-101 YK). Construction of [[shroud resonator]]s started immediately, taking many months of work deep in [[Adar]]. 

When the [[Inspired]] laid siege to [[Kasshta Keep]] in
mid-autumn of 702 AT (-100 YK), even the storms that
naturally form when war comes to Adar could not stem
the tide. The eldest of the Taratai lineage put out a call to
his brethren, many of whom came to the front as quickly
as they could. Together, the members of the Taratai
line created a [[metaconcert]] unlike the world has ever seen. 

Accompanied by a small army of brave Adaran monks
and mystics, they met the [[Riedrans]] near the [[Kasshta River]] and on the headlands of [[Syrkarn]]. Even those who survived the clash remember only silvery light. In the
end, the Riedran army was broken, and Ulakhun, one
of the greatest [[kalaraq]] [[Inspired]] generals in history, was
slain in body and his [[quori]] soul bound by the [[Keepers of the Word]]. A gem still rests in [[Kasshta Keep]], among many others, containing that [[fiend]]'s spirit. 

War continued into winter, with the Taratai line
fighting in the forefront against the [[Inspired]]—they felt
personally responsible for the arrival of the Inspired on
[[Eberron]]. By midwinter, the Inspired still pushed into [[Adar]],
razing to the ground the original [[Malshashar]] Monastery
on the border of Riedra. The Inspired were less committed to taking [[Kasshta Keep]] only because of their losses to soul-binding magic, but their war machine ground on
from the north. In late winter, [[shroud resonator]]s were placed in
the remaining fortresses in [[Adar]], and one was placed in a
cavern provided by new allies the [[kalashtar]] had convinced
to aid Adar—the [[dromite]]s of [[Zi'til'natek]]. 

In the last month of winter, the few remaining members of Taratai's line came to each of Adar's citadels. All disappeared in silver light as the shroud resonators began to function. The line of Taratai was no more, but Adar's borders became nearly impossible to cross from that day forward. 
Targath is a soft metal mined on the northern coast of [[Argonnessen]] and the [[Seren]] Islands, and is closely guarded by the Seren barbarian tribes. The metal possesses some natural salubrious properties, granting creatures resistance against non-magical diseases. It is also mysteriously effective against the [[deathless]] elves of [[Aerenal]], who shrink from its touch.
Long ago, the [[dragonmarked house]]s sought to exterminate the bearers of [[aberrant dragonmark]]s. Today, those who carry aberrant dragonmarks are still treated with fear and suspicion. During the [[Last War]], the [[King's Dark Lanterns]] of [[Breland]] trained a team of covert operatives who all bore aberrant marks. Considered expendable, this group was sent on one suicide mission after another. After half its members died in the field, the survivors turned on their masters. Six years ago, they fled to [[Sharn]] and founded
House Tarkanan. The group takes its name from Lord [[Halas Tarkanan]], who fought the dragonmarked houses long ago and used his aberrant dragonmark to destroy [[Old Sharn]].

The smallest of Sharn's four major criminal organizations, House Tarkanan has no interest in claiming territory or dominating the criminal underworld. The house takes neither side in the war between the [[Boromar Clan]] and [[Daask]], and it will not assassinate
high-ranking members of either organization. In other matters, it sells its services to all who have the gold to pay for them. House Tarkanan's top priority is using its wealth to protect, train, and care for people who have [[aberrant mark|aberrant dragonmark]]s. The leaders of the house are pragmatists and soldiers, and they train their recruits to be warriors and thieves.

Despite its name, House Tarkanan is not a [[dragonmarked house]]; it has taken the name to mock its enemies, and it doesn't have the recognition, power, or resources of a dragonmarked house. In fact, many members of House Tarkanan hate the dragonmarked houses for being prejudiced against their kind and fear that they will instigate a second purge of aberrant marks. Others are more idealistic, and see the growing power of the houses as a threat to all of the nations of [[Khorvaire]]. 

!! House Tarkanan Operations

House Tarkanan provides two basic services to clients: theft and murder. Fees for jobs are based on the task's complexity and riskiness; a simple cutpurse contract costs far less than the assassination of a [[Sharn Watch]] captain in [[Skyway]].

What differentiates the assassins of House Tarkanan from those of House [[Phiarlan]] and [[Thuranni]] is their accessibility. The [[dragonmarked house]]s sell their services only to a select list of wealthy and powerful clients, and they can pursue contracts anywhere in [[Khorvaire]]. Conversely, anyone with enough gold can hire House Tarkanan's assassins, but they take jobs only within [[Sharn]]. 

!! House Tarkanan NPCs

Because House Tarkanan helps all those who have [[aberrant dragonmark]]s, the organization has allies across a wide range of society, from beggars to nobles. Some of
the organization's most important people are these:

* [[Thora Tavin]], a female [[human]], has the ability to sense mystical energies—a gift that enables her to identify others with aberrant marks. She founded the organization and serves as its leader. While she uses the name Thora Tarkanan among her compatriots, she has established herself as Thora Tavin among the wealthy elite of Sharn and has cultivated relationships with many influential people.
* [[Rotting Bal]] is one of Thora's most trusted lieutenants. A male [[human]], Bal was part of the original squad of aberrant commandos. He's an exceptional martial artist whose skills are enhanced by his mark.
* [[Zae]] is a female [[halfling]] who has the power to speak to and control vermin, and see through the eyes of her rats. Though she's no warrior, her gift helps the house gather information. She is the daughter of [[Fileon]].

!!! Tarkanan Contacts

| !<<dr d4>> |!Contact |
| 1 |[[Fileon]] ([[halfling]]) is a healer with a deadly touch, who evaluates and trains potential recruits. |
| 2 |[[Hemlock]] ([[gnome]]) is an assassin and [[alchemist]] specializing in exotic poisons, who's always interested in acquiring new toxins or unusual herbs. |
| 3 |[[Whisper]] ([[elf]]) is a thief whose [[aberrant dragonmark]] absorbs sound. Whisper appreciates fine things and has a vast collection of unusual trinkets. |
| 4 |[[Mala Shol]] ([[half-elf]]) is an expert pickpocket and a master of disguise, with a talent for illusion. |

!! House Tarkanan Villains

Some House Tarkanan villains are obsessed with bringing down the [[dragonmarked house]]s. Others are willing to take innocent lives if doing so means saving one person with an aberrant mark. Sample villains appear on
the table below. 

| !<<dr d4>> |!Villain |
| 1 |A member of House Tarkanan murders members of dragonmarked houses, reducing her victims to smoldering piles of ash. |
| 2 |Driven mad by his [[aberrant dragonmark]], a [[dwarf]] becomes obsessed with destroying [[Sharn]] in the same manner that [[Halas Tarkanan]] collapsed [[Old Sharn]]. |
| 3 |A House Tarkanan [[half-elf]] kidnaps children with aberrant marks, believing the organization is better suited to bring up the children than their parents. |
| 4 |A House Tarkanan mage starts drinking the blood of dragonmarked nobles, believing it will increase the strength of his aberrant mark. |

!! House Tarkanan Campaign Themes

As assassins for hire, the members of House Tarkanan
can appear in a campaign as agents of other enemies of
the adventurers. But they can also play a central role in
a campaign.

To use House Tarkanan as a recurring villain, you can
stress its ruthlessness and emphasize its hatred of the
[[dragonmarked house]]s. If any of the adventurers have
ties to one of the houses, this confrontation could begin
with a number of small attacks against the adventurer
or their friends. Over time, these actions could escalate.
In addition, you could build a story around [[Thora Tarkanan|Thora Tavin]]'s quest to discover the secrets of [[aberrant dragonmark]]s. Long ago, [[Halas Tarkanan]] and the [[Lady of the Plague]] possessed marks so powerful that they could
destroy cities. Can Thora find a way to amplify her own
power in the ruins of [[Old Sharn]]?

If one or more of the adventurers has an [[aberrant dragonmark]], House Tarkanan can also serve as a group patron for a party of adventurers. The table below provides hooks for adventurers who are working with the organization.

| !<<dr d4>> |!House Tarkanan Assignment |
| 1 |Steal a satchel full of research on the [[War of the Mark]], carried by a [[wizard]] who works at [[Morgrave University]]. |
| 2 |Kill a [[Karrnath]]i warlord who is visiting [[Sharn]], and make it look like an accident. |
| 3 |Kill a target before she signs her last will and testament to assign her property to a new heir. |
| 4 |Rescue a [[dreamlily]] dealer with an [[aberrant mark|aberrant dragonmark]] who has been captured by the [[Sharn Watch]]. |

!! House Tarkanan Adventure Hooks

The table presents ideas for adventures themed around House Tarkanan.

| !<<dr d4>> |!House Tarkanan Adventure Hook |
| 1 |House Tarkanan disturbed the dead during an expedition to [[Old Sharn]], causing undead to terrorize the city above. |
| 2 |House Tarkanan declares war on the [[dragonmarked house]]s in [[Sharn]] and begins killing nobles in the streets. Many of the houses' businesses in the city are shut down as fear spreads. |
| 3 |A victim who was killed by a House Tarkanan assassin returns as an undead that tries to kill anyone who bears an aberrant mark. |
| 4 |House Tarkanan steals a key that can disable a ticking time bomb created by an [[artificer]]. |
One of three temple-fortresses that guards passage into [[Adar]] directly from [[Riedra]], Tashalatora is home to [[monk]]s renowned even in [[Khorvaire]]. A few
Khorvairians even seek this monastery as a place to perfect their training. Tashalatora's fighters are among the most powerful in Adar, blending [[psionic|psionics]] or [[magical|arcane magic]] skill with fighting prowess in unorthodox ways. 

Tashalatora breeds strong fighters because many
within the fortress and in [[Adar]] fear the [[Riedrans]] will one
day cross into the land of refuge by way of [[Vulpana Falls]],
which the citadel overlooks. For the hundreds of miles
between Tashalatora and the [[Haztaratain Monastery]] no other land is passable. Still, an army would have to pass
through or around the [[Shanjueed Jungle]] and its [[Mabar]]
[[manifest zone]], climb all the way up the hills and mountains to the falls, and then cross the falls. Furthermore,
the [[Inspired]] have few significant settlements nearby to
support such an undertaking. As a result, the Riedrans
have yet to try the passage. 

Those seeking an audience with Venerable [[Thatari]] must establish a relationship of trust with the elders of Tashalatora before they will reveal the location of her remote mountain cave.
[[Tashana|Tashana Tundra]] shamans can create a wide variety of magic substances from the native rock lichens that approximate the effects of standard
[[potion]]s and oils. The lichen pastes use natural materials
and processes such as sun-drying. They can be purchased in the coastal ports of [[Whitetooth]] and [[Winterstead]], or from individual [[shifter]] tribes encountered in the
inland of Tashana.

Consumable pastes appear as very small and thin wafers of
shredded leaves. Oil-type pastes have a greasy or buttery consistency. Taste and smell also vary among types.

The Tashana region also produces some lichens which
contain natural magical or psychoactive properties. These
lichens do not require any preparation and can be harvested and ingested raw. The most notorious of these is
the blood-red rock lichen known as [[icewild]].
The Tashana Tundra is a land of vast, open spaces and
endless sky. Home to the great [[shifter]] nations of [[Sarlona]],
the Tundra consists mainly of grassy, treeless plains that
stretch without interruption from horizon to horizon.
For many thousands of years, these [[semi-nomadic tribes|Culture of the Tashana shifters]]
have roamed the grasslands, isolated from the rest of the
world and left in relative peace to contemplate the cold,
pure spirit of their ancestral homeland. 

!! Land of Many Waters

Tashana means "many waters" in an ancient, nearly extinct
[[shifter]] dialect. The plains are dotted with hundreds,
if not thousands, of small glacial lakes. Many of these
remain frozen year-round, but the southern waters thaw
in summer. In these months, the Tundra is a place of pure
and unspoiled natural beauty. The landscapes are regularly interrupted by huge mounds of rocks and boulders, some miles wide, that seem to have fallen from the sky.
Remnants, presumably, of an earlier glacial age, these rock
mounds have a strange and otherworldly beauty.

The majority of the Tundra is covered with frosty
grasslands. To the north the [[Eska Mountains]] rise, and
the northern foothills of the [[Paqaa Mountains]] encroach
upon the southern border. In the far north, the dreamlike and ghostly [[Tashyvar Islands]] reach into the [[Sea of Rage]]. Finally, the mysterious [[Krertok Peninsula]] extends
northeast of the Eskas.

The climate is mainly subarctic, with true arctic conditions in the northern plains and mountains, and short
summer months of near-temperate conditions in the south.
If anything definitive can be said of the Tundra as a whole, it
is this—it is a land of strange weather. Blizzards, snow squalls,
and whiteouts sometimes descend in an instant, but also
common are strange heat waves, downpours of inexplicably
warm rain, and savage lightning strikes.

The southern border of the Tashana region is marked by a gradual elevation shift and what appears to be an intermittent [[manifest zone]]
tied to the [[plane]] of [[Risia]]. All along these borderlands, planar manifestations of ice and snow have
given the appearance of a land of perpetual winter to
those south of the border. This geographical isolation
has resulted in a land that is remarkably insular and
self-sustaining.

The Tundra is well known for [[reality storm]]s (//aukarak//s
in the ancient [[shifter]] dialect), rogue planar breaches and
manifest zones that drift over the landscape.

!! Getting There

Although no more difficult to travel to than other locales,
the Tashana Tundra had few visitors in the past. The austere beauty of the place and its peoples drew little interest.
Recently, however, things have changed. 

Intercontinental trade on a significant scale has
developed on the western Tashana coastline. Exports of
medicinal and magical lichens from the Tashanan interior have resulted in expansion of the port communities of
[[Winterstead]] and [[Whitetooth]], at the respective openings of
the [[Qonama|Qonama River]] and [[Tiiki|Tiiki River]] rivers. Although the Tundra does
produce some unique herbs and spices, the true reason for
this rapid growth is less savory—coastal Tashana produces
a particularly potent strain of the fatigue-alleviating
lichen known as muqqa, or [[icewild]]. Also, Tashana [[shifter]]
art is currently in vogue among a few wealthy collectors in
[[Zilargo]]. As a result, there's a great demand for brave souls
willing to discover and barter for genuine artworks. 

Recent years have also seen a significant influx of
[[shifter]]s from [[Khorvaire]]—both individual pilgrims and
entire communities. Khorvairian shifters have been arriving by boat in greater numbers since the end of the
[[Last War]], with charismatic leaders often at the head of
entire naval convoys of pilgrims. Individual shifters
might want to travel to Tashana for personal or spiritual
reasons; other characters might sign on as escorts and
defenders of the larger shifter migrations.

And as with any place, not all visitors arrive by
choice. The [[Akiak]] people maintain their community-in-exile in the northern foothills of the [[Paqaa Mountains]]. While the shifters of the southern [[Qiku]] are careful not to
overtly oppose the [[Riedrans]], they are providing material
support to the Akiak fighters and harboring some civilian communities.

Internal travel is not difficult despite the lack of good
roads. [[Shifter|shifter]] and [[dwarf]] communities have long traded
among themselves, and limited trade exists between the
shifters and the northern border communities of [[Riedra]].

!! State of the Region

The Tashana Tundra is better understood as a geographical
region rather than a nation. Although the Tashana [[shifter]]s
are the dominant people in terms of a semi-unified culture (and sheer numbers), they do not recognize political borders, and they have no diplomats or delegations abroad.
The [[dwarves|dwarf]] of the [[Dorann Holds]] are closer to being an
actual political nation, but their isolationist policies have
kept them all but invisible in their distant mountain holds.
The [[Akiak]] refugees and the [[Icebinder|Icebinders]] [[frost giant]]s remain
essentially nomadic peoples, and little is known of the
mysterious [[Inana]] [[maenad]]s. The Tashana Tundra is simply
too big, too wild, and too sparsely populated to qualify as a
nation in any but the loosest sense of that term.

!!! Shifter Nations

The [[Qiku]] and [[Saartuk]] nations are
composed of hundreds of individual tribes, each led by a
council of elders. The tribe is the basic organizational unit
of the [[shifter]] people, and each functions more or less independently. Each tribe has one or more shamans—healers and
spiritual councilors. In the north, the desperate and more
warlike [[Chuniigi]] are more fractured and entirely nomadic,
following the herds of caribou and competing with the many
human tribes in the area.

The three nations have enjoyed a state of relative peace
for many decades. The great wars of the past had been devastating for all, and the Tundra is too harsh a land to spill
unnecessary blood. Twice a year, each nation holds a gathering of its internal tribes and once a year, representatives
from the three nations convene a Summit Council at a
secret location in the central plains known as the Speaking
Stones (not to be confused with [[Sivis]] [[speaking stone]]s). Recent threats by the [[Kalaak]] barbarians have tribal
leaders uniting in common defense, and a semipermanent
Summit Council has gathered for several years now. The Council is led by a triumvirate known as the Sky Tellers,
with each of the three great nations represented. Among
all three nations, adults of any gender are hunters
and fighters, and in times of war, each nation is capable of
fielding an army of fighters on very short notice.

See also [[Culture of the Tashana shifters]].

!!! Other Tashana Groups

* [[Dorann Holds]]
* [[Akiak]] refugee clans
* [[Inana]] [[maenad]]s
* [[Icebinders]]

!! Foreign Relations

Among the various peoples of the Tundra, relations are
generally peaceful. The [[shifter]] nations keep to themselves,
having successfully averted large-scale war for hundreds of
years. Isolated tribal skirmishes still occur regularly when
resources become scarce, particularly involving the warlike
[[Chuniigi]] tribes of the north.

In recent years, the refugee people of the [[Akiak]] and
the tribal leaders of the [[Qiku]] shifter nation have joined in alliance. This alliance has historical roots: When the
Akiak split from their [[Dorann|Dorann Holds]] forefathers hundreds of
years ago, the shifters of the Qiku nation helped the
dwarves in their migration from the [[Eska Mountains]]
across the Tashana Tundra. After the Akiak established
their new clanholds in the [[Paqaa Mountains]], the two
groups remained friendly and engaged in significant
trade. After the betrayal of the [[Inspired]], the Qiku shifters provided refuge and shelter to the desperate Akiak
refugees in the northern foothills of the mountains,
where they remain to this day. While there is no formal
military alliance, the Qiku provide Akiak guerrilla raiders with supplies and mercenary warriors to assist in their
campaign to retake clanholds in the Paqaa range.

Along the western coast of the Tashana, the [[Saartuk]]
nation coexists with colonies established by
the [[Inana]] [[maenad]]s of the [[Tashyvar Islands]].
There is certainly no shortage of space
or resources along that shoreline.
The port communities of [[Winterstead]] and [[Whitetooth]] are an
intriguing mix of [[maenad]] and
[[shifter]] culture, along with a
smattering of various [[Khorvarian|Khorvaire]] influences brought by
increasing sea trade. 

In the far north, lowlying [[Dorann|Dorann Holds]] clans have
a tradition of trading
worked metal and weapons
with the [[Chuniigi]], typically for prepared meats
and animal products.
However, relations have
soured in recent years.
The Chuniigi are enduring relentless raids by the
savage [[Kalaak]] barbarians,
and these are desperate times
for the northernmost [[shifter]]
nation. Chuniigi now regularly
raid Dorann [[dwarf]] settlements,
and even northern roaming [[Qiku]]
and [[Saartuk]] tribes when necessary. 

The nomadic [[Icebinder|Icebinders]] giants generally have good relations
with all three [[shifter]] nations, in that
they leave one another alone. The scattered and self-sufficient [[human]] barbarian tribes of the Tundra have no overarching organization, and conflict arises
only when competition for resources heats up.

The human barbarians known as the [[Kalaak]] are an
entirely different matter. Of these terrible raiders, little
is known—and of that, little is spoken. Some say the savagery of the Kalaak has earned them a reputation entirely
out of proportion to their actual power and numbers.
There is no doubt, however, that the Kalaak represent a
grave threat to all peoples of the Tashana.

!!! Riedra

[[Riedra]] and Tashana have long had a mutually beneficial
policy of ignoring one another's existence. It's unclear to
what extent the [[shifter]] leaders know of the Riedran government, and all indications are that the [[Inspired]] consider the
shifter nations harmless primitives. Several passes break
through the strange planar-influenced border between
the lands of Tashana and Riedra, and limited trade exists
between individual shifter tribes of the southern Tundra
and northern [[Riedran|Riedrans]] settlements—proximity trumps
politics in these cases. The upper reaches of the [[Paqaa Mountains]] represents a significant exception, due to direct
hostilities between the refugee [[Akiak]] fighters and [[Riedra]]n
occupiers. Although there exists no state of war between
Riedra and the [[Qiku]], it is common knowledge that the
shifters support the Akiak in their struggle to reclaim their
homeland. Tashana tribes and [[Riedran military|Taskaan Legion]] shifters
harbor a deep enmity toward one another. Extremely bloody
incidents in the past have led the leaders of both Riedra
and the Tundra nations to avoid direct conflict. 

!!! Syrkarn and Adar

Tashanans are, for the
most part, unaware of the
distant nations of [[Syrkarn]]
and [[Adar]]. It's probable, however, that leaders of the shifter
nations have some knowledge
of these lands. In fact, there
are those who suspect that
emissaries have been dispatched in both directions,
and that secret talks are under
way to assess a possible alliance
against [[Riedra]].

!!! Other Nations

It's a fact known to only a select
few, but Tashanan coastal communities and pirates of the [[Lhazaar Principalities]] have maintained secret trading and smuggling routes
across the [[Lhazaar Sea]] for many years.
Initial trade was probably in certain
exotic spices native to the Tashana coast,
but much of the commerce now revolves
around trafficking of medicinal and magical lichens, especially [[icewild]]. Other
commodities include native Tashanan art,
and mineral and crystal exports from the [[Eskas|Eska Mountains]]. 
Tasho Mol Doras, the ambassador of [[Zilargo]] at the [[Sharn]] [[embassy|Zilargo Embassy (Sharn)]], is a brilliant diplomat and ruthless negotiator. He is always looking for a
way to get an edge over his political and mercantile opponents, and quickly seizes upon any sign weakness and exploits it. He is a skilled actor and can feign a wide range of emotions, but when the interests of his nation or family are at stake, he acts without mercy. 
The Tashyvar Islands off the coast of the [[Tashana Tundra]] in [[Sarlona]] are the ancestral home of the [[Inana]] [[maenad]]s.
Also known as the Savage Legion,
this [[Harmonious Shield]] division of shock troops is composed of nonhumans—primarily [[shifter]]s, but including [[ogre]]s and a few [[eneko]]. Each [[Riedra]]n bastion
lord has his own Taskaan
guards, raised from
birth to serve their
[[Inspired]] master.
Identical twins Tasra d'Deneith and [[Lalia d'Deneith]] are the leading [[Sentinel Marshals]] in [[Sharn]], headquartered in the [[Three Towers]] [[enclave]]. They can be inconsistent about which fugitives they chase down, leaving some high-profile but potentially longterm pursuits to other marshals. Nonetheless, they
are a fugitive’s worst nightmare: implacable, but likely to toy with their quarry before ending the chase. Tasra in particular knows the seedy areas of [[Sharn]] like the back of her hand.

Unknown to all but agents of the [[Dreaming Dark]], both sisters are hosts to [[tsucora]] [[quori]] spirits.
Everyone who comes to [[Sharn]], whether by land or air,
passes through Tavick's Landing. The quarter took on
a martial aspect during the [[Last War]], and the tense
atmosphere can still be felt today. On the positive side,
Watch Commander [[Iyanna ir'Talan]] has gone to great
efforts to purge corruption in the local garrisons of the
[[Sharn Watch]]; as a result, this is one of the few districts
where the Watch is both helpful and competent. On the
downside, visitors from any nation that fought against
[[Breland]] during the war might be greeted with suspicion
or hostility. 

* [[Upper Tavick's Landing]]
* [[Middle Tavick's Landing]]
* [[Lower Tavick's Landing]]

Tavick's Landing is connected by bridge to [[Menthis Plateau]] and [[Northedge]]. It connects to [[Dura]] on the south side of the city ([[Fallen]]/[[Foundation]]; [[Rattlestone]]/[[Kenton]]; [[Highhold]]/[[Sunrise]]).

!! Things to Do in Tavick's Landing

As a metropolitan district filled with immigrants, merchants, and travelers from across [[Khorvaire]] and beyond
it, Tavick's Landing offers a host of opportunities to
enjoy food and entertainment from distant lands. Or you
might find yourself here for one of a few specific reasons, such as:

* ''Take a chance.'' The [[Dragoneyes]] district is filled with ways to lose your wages, both in established gambling halls and on street corners. If you you're looking for something a little more exotic, see if you can find [[Chance]]. This is the name both of a secret, roaming gambling den and of the [[changeling]] who runs it. In addition to offering all manner of mundane games and bets, Chance is said to be able to arrange and cover nearly any sort of wager or duel. Are you ready to gamble with a [[fiend]]? Would you wager a year of your life for a moment of good fortune when you need it the most? If any of the rumors are true, these are examples of what's possible at Chance.
* ''Find refuge.'' Though most of the refugees in [[High Walls]] come from [[Cyre]], the district is a haven for anyone displaced in the war, including [[Brelish|Breland]]. The place is overcrowded, however, and resources are stretched thin. Tensions are high, and feuds and power struggles among the refugees take place regularly. If you're from Cyre, you might be able to find a cot in High Walls, especially if you already have friends or family living there.
* ''Bond over blood.'' The [[Graystone]] district in [[Middle Tavick's Landing]] is one of the few places in [[Breland]] where the [[Blood of Vol]] religion is practiced openly. Residents are circumspect about their activities, and [[undead]] servants are largely kept off the streets. But if you're a follower of the faith, it's a place where you can participate in the Sacrament of the Blood or consult with a priest. It's also the best place to find a skilled necromancer, or to hear rumors about the latest schemes of the Order of the [[Emerald Claw]]. 
''District Type:'' Marketplace<br/>
''Buildings:'' Open-air market, temple ([[Kol Korran]]),
average lodging (9), average food (45), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (20), average services
(60), poor services (20)<br/>
''First Impression:'' Traders and travelers fi ll the open
market, offering foods, crafts, and spirits from across
[[Khorvaire]]. The crowd is loud and bustling, but the
City Watch helps to maintain order and discipline.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Cornerstone]] (east); [[Graystone]] (south); [[Holdfast]] (bridge, north); [[Terminus]] (below); [[Silvergate]] (above)

[[Terminus]] lies just below Tavick's Market, and goods
from across [[Khorvaire]] come in on [[lightning rail]]
and are shipped directly up to the open market.
This district is an excellent place to find clothes,
crafts, and goods from the [[Five Nations]] and the
younger kingdoms. Farmers from the surrounding
countryside typically prefer to sell their goods in
Tavick's Market, as the [[Bazaar]] of [[Dura]] is dangerous
and [[North Market]] is expensive. Most farmers come
to market on [[Far|Khorvaire calendar]] and [[Sar|Khorvaire calendar]] each week, and these are excellent times to purchase produce and livestock. A market permit costs 1 sp, and the [[Sharn Watch]] makes
certain that merchants have their permits.

While the open market is the primary attraction in Tavick's Market, there are many permanent crafters, restaurants, and taverns scattered throughout the district. Most of this is average fare, but there are a few diamonds in the rough. 
<ul>
<$list filter="[tag[taxonomy]sort[title]] -[tag[taxonomy]tagging[]]">
<li><$link/> (<$list filter="[tag{!!title}has[tier]] [title{!!title}has[tier]] +[count[]]">{{!!title}}</$list>)</li>
<ul>
<$list filter="[tag[taxonomy]tag{!!title}]">
<li><$link/> (<$list filter="[tag{!!title}has[tier]] [title{!!title}has[tier]] +[count[]]">{{!!title}}</$list>)</li>
<ul>
<$list filter="[tag[taxonomy]tag{!!title}]">
<li><$link/> (<$list filter="[tag{!!title}has[tier]] [title{!!title}has[tier]] +[count[]]">{{!!title}}</$list>)</li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
An awe-inspiring and majestic piece of [[dragon]] artifice,
the Teeth of the Three could be the hope of [[Adar]] and [[Sarlona]],
and perhaps even [[Eberron]]. The Teeth of the Three rests above
the head of a creature of legend—a slumbering [[overlord]]—and if destroyed, it could spell doom for Adar, Sarlona, and the world. This incredible item is a magical
focus that might be responsible for Adar's odd mixture of
planar energy and the physical manifestations of them. It
could have been why the [[kalashtar]] were able to cross the
barrier between dreams and the world into Adar.

!! Lore

Few know about it. Fewer know where it is.
And fewer still will ever see it and live to tell the tale. Pieces of the story of the Teeth can be revealed in the following order.

* The creators of the [[Shroud]] are said to have shared a vision during their meditations or in their dreams in sleep. This vision revealed a great device like the [[shroud resonator]]s. Some believe that this device exists.
* The whole story is that the shared vision included the mighty peak [[Korrandar]]. Perhaps the mysterious device glimpsed lies on or in the volcano. But none besides Speaker of the Word [[Chanaakar]] have braved the storms or the [[Storm Guardians]] to find out, and he hasn't said.
* It is said that within the shrouded heart of [[Korrandar]] is set a massive draconic artifact composed of all three types of [[dragonshard]]s. The [[dragon]]s brought it from [[Argonnessen]] and used it and their mighty sorcery to create the natural fortress [[Adar]] is today. Under the land of refuge they sealed the spirit of an [[overlord]] named [[Ran Iishiv]]. They then placed this item, called the //Teeth of the Three//, within the volcano, and a mighty [[couatl]] sacrificed herself to power the crystal's eternal power against [[fiend]]s. 
*  Tales say the [[Storm Guardians]] gave [[Vusgaar]], the [[sorceress|sorcerer]] of legend who was friend to [[dragon]]s, leave to see the halls under [[Korrandar]]'s mists. In that story, Vusgaar tells that the //Teeth of the Three// is a joining of three [[dragonshard]]s, each amplifying the others' power. It is a nexus that vents the [[overlord]]'s wrath into [[Adar]]'s storms, at the same time focusing eldritch power to keep Adar as the dragons want it.<br/><br/>Vusgaar's disciples kept records that indicate the //Teeth of the Three// is a major component of the [[Draconic Prophecy]]. Dragons created it based on their auguries. The artifact seems to pull certain creatures near and push others away. It is also a massive psionic and magic focus. If this is so, it could be possible to tie Adar's [[Shroud]] to the //Teeth of the Three//, greatly reducing the maintenance the Shroud requires and strengthening its properties. Perhaps such a network is what the dragons sought to build all along. 

!! Description of the Artifact

The Teeth of the Three is a breathtaking
conglomerate crystal made up of three [[dragonshard]]s of
a size never seen in modern Eberron. In the center is a
Khyber shard. An Eberron shard and a Siberys shard join
the Khyber shard at the base and emerge from that point at
45-degree angles. Each shard is easily double the height of a
full-grown human and as wide as that person is tall; the artifact weighs over 6,000 lbs. Motes of golden, violet, and crimson light seem to materialize
near and flow into the crystals, and a diaphanous shaft of
silver radiance surges from the center of each upward.
This flow forms a wavering flame that dissipates at about 5
feet above the artifact. 

Space around the crystal thrums as if in time with the
heartbeat of the world. This vibration is felt not heard. A
silence beyond silence surrounds the item, as if the gods hold
their breath. The faint smell of burned metal taints the air,
though, and your brow furrows with some forgotten anger. 

!! Effects of Activating the Teeth

A being of sufficient spiritual resolve can touch the artifact to activate it. 

The [[couatl]]'s gentle and loving spirit within the
Teeth calls to those who value life, freedom, and balance. This
effect is hard to measure, but it covers [[Adar]] and stretches
beyond the land's borders. Far from insuring that all within
Adar are good, this effect has still influenced Adar's development over the millennia. No doubt some [[Riedrans]] near
Adar's borders have felt a longing to cross into the mountains, quickly dismissing the notion and reaffirming the
teaching that Adar is a land of monsters. 

More definitively, the area around the Teeth of the Three is
blanketed in several effects. A dimensional lock covers an area
67 miles around the artifact, preventing all extradimensional travel, and within 7 miles of it all effects that summon or call creatures, or that require [[material]]s from other [[plane]]s, are impeded. Within this radius, any attempt to summon or call a
[[couatl]], resist possession, or overcome any resistances of an extraplanar [[fiend]] or [[aberration]] is automatically successful.

When [[Ran Iishiv]] and its minions were trapped beneath
[[Adar]], the [[overlord]]'s rage was so great that the land around its
prison boiled, hurling up the great volcano [[Korrandar]]. The
Teeth of the Three was put in place, and the dragons used their
most puissant magic through it to bring [[Lamannia]]'s energy
closer to [[Eberron]], though Ran Iishiv's chaotic mind also
attracted [[Kythri]]'s influence. With access to elemental forces,
the [[dragon]]s pushed the land of [[Adar]] higher and a [[couatl]]
joined with the crystal to channel Ran Iishiv's fury. The
plan worked, as did the idea to channel Ran Iishiv's violent
passion into supernatural and natural storms that rage in
[[Adar]]. Dragons foresaw they would need these storms to protect their hold in [[Korrandar]]. Strangely, this has an affect in Adar—whenever more than a few score persons act in anger or violence in the land of refuge, a magical effect causes a terrible storm (a hurricane on the coast or a tornado-spawning thunderstorm inland) to manifest in the area of the battle. Such a storm is worse for those without shelter in the mountains—a Riedran siege force, for example.

While in contact with the Teeth of the Three, a creature is
affected as if by a [[mind blank]] spell, and can perform [[scrying]] at will. This scrying is not blocked by the [[Shroud]]. They can also perform a variety of other [[divination]] [[spell]]s.

Those who contact the Teeth of the Three immediately understand its lingering effects and how to access those powers.

!! Lingering Effects

Anyone who has been in the presence of the //Teeth of the Three// is immune to possession for one year thereafter. They may also gain lingering divination capabilities.
This silver-rimmed monocle has three lenses layered over one another. While worn, it allows the user to "zoom-in" the vision of one eye, allowing them to clearly view things a mile away.
Jutting up from the sea near the southern coast of the [[Lhazaar Principalities]],
Tempest Isle takes its name from the never-ending
storm that rages over its central mountains. Some say
this phenomenon is caused by a clan of [[storm giant]]s
descended from [[Xen'drik]] exiles that landed here
millennia ago. Others assert that a mighty [[wizard]]
lives atop the peak, and that the storm is his warning
against visitors.

Whatever the cause of the storm, rumors of fabulous wealth hidden on the island bring ships from across [[Khorvaire]] to these waters. It is said that pirate
captains in ages past used the numerous natural
caves and caverns on the isle to store their treasure,
and that one such trove in particular holds more gold
and jewels than the wealth of all the Lhazaar princes
combined. No one has ever found this legendary trove,
of course, and most treasure hunters who set foot into
the island’s jungle-shrouded interior never return.

Tempest Isle is also home to a tribe of particularly large and brutal aquatic [[troll]]s (also known as //scrags//).
Tempest Strait lies between [[Tempest Isle]] and [[Q'barra]] to the west, and [[Lorghalan]] and [[Dreadwood Isle]] to the east.
The Temple of the Ages is
the primary place of worship and training for the
[[Keepers of the Past|Spirits of the Past]]. It is also the site where High
King [[Vadallia|Shaeras Vadallia]] hosts annual tournaments and contests
of military and equestrian skill.
Before the rise of the [[Silver Flame]], it was not uncommon to find people
who openly worshipped the [[Dark Six]], either hungry
for power or making sacrifices to placate the dark
gods. Temples to the Six were usually built in hidden
places, and when [[Sharn]] was created, an enormous
temple to the Dark Six was constructed beneath the
city. In 484 YK, Flamekeeper Jalus Baine led a force
of the faithful and exterminated the followers of
the Six, and the temple was quickly ransacked. But
it was not completely destroyed. Currently, it serves
as the headquarters of [[Daask]] and the home of the
[[oni]] [[Cavallah]]. Cavallah respects the [[Mockery]] and the [[Shadow]]
and has restored their altars, but for the most part
the temple was simply a convenient base of operations. She has established a range of defenses in the
temple, and brought a variety of unpleasant beasts
from [[Droaam]]: [[grick]]s, [[displacer beast]]s, [[basilisk]]s,
and an assortment of other deadly creatures. The
wealth gathered by Droaam lies in the vaults of this
temple—but seizing it would be a dangerous task.

Many of the [[Dark Six]] have other worshippers
in [[Khyber's Gate]], who have established hidden
temples; these folk generally practice their faith in
private and have little contact with [[Cavallah]]. 
The namesake of the
[[Torchfire]] district is this crowded, smoke-filled theater near the point where Torchfire, [[Firelight]], and
[[Center Bridge]] converge. Though critically derided
as the bottom of the barrel in [[Sharn]]'s entertainment
scene, crowds fill its hall to bursting every night,
thanks to a winning combination of cheap tickets
and undeniably entertaining shows. It is sometimes
hard to hear the performers over the roaring crowd,
but no one seems to care—except perhaps the performers, or the young playwrights with aspirations
of writing for the [[Grand Stage]]. 
When this shield is tossed on the ground and the command word is spoken, the shield grows and morphs into a sturdy three-person tent made of peculiar silver canvas.

Speaking the command word again causes the tent to transform back into a shield, provided that no creatures are inside. Any objects inside the tent when it collapses are ejected and remain outside the tent as it folds.
The agents of [[Teraza|Sora Teraza]]'s Eye are sages, versed in [[Droaam]]'s
history and diverse customs. They survey ancient ruins
and identify [[manifest zone]]s and planar conjunctions. They
often offer unsolicited advice to local warlords. Though smaller than [[Katra's Voice]] and [[Maenya's Fist]], some believe that those Eyes
that are seen are merely the tip of the [[ankheg]]—that Teraza
is served by [[changeling]]s and other hidden agents who carry
news of all developments back to the [[Daughters|Daughters of Sora Kell]].
''District Type:'' Caravan district<br/>
''Buildings:'' Temple (2) ([[Olladra]], [[Silver Flame]]),
average lodging (20), poor lodging (60), average food
(38), poor food (120), average trades (40), poor trades
(60), average services (40), poor services (60)<br/>
''First Impression:'' This district is a buzzing hive of
activity. [[Orien]] [[lightning rail]] coaches arrive and depart
twice a day, and merchants and laborers are constantly loading and unloading crates of merchandise.
[[Skycoach|skycoach]]es and magic lifts are in constant motion,
carrying travelers up to the higher towers.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Wroann's Gate]] (east); [[Cogsgate]] (south); [[North Market]] (bridge, north); [[Blackbones]] (below); [[Tavick's Market]] (above)

Terminus is defined by [[Terminus Station]], the massive House [[Orien]] [[enclave]] that serves as an endpoint for the Orien [[lightning rail]] coach line. As a result,
most [[Brelish|Breland]] travelers come through [[Wroann's Gate]],
while most to the travelers from other nations arrive
at Terminus. It is a hotbed of activity, and despite the
presence of the [[Sharn Watch]] and the [[Guardians of the Gate]], pickpockets and other thieves operate freely.

After visitors pass inspection by the Guardians of
the Gate, they are free to leave the district, either on
foot or by taking one of the lifts or [[skycoach]]es to the
higher wards. Terminus itself offers a host of inns,
restaurants, taverns, and other basic services for the
traveler who doesn't want to enter greater [[Sharn]], but
none of these services are notable for quality or value.

House [[Sivis]] maintains a message station in Terminus, and there is a small [[Deneith]] outpost where visitors can arrange for bodyguards or laborers.
There is a larger House [[Lyrandar]] enclave; primarily this is used for negotiations between Lyrandar and [[Orien]], but this outpost also allows merchants to
arrange to have the goods brought in by coach transported elsewhere by air or sea. House [[Vadalis]] operates a large stable and hostelry, allowing visitors to secure
their mounts while wandering through the city. 
An [[enclave]] of House [[Orien]], this site contains the [[lightning rail]] station. The administrators coordinate the many [[Orien]] caravans that come and go from [[Sharn]]. Many of the other [[dragonmarked house]]s have small outposts in or around Terminus Station, allowing travelers to immediately access the services of House [[Sivis]], House [[Deneith]], and others. 
The Tese Hills in [[Syrkarn]] are a small chain of low mountains where the [[Qitha River]] has its headwaters. They form part of the border between [[Khunan]] and [[Lamecha]].
A creature that ingests this poison and cannot resist its effects is unable to cast any [[spell]]s for eight hours.
When King [[Jarot ir'Wynarn]], the last ruler of [[Galifar]], died in 894 YK, and the scions broke with tradition and entered the [[Last War]], Thalin of [[Thrane]] saw another
opportunity to spread the [[Silver Flame]] to the entire kingdom. While the other scions had more personal or philosophical reasons for refusing to honor the traditional rights of succession, Thalin believed that he had a divine right to the crown. This tendency on the part of Thrane to place itself above the rest of the shattered kingdom led to some of the most terrible battles of the [[Last War]].

In 914 YK, with the death of King Thalin, [[Thrane]]’s
people rejected Thalin’s heir’s claim to the throne and
turned to the Church of the [[Silver Flame]] for leadership.
Thrane became a theocracy under the rule of the [[Keeper of the Flame]], with a Wynarn "blood regent" serving merely as a symbolic advisor.
[[Thrane]]’s regents have always lived in this massive fortress in the center of the city. Thalingard is a great fortress with tall spires. Its balconies
offer a stunning view of the city unfolding below.

Thalingard takes its name from Thrane’s [[last king|Thalin ir'Wynarn]] since becoming a [[Silver Flame]] theocracy. Custom dictates that the castle’s name change with its ruler, but Thrane has not had a true king since Thalin, and so the old name remains. The castle houses the blood regent [[Diani ir'Wynarn]] and
a detachment of [[warforged]] sentries. Because the monarchy is no longer relevant, the castle is a much a symbol as the regent.
This ancient city was once the seat of a proud pre-[[Galifar]] kingdom that shared its name. From the founding of Galifar until it was seized by [[Thrane]] in 926 YK in the [[Last War]], Thaliost was part of [[Aundair]]. Thaliost was officially ceded to [[Thrane]] under the [[Treaty of Thronehold]] in 996 YK. Many of its people bitterly oppose the Thrane occupation, but it's also become a haven for Aundairian followers of the extremist [[Pure Flame]] sect; violence often breaks out between these two factions. 

Thaliost is a unique city in [[Thrane]], its [[Aundair]]ian
heritage made manifest in its tower-filled skyline,
austere structures, and straight roads. Even after
decades of Thrane rule, more than a few citizens still
see themselves as Aundairians. They are profoundly
discouraged by their former homeland’s inability
or unwillingness to liberate them. The most bitter
of them remain restless, and uprisings, rebellions,
murders, and arson are common. Thrane has tried
everything it can to keep the people in line, including
cutting off food, employing secret police squadrons,
and placing entire armies inside the city. Thus far,
nothing has worked.

Thaliost is a powder keg—one spark, and the city could erupt in a conflagration of rebellion. The [[Council of Cardinals]] is well aware of the dangers the city poses, which is why it appointed an [[Aundair]]ian archbishop for its governor. Unfortunately, Archbishop [[Solgar Dariznu]] makes things worse with his brutal tactics, pushing
even those who might become resigned to living in
[[Thrane]] to join the rebels. Word has it that something
big is in the works, something nasty enough that the
rebels just might break Thrane’s stranglehold.
''Leader:'' The [[Triumvirate|Tharashk triumvirate]] ([[Maagrim Torrn]], [[Khandar'Aashta]], and [[Daric Velderan]]) <br/>
''Headquarters:'' [[Zarash'ak]], [[Shadow Marches]] <br/>
''Dragonmark:'' [[Mark of Finding]]

//My ancestors used their gift to track beasts in the swamps. I use mine to find fugitives in the slums of [[Sharn]]. I'm still a hunter. I always find my mark.//

<div align="right">—Hondar'Aashta, Tharashk bounty hunter</div>

House Tharashk traditionally licenses [[inquisitive]]s and
bounty hunters. Recently the house's [[Finder's Guild]] has
expanded into [[dragonshard]] prospecting. As dragonshards are the lifeblood of the magical economy, the
house's talent has given them new wealth and influence.

Tharashk is the youngest of the [[dragonmarked house]]s
and hasn't embraced all the customs of the others. The
distinct clans that united to form the house remain important, and heirs of the family usually retain their family
names rather than adopting "d'Tharashk" as tradition
dictates. Each of the three major clans—the [[Aashta]], the
[[Torrn]], and the [[Velderan]]—has a representative on the [[Tharashk triumvirate]] that governs the house, and the city of [[Zarash'ak]]
in the [[Shadow Marches]]. Together, they stand as one under the emblem of the //dragonne// (a lion-dragon hybrid, also called a liondrake or gamelyon). 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
The [[House of Finding|Tharashk]] has a
great interest in [[Xen'drik]] and the mineral wealth
that can be found there, as well as an interest in the
other dark lands of [[Eberron]]—[[Q'barra]], the [[Demon Wastes]], [[Khyber]], and the [[Mournland]]. The [[Tharashk]] [[enclave]] in [[Clifftop]] is primarily concerned
with exploration and prospecting. The house sells
the services of guides, and many of its members
have firsthand experience in Xen'drik and Khyber.  It is careful to retain only
guides who receive positive referrals from [[guild|Clifftop Adventurers' Guild]] members.
In addition to the powers of their [[dragonmark]]s,
these guides can provide invaluable information
about the threats lurking in these regions. When
the house plans expeditions to Xen'drik, these are
usually arranged at the Clifftop enclave. Due to
the rivalry with [[Tharashk]] and [[Deneith]], the house
often recruits adventurers to protect an expedition
instead of hiring Deneith mercenaries.
The sprawling complex of the [[Dragon Towers]] [[Tharashk]] [[Enclave|enclave]] occupies several levels of three towers
near the [[Sword Point]] district. A significant percentage of [[Sharn]]'s [[half-orc]] population lives in this complex. [[Yevgen Torrn]] leads the enclave, and
operates as a very expensive [[inquisitive]]-for-hire. 
House [[Tharashk]] is governed by a council of three, one representative from each major clan. They meet in the [[Heart]] of [[Zarash'ak]].

* [[Maagrim Torrn]]
* [[Khandar'Aashta]]
* [[Daric Velderan]]
Venerable Thatari is an aged [[kalashtar]] psionic preceptor associated with the elders
of [[Tashalatora]], to whom she usually speaks by using her
powers. She is one of the few [[psion]]s in [[Adar]] who can
manifest [[psychic chirurgy]] and [[reality revision]],
and thus she might be the only one who can save a PC from
a [[mind seed]] or similar psionic afflictions. Unfortunately
for seekers who want to speak with her, Thatari lives in the
mountains many miles from Tashalatora, alone within a
cave carved into a cliff face. Getting to her requires finding out where she is and traversing treacherous terrain inhabited by unfriendly creatures. What she might ask of
those seeking her aid is unknown, but such a request will
surely have little to do with wealth. 
Every culture has faerie tales—stories that use exaggeration
and supernatural elements to warn children of the consequences of bad behavior or to demonstrate the virtues of society. [[Breland]] tells tales of the Sleeping Prince, cursed to slumber by a cruel [[hag]] until he's saved by the courage of the Woodcutter's Daughter. In the [[Mror Holds]], there's a tale older than [[Breland]] itself, in which Lady [[Narathun]] curses [[Doldarun]]'s son with eternal sleep, until he's
saved by humble [[Toldorath|Toldorath and Tordannon]]. And the [[Dhakaan]]i dar have an ancient story about how [[Hezhaal]]—a [[dirge singer]] who betrayed
the empire and studied sinister magic—cast the marhu's son
into a cursed slumber, until he was saved by a simple [[golin'dar|goblin]].

This is just one of many stories that appear over and over in
different cultures. The exact details may shift—is the sleeper a
prince? The marhu's son? Doldarun's heir?—while the thrust of
the tale and the lessons it teaches persist. But long before any
of these cultures arose, these stories existed somewhere else.
In a [[layer]] of Thelanis, the [[Lady in Shadow]] curses a prince with
eternal sleep. She tends a garden full of wonders, and keeps
her own daughter hidden in the heart of a labyrinth of thorns.
At the deepest level, that is what the [[fey]] are: stories. The [[dryad]]
isn't a natural spirit; it's the magic we //want// in the world when
we see a slender tree move in the wind and imagine it as a
beautiful person. Thelanis is built on iconic stories, but it's also
the Faerie Court; at its heart, [[satyr]]s and [[nymph]]s dance in the
shadows of the [[Palace of the Moon]], while the [[archfey]] engage
in [[immortal]] intrigues. It's a fantastic realm essentially built
around the idea of adventures, but it's a deadly place for those
who refuse to understand its rules.

Thelanis is one of the easiest planes for mortals to reach. Just
walk through a mushroom ring when [[Rhaan]] is full in the sky, or
follow the sound of distant music in the forest. It's not always
this easy, but it //can// be. One wrong step and you could find
yourself in Thelanis, retracing the steps of storybook heroes and
making dangerous bargains with the rulers of the Faerie Court.

!! Universal Properties

Thelanis is unpredictable, and its cardinal rule is that layers
follow their own stories. Consider the following properties.

* //''Enchanted Realm.''// [[Illusion|illusion]] and [[enchantment]] spells are more difficult to resist. The duration of these spells is doubled.
* //''Storybook Logic.''// No two layers of Thelanis are exactly alike. Each is driven by its story, and any rule can be overridden by a particular tale. Damage types could be swapped or rendered impotent; in the Valley of Stolen Fire, all fire damage becomes cold damage. Certain specific actions could have advantage or disadvantage. In one layer, spells that restore health might have no effect; in another, a glass of wine could act as a [[potion of healing]]. But while these effects vary from layer to layer, they are entirely reliable within that layer and should feel logical based on the nature of the local story.
* //''Words Have Power.''// In Thelanis, words—and particularly promises—have power. Creatures should be very careful about making formal agreements of any sort, especially with [[archfey]]; the more powerful the [[fey]], the graver the consequences of breaking a promise. The price varies, a slightly broken promise to a greater fey might simply result in a run of bad luck, with disadvantage on the next few rolls. On the other hand, a promise to an archfey could inherently carry the power of a [[geas]]. The fey themselves are bound by this restriction—though they are aware of it and are exceedingly careful with their promises.
* //''Chaotic Time.''// Time is entirely flexible in Thelanis, moving at different rates from layer to layer. It's possible for adventurers to spend a night in Thelanis, then discover that a year has passed in Eberron. But it's equally possible for a group of adventurers to find a layer where they save a kingdom and reign as kings and queens... only to stumble through a gate many years later and discover that only an hour has passed in their homes. Often time catches up with mortals when they return to Eberron—either swiftly aging them if more time has passed on the Material Plane, or potentially restoring their youth and erasing the decades of time spent in Thelanis.

!! Denizens

Thelanis is home to fey in all their forms. Sprites flit between
trees, singing to the dryads that dwell within them. There are
birds in the trees, and if you talk to them, one might answer—
either a bird or a tree, depending on the story. Most of the
denizens of Thelanis fall into one of four categories.

!!! Supporting Cast

The vast majority of the creatures of Thelanis—the [[sprite]]s
in the forest, the [[dryad]]s, the birds, and for that matter, the
trees themselves—are [[manifestation]]s. These members of the
supporting cast exist because the story needs them to exist,
and they have a specific role to play. While most supporting
cast are [[fey]], any creature can appear if the story requires it. A
pack of wolves? An angry [[giant]]? A white horse that appears
just when it's needed? Anything is possible.

Supporting cast generally use the standard stat blocks
for each creature, though they might be considered fey
instead of other creature types. These creatures don't think
of themselves as manifestations; it's simply that they have no
real depth, no desires other than the drives they need to fill
their role in the story, and no care for the passage of time.
The sprite never gets bored of its song, and it never stops to
question anything about its existence.

The supporting cast reflects the fact that the stories of
Thelanis don't change. The hungry giant will always be
guarding the well. If adventurers defeat the giant, they're
the heroes of the hour and it feels like a triumph; but if they
return to the barony at a later date, the giant will be back—or
at least, a remarkably similar giant—and it won't remember
them or acknowledge their previous victory. As a general rule,
supporting cast can't abandon their posts or leave their layers.

However, more than the manifestations of other planes, the
supporting cast of Thelanis can evolve. When an [[anchor baron|archfey]]
gives the white horse to an adventurer, it becomes a mortal
horse and they can ride it home. Supporting cast that drift into
[[manifest zone]]s become mortal fey, dwelling in the zone until
they die. A supporting cast member can also evolve by gaining a
greater role in the story. An individual [[sprite]] doesn't even have a name, but if the adventurers convince the sprite to help them,
and it plays a critical role in their defeat of the giant at the well,
it's no longer a nameless sprite; it's Clever Jack, or whatever
name they gave it. If a manifestation becomes mortal, it can
go anywhere it likes, even leaving its layer and following the
adventurers back to Eberron... but if it dies, it's gone forever. On
the other hand, a manifestation can evolve to become a greater
fey; if this happens, it remains [[immortal]], and it's still tied to its
story, just with a bigger role and more personality.

!!! Eladrin and Other Mortals

There are two types of mortals in Thelanis. The first are the
supporting cast that have become real and split off from their
original stories. The second are natural-born mortals who do
have their own cultures and cities; chief among these are the
[[eladrin]], who dwell in the [[feyspire]]s of the [[Moonlit Vale]]. Each
spire is ruled by an [[archfey]], and each has a distinct story that
shapes the personality of the local eladrin. The eladrin aren't
as bound by story as other fey, but the magic of the plane
encourages a deep devotion to their spire and their ruler. They
hunt, they hold revels, they serve their ruler in the intrigues of
the [[Moon Court]]; it rarely occurs to them that there could be
more to life. However, they're indeed mortals; they fall in love,
they have children, they are born, and they die. If an eladrin
leaves their spire—whether to roam across Thelanis or into
Eberron—they often gain a greater appreciation of the passage
of time. Living among mortals in a mundane world can be a
hard transition for an eladrin; compared to the wonders of
the Faerie Court, there is little fey beauty in [[Khorvaire]]. The
longer an eladrin lives in the mortal world, the more mortal it
becomes; this is why eladrin player characters are considered
humanoids (and elves) rather than fey.

The [[eladrin]] are the most common mortals in the layer, but
there are also a handful of mortals who have been drawn
in from Eberron—the [[gnome]]s of [[Pylas Pyrial]], wandering
[[Greensingers]], mortals personally chosen by one of the
[[archfey]], or creatures who accidentally wandered through
[[manifest zone]]s and are trying to find their way home.

!!! Greater Fey

Greater [[fey]] are tied to a [[barony]] or have a role in the [[Moonlit Vale]], but they have their own names, identities, and distinct personalities. They can have their own agendas and schemes within the grander story of the [[archfey]], seeking love or
revenge or other ambitions. Sometimes the protagonist of
the story appears as a greater fey; in the case of the Sleeping Prince, perhaps the adventurers can actually meet the clever Woodcutter's Daughter. However, often the role of protagonist is left for the adventurers to fill; in Thelanis, they are the ones
who must wake the Sleeping Prince.

Despite their individuality, these greater fey are still [[fey]]; they
remain attached to their [[layer]]s, and don't experience the passage
of time as mortals do. They want to achieve things within their
story, but few have any thoughts or desires that go beyond
Thelanis. However, it's possible for them to go wherever they
want. A greater fey could establish its own domain in a [[manifest zone]] tied to Thelanis, or be found selling strange trinkets in the
[[Immeasurable Market]] of [[Syrania]]. When greater fey do leave
Thelanis, they generally seek to create their own stories; they
still want to be part of a narrative that makes sense to them. 

Any [[fey]] creature can be used as a basic foundation for a
greater fey, possibly with additional powers tied to the story
they tell. A greater [[dryad]] might be able to see through all of the
trees in the [[manifest zone]] she calls home, and to control its
beasts. This isn't represented by a spell, as she couldn't control
beasts in other places; it's simply part of the story.

As the story of a greater fey grows, its abilities can grow as
well... but these are often tied to storybook logic, and power
could be balanced by a weakness. A greater dryad could be
immune to fire unless someone knows her name, at which point
she is vulnerable to it. Or she might be immune to piercing
damage but vulnerable to slashing damage—arrows and
spears refuse to strike her, but axes hunger to cut her down.

!!! Archfey and Anchor Barons

The [[archfey]] are the foundation of Thelanis, the force that sets
a story in motion. Where greater fey may be tied to a single
story, most archfey have inspired countless tales—often as the
antagonist, though they can also be benevolent.

Many archfey dwell in the [[Moonlit Vale]]. Some rule over
[[feyspire]]s, while others dwell in the [[Palace of the Moon]]; the
intrigues of the Court are their defining stories. Archfey that rule
[[layer]]s are known as anchor barons, as each is the anchor that
defines the [[barony]]. They come to the Palace of the Moon for
revels or conclaves, but prefer to dwell in their own story.

!! Layers

Much like [[Kythri]], [[Dal Quor]], and [[Syrania]], Thelanis has a core
[[layer]] surrounded by lesser layers. The heart of Thelanis is the
[[Moonlit Vale]], where all [[archfey]] gather for their revels. This is
surrounded by endless [[baronies|barony]], each embodying the stories
of a particular archfey. While [[eladrin]] and [[fey]] can shift between
layers, it's more challenging for mortals to travel to a barony; this often requires a token from that realm, or for the mortals to act out some aspect of its story. Regardless of the specific identity of a layer, Thelanis always feels magical and otherworldy. Its environments are typically vibrant and beautiful, but if they are harsh and ugly, they are exceptionally so. It feels like a story, exaggerated and unreal.

* the [[Moonlit Vale]]

!!! Baronies

<<list-links-article "[tag{!!title}tag[barony]sort[title]]">>

!! Planar Manifestations

Here are a few ways Thelanis can affect the world.

!!! Manifest Zones

More than with any other plane, Thelanian [[manifest zone]]s
often allow travel between the [[plane]]s. [[Fey|fey]] creatures dwell
in such zones, and a greater fey may turn such a manifest
zone into its personal domain. Just as fey can cross over from
Thelanis, mortals can travel to the Faerie Court. Gateway
zones always share the general environment of the layer
they are connected to, though it's rarely obvious when this
passage occurs, and it may take time for travelers to realize
they have crossed over. However, there are always signs of a
gateway—circles of mushrooms, strange patterns of vegetation,
eerie lights, or faint, unearthly music the adventurers must
follow. Gateways typically only activate at certain times—
often when the moon [[Rhaan]] is full—and even then, there's
usually something that must be done that violates a known
superstition. If you stay on the path in the forest, you won't
stumble into the [[Endless Weald]]. But if you follow the ghostly
music, or chase the silvery deer? That's on you.

Other manifest zones reflect the properties and influence of
Thelanis without allowing passage between worlds. Zones with
the //Enchanted Realm// property are much sought after by House
[[Phiarlan]] and House [[Thuranni]]. Zones with //Storybook Logic//
break the rules of reality in specific ways; the ''Grove of Promises''
is a clearing that holds an old stone fountain. Stories from the nearby village say that if you make a promise to someone and then share a drink from the fountain, you must keep your word—and if you are false, you'll sicken and die. The people of
the town perform marriages in the Grove. Young lovers sneak
away to pledge their hearts. There are even merchants who like
to seal their deals in the Grove. The people of the town never
break a promise sworn in the Grove... will you?

A final form of [[manifest zone]] is the beachhead; this
phenomenon periodically draws a piece of Thelanis into
[[Eberron]]. The f[[eyspire]]s are an example of
this, but a beachhead can be any unusual location—sure to be
a local legend, but rarely be found by those searching for it,
only uncovered by chance. There's a tale in the [[Mror Holds]] of
the Tomb of the Forgotten King, found when a traveler seeks
shelter in a cave and discovers deeper passages. Following
these tunnels, they find themselves in an ancient tomb. Jewels
are embedded in the walls. Coins are heaped on tables, spilling
onto the floor. In some versions of the story, guardians patrol
the tomb, spirits of stone and metal. In others, there are deadly
traps. But one detail remains the same throughout all the
tales: treasures taken from the tomb always bring misfortune,
bestowing curses that linger until the thief finds the tomb again
and returns what they have stolen... or until they die.

!!! Coterminous and Remote

When Thelanis is coterminous, new gateway zones spring
up. Mischievous or cruel [[fey]] may cross over, and it's far easier
for careless travelers to cross over. However, there are always
warning signs, and you generally must break some superstition
or taboo to be pulled through. Thus, when people know the
planes are coterminous, they are cautious to remember the
stories and avoid foolish behavior.

When Thelanis is remote, the effects of Thelanian [[manifest zone]]s are suppressed. Fey creatures may be temporarily drawn back to Thelanis, even those that normally dwell on Eberron. In general, the world feels less magical.

Traditionally, Thelanis becomes coterminous for a period
of 7 years every 225 years, and it is remote for 7 years
halfway between these cycles. However, there is evidence,
such as beachheads remaining in place longer than usual,
that something has disrupted this cycle. This may be a result
of the [[Mourning]]... or it could be that the Mourning is just an
easy excuse, and the true story is tied to the schemes of an
[[archfey]] or a mortal mastermind. Nonetheless, no one knows
when Thelanis will become coterminous again—or how long
the phase might last when it does.

!!! Thelanian Artifacts

Thelanis can be a source of wondrous [[magical items|magic item]]. The
simplest deal with [[illusion]] or [[enchantment]]: [[eyes of charming]]
or a [[hat of disguise]]. But any sort of magic item can come from
Thelanis—the catch is that Thelanian items invariably have a
story attached to them. The [[berserker axe]] that can't be released
until it kills someone you love. The [[dragon slayer]] that calls out
to [[dragon]]s, summoning [[wyvern]]s for you to fight and drawing
the attention of agents of the [[Chamber]]. The [[crystal ball]] that
occasionally shows glimpses of things you don't want to know.

Thelanian items can also hold curses that come with no
accompanying benefit. The //mithral falcon// is a statue that
amplifies existing greed. Generous people are unaffected by
its magic, but greedy folk feel a growing need to claim the
falcon from its current owner. The falcon can start a gang war
between [[criminal organization]]s, or turn [[Aurum]] concordians
into the bitterest of enemies. The falcon has no beneficial
powers, but its curse can drive a story.

!! Thelanian Stories

Thelanian stories can start before a campaign begins. With the
DM's permission, any character or party could be connected to
an [[archfey]], for better or for worse. Here are a few examples.

//''The Patron.''// Whether serving as patron for a [[warlock]]
or an entire party, an [[archfey]] could work with adventurers,
providing magical benefits—perhaps spells from the [[artificer]]
or [[bard]] lists, or boons and [[magic item]]s—in exchange for the
character's services. It could be that the patron's goals are tied
to the intrigues of the [[Moon Court]] or to some element of its
story. It might want the characters to deal with the [[warlock]]
agents of another archfey. Or it could be that the archfey is
trying to get the adventurers to reenact its story in the present
day, to have a character serve as an avatar for the archfey—or as the avatar for one of its enemies.

//''Blessing or Curse?''// You don't have to be a [[warlock]] to draw
powers from an [[archfey]]. An [[artificer]] could have been blessed
by the [[Forge Maiden]]; their artifice isn't arcane science, they
simply create impossible, whimsical things. A barbarian's
rage could be a curse from the [[Lady in Shadow]], laid upon an
ancestor and handed down through generations. All other
members of the character's family have eventually been killed
by their fury; does the barbarian seek to break the curse, or
do they just want to live as wild a life as possible before it
consumes them?

//''Faerie Tales.''// The [[archfey]] and the [[baronies|barony]] are the source
of faerie tales. You can draw from beloved tales in our own
world to craft any adventure, adding an [[Eberron]] twist.
Using these tropes gives the players a sense of familiarity
with the story, just as the people of Eberron are familiar
with these archetypal tales, played out time and time again
across cultures and generations. So, the Sleeping Prince
clearly follows the same basic principles as Sleeping Beauty
or Snow White, but with an Eberron twist—it's [[Sora Katra]]
and the prince of [[Breland]]!

//''The Actual Changeling.''// As a child, any character could
have wandered through a [[manifest zone]], stumbled into a
[[feyspire]], or even caught the eye of an [[archfey]] and been carried
off to Thelanis. A [[bard]] could have learned their craft in [[Pylas Pyrial]]. A [[druid]]'s abilities might be tied less to nature and more to the magic of the [[fey]]. It might be that a [[warlock]] doesn't have a direct patron, but they're the adopted child of the [[Lady in Shadow]] and learned her tricks by watching her. If this is the
case, is the character welcome to one day return to Thelanis,
or were they cast out of it? Did the Lady in Shadow encourage
her child to leave, or did the adventurer escape from the maze
of thorns where they were held prisoner (for their own good,
of course)? Does the character have a fey lover or rival in
Thelanis? With the DM's permission, such a changeling—of
any race—could find a welcome with the fey. Such fey would be more likely to talk
with you, and might provide you with safe passage through
their territory or even share stories. Lesser fey are also hidden
across the world—minor spirits that dwell in cupboards and
clearings—and these spirits might emerge to offer you minor
aid or advice. Just don't forget that you're always expected to
offer payment for services you receive, even if it's just a gift of
food or a song.
! The Healer

''Color:'' Blue-gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Healing|Mark of Healing]]<br/>
''Associated Plane:'' [[Syrania]]

Therendor is the "brother moon" of [[Barrakas]], sharing a similar but narrower orbit with the Lantern Moon. The [[Seren]]s and [[druid]]s maintain that natural medicines concocted when Therendor is full and [[Barrakas]] is new are more potent. Those born in the month of Therendor are thought to be gentle and empathetic; priests, mediators, and healers often have Therendor as their ascendant moon.
The Seekers of the Divinity Within (the dominant sect of the [[Blood of Vol]]) value community, urging the faithful to stand together. But there are others who follow the
principles of the Blood of Vol who prefer to stand alone. The
hermits known as Thieves of Life are determined to unlock
their divinity within at any cost—not to help others, but solely to
further their own quest for power and immortality. Thieves of
Life are often master [[necromancers|necromancy]], but never become [[undead]]
themselves; instead, they specialize in magics that allow them
to drain the life from their foes.

As a player character devoted to the Blood of Vol, you could choose
the path of the Thief of Life. You are utterly devoted to the
pursuit of your personal divinity, and perhaps you have already discovered the path you must take. You might be a [[cleric]], a [[sorcerer]], or a [[warlock]] (with your
patron being your own nascent divinity within). What binds
you to your fellow adventurers, and why would they choose to
associate with you? You may be utterly devoted to your quest
for immortality—but what is your redeeming feature, your
anchor to humanity?

An unusual option for a Thief of Life hermit is to say that
you've actually been in a state of suspended animation for
decades or even centuries. You were once far more powerful than you are
today, but your powers have yet to return; as you gain strength,
you are actually regaining the power you once had. If this is
the case, it could be that one or more of your adventuring
companions are actually descendants of yours; while you're
obsessed with your quest for immortality, you also care about
your own bloodline.
While holding this dagger, you can speak its command
word to cause it to transform into a set of [[thieves' tools]], linked by a thin, silver chain. You can speak its command word again and cause it to transform back into a dagger. 
This set of tools includes a small file, a set of lock picks, a small mirror mounted on a metal handle, a set of narrow-bladed scissors, and a pair of pliers. Gain an advantage to open locks or disarm traps using these tools. 
Thir—draconic for "three"—is the worship of the Draconic Sovereigns, practiced by the [[dragon]]s of [[Argonnessen]] and the [[dragonborn]] of [[Ka'rhashan]]. These deities mirror the gods of the [[Sovereign Host]] and [[Dark Six]], but they
take the forms of dragons. They are thought to be
dragon heroes from the [[Age of Demons]] who ascended
to divinity and now influence the world. 

Above all, practitioners of Thir revere the [[Progenitor Dragons]].
Thora Tavin has the ability to sense mystical energies—a gift that enables her to identify others with [[aberrant marks|aberrant dragonmark]]. She founded the House [[Tarkanan]]
and serves as its leader. While she uses the name Thora Tarkanan among her compatriots, she has established herself as Thora Tavin among the wealthy
elite of Sharn and has cultivated relationships with
many influential people. 

Her residence can be found in [[Dragon Towers]], nestled between the [[enclave]]s of the [[dragonmarked house]]s. The spacious mansion serves as a secret headquarters for Tarkanan.
The Thornwood is a small forest in [[Thrane]], located on the shores of the [[Brey River]] overlooking the [[Mournland]].
To a [[Riedra]]n, no one in their right mind turns against the
Inspired. Those who do are clearly victims of //altavar// influence. Someone has to help these victims if possible, or do
whatever is necessary to ensure that they do not threaten
innocent souls. Those tasks fall to the Thousand Eyes.

The Thousand Eyes administers justice across
[[Riedra]] and maintains the reclamation centers. Public agents of the Thousand Eyes—easily identified by their
green uniforms and golden badges of office—can be
found throughout any bastion, and people take comfort
in knowing that these guardians are watching. Far more
dangerous, however, are the secret members of the Eyes.
Nearly anyone in Riedra could be an agent. Furthermore, even when no one is around, "remote viewing" ([[psionic|psionics]] [[scrying]]) allows the Eyes to see the deeds of malefactors.

Agents of the Thousand Eyes are typically [[human]],
[[Chosen]], or [[changeling]]. The bulk are simply observers, experts in disguise and information gathering, along with a craft or profession as a cover. More
capable agents specialize in observation and stealth. [[Chosen]] and especially honored
[[changeling]]s are trained in the [[psionic|psionics]] arts. When force is required,
the Thousand Eyes calls on [[Bastion Guard]]s or the [[Sleeping Sword]], but it also maintains a covert corps of changeling [[masquer]]s, [[psi warrior]]s, and [[soulknife]] assassins.

The city of [[Dul Zeer]] is the Thousand Eyes' greatest stronghold. Here, a network of remote viewing crystals allows agents to scry across
the [[continent|Sarlona]], and teleportation circles let
them dispatch forces to any bastion
or kintam (fortress). Agents in villages can
be alerted through dreams. In
an emergency, psionic dispatchers can
teleport forces to the site of
a disturbance.

The high minister of
the Thousand Eyes is Lady [[Sharadhuna]].
Similar to the Atrium,
Thovanic Hall is a former theater converted to use
as a recital hall. It is still very new (the renovation
was completed only two years ago), and is still trying
to build its reputation as a place for fine music
to compete with the [[Atrium]]. As a distinguishing
point, Thovanic presents a significant number of
non-[[Brelish|Breland]] and even nonhuman performers, who
bring diversity to the musical offerings that the
residents of [[Middle Menthis]] find sorely lacking in
the district's other offerings.
This village in [[Droaam]] is the seat of the fiefdom of the [[oni]] [[warlord]] [[Drul Kantar]].
''Capital:'' [[Flamekeep]]<br/>
''Hallmarks:'' [[Divine magic|divine magic]], fine crafts, fruit, livestock, the [[Silver Flame]], textiles, wool 

The modern Church of the [[Silver Flame]] was founded in
Thrane, and most of the people of the nation follow this
faith. During the [[Last War]], the people of Thrane chose
to set aside the rule of the monarchy and to embrace
the leadership of the church. For the last seventy years,
Thrane has been a theocracy. The head of the state is
11-year-old Jaela Daran, the divinely selected [[Keeper of the Flame]]. Jaela depends on the [[Council of Cardinals]] to
perform the practical work of running the nation.

The primary purpose of the Silver Flame is to defend
the innocent from supernatural evil. The church has
always had a militant aspect, with battalions of templars
and peasant militias prepared to face [[undead]], [[lycanthrope]]s, or other monstrous threats. But compassion
and charity are core values of the church, and the templars are tasked to defend all innocents. Even during the
Last War, if a [[fiend]]ish threat arose in a [[Brelish|Breland]] village,
Thrane templars would ally with the locals to bring an
end to the threat. Not all Thranes rise to this ideal. Zealous Thranes believe the church is destined to reunite [[Galifar]] under the Silver Flame, and corrupt priests are
interested only in power and wealth.

Not all priests are [[cleric]]s, and the typical templar is a
mundane warrior. However, due to the deep faith of its
people, Thrane produces more clerics and [[paladin]]s than
any other nation in [[Khorvaire]]. 

!! Interesting Things About {{!!title}}

* Faith is part of daily life in Thrane, and divine adepts provide important services. Magic is also common in Thrane. [[Everbright lantern|everbright lantern]]s light the streets while [[magewright]]s and [[wizard]]s practice their trades, though there are fewer of them than in other nations.
* Every town has a militia ready to deal with supernatural threats, and people stand together to fight darkness. Champions of the light find support and hospitality, but any character who dabbles with dark forces—[[necromancer|necromancy]]s, [[warlock]]s, and the like—finds Thrane a dangerous, unwelcoming place.
* The feudal system of nobility remains in place, but ultimate authority rests in the hands of the church. Queen [[Diani ir'Wynarn]] is the "blood regent," serving as a symbolic advisor to the [[Keeper of the Flame]]. A small fraction of the population would like to see the traditional monarchy restored to power. 

!! Thrane Characters

As you develop a Thrane character, consider the following details:

* ''The Impact of Faith.'' If you want to reflect a close bond to the [[Silver Flame]], you could gain a few divine spells by taking the Magic Initiate feat. Archery is a devotional practice of the Silver Flame, so as a martial Thrane you might focus on archery-related combat styles or take the Sharpshooter feat. Any Thrane could take the acolyte background to reflect a strong connection to the church or the soldier background based on service with the templars.
* ''Church or Crown?'' Do you support the theocracy, or would you like to see power restored to the throne? Many people of faith believe that miring the church in politics distracts it and invites corruption.
* ''Dealing with Darkness.'' The [[Shadow in the Flame|Bel Shalor]] can tempt even the most virtuous soul. How do you react when you encounter corruption and greed? Are you a compassionate person who seeks to lead people to the light, or a zealot determined to crush all darkness? 

!! Cities and Sites

The Church of the [[Silver Flame]] is a militant faith, and
Thrane communities are built around fortified churches
designed to serve as fortresses in times of trouble.
Larger towns maintain sturdy walls patrolled by skilled
archers. A Flamic architectural style appears throughout the region. Buildings incorporate light and soaring
spaces, and icons of the Silver Flame and images of the
martyr [[Tira Miron]] appear throughout the nation. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

The war is over, but deep rifts remain between Thrane
and its neighbors. [[Aundair]]ian war magic created a
blasted wasteland between the two nations. To the east,
the conflict with [[Karrnath]] left farms and cities such as
[[Shadukar]] devastated and abandoned, home only to the
lingering undead left behind after the Karrnathi retreat.

For most, these grim reminders of war strengthen
Thrane resolve. The common people are united by their
faith and sure of the righteousness of their cause. The
[[Silver Flame]] urges people to stand together in the face
of evil, and across the nation, villagers work together to
repair the damage inflicted during the war. People in
a Thrane village regularly cooperate to raise a barn or
practice archery in the fields.

The Silver Flame urges its followers to feel compassion for all people, which often proves a more difficult challenge. Thrane has never forgiven Karrnath for its
use of [[undead]] soldiers, and many Thranes are quick
to imagine all Karrns as agents of darkness. Likewise,
Thranes have bitter memories of the conflict with Aundair, and Aundairian wizards or eldritch knights receive a cold reception.

For most Thranes, the war strengthened their faith
and drew them together. However, some question the
validity of theocratic rule. Such doubt can be found
even among the most devout followers of the faith; such
people fear that the merging of temporal and spiritual
authority distracts the church from its proper mission.
If these doubts spread, a serious faction might seek
to restore Queen Diani to power.

[[Thaliost]] is another open wound. The [[Council of Cardinals]] is determined to hold onto
this prize, but it is a bitter point of contention with [[Aundair]] and a constant source
of tension and violence. In creating a Thrane character, consider how you feel about Thaliost. Would you like to see it returned to Aundair, or do you support Thrane's rule? 
The lords of [[Thrane]] still hold Queen [[Wroann|Wroann ir'Wynarn]]
responsible for the [[Last War]], and relations between
the two countries have never been warm—though
this general distaste pales in comparison to the
hatred the people of Thrane have for the [[Karrn|Karrnath]]s.

Lady Anador ir’Laisha monitors events in the city on behalf of her nation, but rarely becomes actively involved in local affairs. She is devoted to the [[Silver Flame]] and attends services at the [[Cathedral of the Cleansing Flame]]. Blinded by her faith, Lady
ir’Laisha trusts the Archierophant implicitly and
angrily dismisses any suggestions that [[Ythana Morr]] might
be using the power of the Church for her own
benefit. Lady ir’Laisha’s devotion to the church is
greater then loyalty to her country, and she may be
manipulated into unknowingly assisting Ythana
with a nefarious scheme.
The Thrane River in [[Khorvaire]] flows past the [[Thrane]] city of [[Sigilstar]] into [[Scions Sound]].
Followers of the [[Pyrinean Creed]] honor the [[Sovereigns|Sovereign Host]] and are
encouraged to shun the [[Dark Six]]. The Six embody dark forces
that have no place in a virtuous society. However, over the
course of centuries, there have always been cults to challenge
this view. The Three Faces cults serve two purposes. On the
one hand, they honor particular groupings of the Sovereigns
and Six, asserting that there are members of the Six with
something valuable to offer worshippers. Beyond this, the cults
are also secret societies—a form of fraternal order that binds
people together even if they aren't truly invested in the religious
aspects of the cult. For example, the [[Three Faces of War]] can
be found in all of the armies of the [[Five Nations]].

<<list-links-article "[tag{!!title}sort[title]]">>
The Three Faces of Coin honors [[Kol Korran]], [[Onatar]], and Kol
Turrant (the [[Keeper]]). This cult operates in major cities, usually
recruiting merchants, smugglers, and captains of industry. It is
based on the idea that while honest trade and industry form the
core of commerce, there should always be a way for people to
get what they desire; thus, it is a neutral ground where criminals
and guild artisans can work together. The [[Aurum]] often recruits
members from the Three Faces of Coin.
The Three Faces of Love honors [[Boldrei]], [[Arawai]], and
Szorawai (the [[Fury]])—the Love that Binds, the Love that Brings
Life, and the Love that Burns. This cult embraces all who
believe in and wield the power of love, from actors to poets
to paid companions. Members gather to share stories and
change lives; the cult excels at matchmaking and at disrupting
important relationships they consider to be doomed.
The Three Faces of the Wild honors [[Arawai]], [[Balinor]], and
Shargon (the [[Devourer]]). Sects are usually found in rural
communities, and include farmers, hunters, and all manner of
wanderers. The Three Faces of the Wild supports agriculture
and hunting, but recognizes that the wild cannot be fully
tamed. Members sometimes engage in ritual sacrifices or the
burning of fields or other acts of destruction. They believe that
the Devourer must have his due—and by making their chosen
offerings, they keep him from striking elsewhere.
The Three Faces of War honors [[Dol Arrah]], [[Dol Dorn]], and
Dol Azur (the [[Mockery]]). It was part of the united armies of
[[Galifar]], and cult chapters can be found in all of the armies of
the [[Five Nations]]. Sect meetings provide a place for soldiers
and veterans to interact as friends and equals, regardless of
rank or nationality. The cult asserts that honor and courage
are to be valued, but there is also a time and place for cunning
and cruelty, even if it is never to be desired.
The Three Sisters are a trio of islands in the [[Lhazaar Principalities]]. They separate the [[Bitter Sea]] from the [[Straits of Orthoss]].
House [[Deneith]] maintains
this fortified [[enclave]] in [[Copper Arch]]. This includes
a garrison for the Blademark soldiers who serve as
the private watch of [[Upper Tavick's Landing]]. A second tower is dedicated to house business and training. The third is private mansion accessible only to the [[Sharn]]
Deneith. If a Deneith heir from outside Sharn tries to enter the
facility, she is told that the enclave is restricted and
directed to the main enclave in [[Dragon Towers]]. 

!! The Dreaming Dark

While it seems like a typical [[Deneith]] [[enclave]]
to the casual observer, the [[Sharn]] household is
anything but ordinary. Almost a century ago the
Sharn enclave was compromised by the [[Dreaming Dark]], and today it is a stronghold of shadows. At the start of the [[Last War]], the [[Inspired]] dominator
[[Tirashana]] used [[mind seed]] to seize control of the lord
of the household, and through him she spread her
influence throughout the enclave. While the enclave
serves the Dreaming Dark, most of its members have
no idea that they are in league with the Inspired.
In the guise of the Deneith patriarch, Tirashana
began teaching [[psionic|psionics]] techniques to the defenders.
Over the course of a century of indoctrination, she
has taught the Sharn Deneith to see themselves as
the forerunners of a new race, superior to humans
because of their [[dragonmark]]s and raised above the
dragonmarked by their psychic abilities. Even those
who deal directly with the Inspired believe that they
are working together as equal partners. In fact, there
is little difference between the leaders of the house
and the Inspired. The heirs that show the greatest
promise are carefully indoctrinated and prepared
for the “ascension,” the ceremony that opens up their true potential. This ritual simply involves possession by a [[quori]] spirit, but the Deneith have been
trained to believe that this spirit is the manifestation
of their own psyche and thus individuals serve as
willing partners. There are fifteen members of the
Sharn Deneith who have been possessed by [[tsucora]]
spirits; the [[fiend]] that dominates the lord of the
house is of a greater order.

Under the tutelage of the [[Dreaming Dark]], the
[[Sharn]] [[Deneith]] have become masters of intrigue and
subtlety. They carefully conceal their [[psionic|psionics]] powers
from outsiders, and even visiting Deneith heirs
do not notice anything strange about the enclave.
The Sharn Deneith maintain a separate facility in
Copper Arch where they hone their psionic skills;
there is nothing about the [[Dragon Towers]] enclave
that suggests the strange alliance of the heirs.

The Sharn Deneith primarily serve the Dark
by gathering information. As the bodyguards and
guardians of the wealthy and elite citizens of Sharn,
the heirs of Deneith are privy to many of the secrets
of the city, and they hold the keys to the doors of the
great and powerful.

While they can occasionally allow a “failure in
security” to occur, the Sharn Deneith need to be
careful to preserve the reputation of the house and
avoid drawing suspicion upon the enclave. A Deneith
bodyguard protects his charge from all dangers—but
he also memorizes every conversation and every event
for the benefit of the Dark. And if the [[Inspired]]
ever did move openly against Sharn, the [[Blademarks|Blademarks Guild]]
and the [[Defenders Guild]] would be able to launch a
devastating first strike from within the city.

!! Prominent NPCs

The lord of the household
is Sadran d'Deneith.
A lean man with iron-gray hair and piercing gray
eyes, Sadran is the third lord of the house to carry a
[[quori]] spirit. His son Sadral is the heir to the enclave. Currently he is the host of a [[tsucora]] spirit, but he will
become the next host of Sadran's [[quori]] spirit when
his father dies.

The enclave includes nine [[Sentinel Marshals]].
The most accomplished of these are [[Lalia|Lalia d'Deneith]] and [[Tasra d'Deneith]],
identical twin sisters who both bear the Lesser [[Mark of Sentinel]] and carry [[tsucora]] spirits. Lalia specializes in tracking fugitives through the wilderness, while
Tasra knows the seedy areas of [[Sharn]] like the back of
her hand. The two sisters have a cruel sense of humor,
and enjoy toying with their quarry during a hunt. 
(Triceratops)

One of the most aggressive of the herbivorous [[dinosaur]]s, a threehorn has a skull that flares out to form a protective plate of bone. With its great horns and formidable speed, a threehorn gores and tramples would-be predators to death.
The greatest [[angel]]s of [[Syrania]] are the thrones. There's a
single throne for each [[domain|Syranian domain]], and they have a profound
knowledge of their entire domain. Unlike lesser angels,
thrones are known only by their domain, with no other
name—//the Throne of War//. They're bound to all the
[[dominion]]s whose studies lie within their domain, and they
know everything experienced by those dominions. They
largely remain in deep contemplation, acting only if Syrania
itself is threatened or if a dominion succumbs to [[corruption|radiant idol]].
A throne has powers equal to or greater than a [[solar]], though
when using spells such as [[commune]], it can only answer
questions tied to its domain. A throne can strip the benefits of Syrania's
//Unburdened// property for any number of creatures it can
see—so flightless creatures who cause trouble may find
themselves falling forever through the [[Open Sky]].

The thrones are the most powerful entities that can be
encountered by mortals, but many sages assume that they are
themselves tied to a greater force who knows everything that
they experience, and who shapes the [[plane]] itself.
''Hallmarks:'' Entertainers, international intrigue, spies

After forging a united kingdom, [[Galifar I|Galifar ir'Wynarn]] realized early
on that the crown could not rule from one of the existing
realms. To do so would be to put one of the [[Five Nations]]
above the others, and that would lead to breaks and fractures that would eventually destroy the kingdom. Thus,
he established his seat of power on an island in [[Scions Sound]]. There he built the great castle of Thronehold.

After [[Jarot ir'Wynarn]]'s death and the rejection of the line of succession that led to the [[Last War]], the island and castle
were largely abandoned. A special detachment of House
[[Deneith]] guards, the Throne Wardens, remained in
place to protect the castle, but all government functions
ceased with the collapse of the Kingdom of [[Galifar]].

[[Throneport]], a town in the shadow of the castle, became a place for dissidents, criminals, spies, and mercenaries, and the once safe port turned into a rough-and-tumble town without allegiance to any single nation. 

!! Interesting Things About {{!!title}}

* Representatives (and spies) of the [[Five Nations]] gather in the town of Throneport, where it's impossible to tell friend from foe and alliances shift daily.
* Although [[Cyre]] no longer has a peacekeeping force on the island, many Cyrans find work here as spies and agents for other nations. 

!! Thronehold Characters

As you develop a character or NPC from Thronehold,
consider the following:

* ''Cold Warriors.'' Thronehold is a gladiatorial arena for diplomats and spies, a dangerous playground for bored nobles, and a haven for treacherous double agents. Characters with the charlatan, spy, noble, or criminal background might all test their skills here.
* ''Play It Again.'' If diplomats and spies have one thing in common, it's a weakness for pleasant distractions. When not playing their games of deceit, they seek out the best entertainment and companionship the island has to offer. Characters with the entertainer background can make many untrustworthy friends here. 

!! Aftermath of the Last War

By 975 YK, [[Throneport]] had grown into a small city in
which all of the nations and [[dragonmarked house]]s had
at least a small presence, turning it into a hotbed of international intrigue. The [[Treaty of Thronehold]] further
solidified Throneport as a multinational capital under
the control of small peacekeeping forces from [[Aundair]],
[[Breland]], [[Karrnath]], and [[Thrane]], with House [[Deneith]]
Throne Wardens in place to make sure the terms of
the treaty are honored. Today, the small city is neutral
ground, but the castle and its grounds remain off limits
and under the watchful protection of the wardens. 
''Date: '' [[11 Aryth|Khorvaire calendar]]

This observance marks the day that the [[Treaty of Thronehold]] was signed, officially ending the Last War.
This year (998 YK) is only the second time the event has
been commemorated, and the [[Lord Mayor|Lord Mayor of Sharn]] of [[Sharn]] has
promised a truly epic festival.

See also [[Thronehold]].
Below the castle walls of [[Thronehold]] stands Throneport, a small
town that arose during the old [[kingdom|Galifar]]’s height. Since no one ruled Thronehold during the [[Last War]], the town was not subject to any nation’s laws—criminals, exiles, mercenaries, and other scum arrived and prospered. The town became a haven for the desperate and villainous. The end of the Last War checked its decline as the [[dragonmarked house]]s and citizens
and officials from each of the [[Five Nations]] returned
to the island. The criminal element remains, but
Throneport is becoming a functioning community
once more, one that all nations recognize as neutral
ground.
Bred by the [[daelkyr]] [[Valaara]], this bizarre [[symbiont]] burrows
into the palm of its host, secreting razor-sharp chitin blades
that can also be used as throwing weapons. When you attune
to the scarab, it fuses with one of your hands, visible only as an
iridescent, chitinous growth on your palm.

You can extrude a shard of razor-sharp chitin from
the symbiont into your empty hand, using it as a throwable dagger. The shard dissolves into acid once it hits a solid object.
Thrug is an island in the [[Lhazaar Principalities]].
Queen [[Aurala|Aurala ir'Wynarn]] commands the [[Royal Eyes]] of [[Aundair]],
as have her predecessors. To manage the day-to-day
affairs and sort through the incoming information,
the queen relies on her Spy Master. Currently, Thuel Racannoch holds that post. A mage who has a penchant for [[divination]] magic, the Spy
Master sifts through voluminous reports and delivers summaries to the queen. In addition, Racannoch manages the field agents, organizing and assigning missions, and vetting all new recruits.

Thuel has only held the position for the past two years; he replaced Nara ir'Galanatyr, who retired under mysterious circumstances to [[Wyr]] shortly after Aurala signed the [[Treaty of Thronehold]]. Thuel is completely loyal to Aurala, having worked his way up the ranks the hard way over many years, without the usual benefit of an easy start granted to those of noble birth.
The Thunder Sea lies between [[Khorvaire]], [[Aerenal]],
and Xen'drik. [[Shargon's Teeth]] mark its western extent,
and to the east it flows into the [[Dragonreach]] (via the [[Aerenal]] Channel) and the [[Dark Sea]]. Beneath its surface lie
sunken ruins from the [[Age of Giants]], particularly in the
area around Shargon’s Teeth. Besides the [[sahuagin]] that
infest the straits, dragon eels, [[dragon turtle]]s, [[kraken]], and
numerous other creatures prey on ships sailing the Thunder
Sea. Thick kelp beds frequently slow the progress of ships
plying these waters, even those that stay close to Khorvaire’s
coast. 
These bracelets of leather have steel plates that cover the wearer's palms and fasten around the middle and index finger. When the wearer claps, the cuffs emit a hugely loud concussive blast strong enough to break glass within 15 feet.
Thuranne d'[[Velderan]] ([[half-orc]]), a scion of House [[Tharashk]], operates an
[[inquisitive]] agency in [[Warden Towers]]. Her greatest
asset is an extensive network of contacts within the
Warden Towers garrison, which gives her access to
resources beyond the reach of most inquisitives. She
specializes in criminal investigation, and frequently
consults for the [[Watch|Sharn Watch]] to repay the many favors her
contacts have performed for her. She is not particularly
favored in House Tharashk, since she prefers to run
her own business than take on jobs for the house.
''Leader:'' [[Elar d'Thuranni]] <br/>
''Headquarters:'' [[Regalport]] ([[Lhazaar Principalities]]) <br/>
''Dragonmark:'' [[Mark of Shadow]]

//Only from the shadows can one see clearly. Illumination waits for those who dare to step out of the light.//

<div align="right">—Taen d'Thuranni, bright phantasm of the Shadow Network</div>

[[Elves|elf]] have carried the [[Mark of Shadow]] for thousands of
years. The mark's bearers left [[Aerenal]] after the conflict
that wiped out the [[Mark of Death]] and established House
[[Phiarlan]] in [[Khorvaire]]. These elves are expert entertainers, giving them access to all manner of places and secrets. Known to few, there has always been an elite force
of spies and assassins within House Phiarlan. Only special clients—nobles, merchant lords, and the like—have
access to these spies.

Toward the end of the [[Last War]], a bitter feud broke
out between the major families of the house. Known
as the Shadow Schism, it resulted in a split within
[[Phiarlan]]—and the foundation of House Thuranni.
House Phiarlan continues to offer entertainment and
espionage in the lands west of the [[Mournland]], while
Thuranni operates in the eastern lands. As a rule,
[[Phiarlan]] elves are the better spies and Thuranni agents
are superior assassins. Thuranni and Phiarlan maintain a peaceful relationship, but rivalries run deep.

Baron [[Elar d'Thuranni]] is said to be responsible for
the Shadow Schism. Ruling the house from an [[enclave]]
in [[Regalport]], he is always accompanied by a shadowy
pair, rumored to be embodiments of shadow itself. The
[[displacer beast]] serves as the young house's emblem. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
To use this cloak's effect, you must have the [[Mark of Shadow]].

While you wear this cloak, it projects an illusion that makes you appear to be standing in a place near your actual location, much like a [[displacer beast]]. If you or the cloak take damage, the property ceases to function for 5-10 seconds. This property is suppressed while you are incapacitated, restrained, or otherwise unable to move.

(See also [[cloak of displacement]], the higher rarity version of this item that does not require a [[dragonmark]].)
Born and bred in [[Sharn]], Thurik Davandi ([[gnome]] councilor for [[Upper Menthis]]) is as cunning and deceptive as any [[Zilargo]] gnome. He gained his seat on the Council through
a clever combination of flattery and blackmail, and he has a hold over many of the more powerful merchants of [[Menthis|Menthis Plateau]]. He has strong ties with the
[[Boromar Clan]] and the Zilargo Embassy, and often
uses his influence to help these allies. But he is
always looking for ways to increase his own power at
the expense of his associates, and he may lure adventurers into his web of conspiracy and deception. 
The Thurim Bay lies the coast of [[Zilargo]], and is the namesake of the city of [[Thurimbar]].
This port city draws musicians and artists from across
[[Khorvaire]]. It addition to its legendary clubs and schools
of music, Thurimbar is on the cutting edge of arcane
sound—the use of [[illusion]] magic to generate music. Entertainers flock to Thurimbar to share their music and
immerse themselves in its rich musical culture. 
The //Thurimbar rod// is a magical instrument developed by the gnomes of [[Zilargo]] (See [[Thurimbar]]). While holding the rod, you can produce auditory illusions that unerringly replicate the sound of any instrument with which you're proficient. If you are proficient with the //Thurimbar rod// itself, you can produce unearthly music unlike any natural instrument.
You conjure up a wave of water that crashes down on an area within 120 feet. The area can be up to 30 feet long, up to 10 feet wide, and up to 10 feet tall. Each creature in that area is struck by the wave and may be knocked prone. The water then spreads out across the ground in all directions, extinguishing unprotected flames in its area and within 30 feet of it, and then it vanishes.
<$list filter="[has[tooltip]]" variable="tid1">
<$list filter="[<tid1>get[tooltip]]" variable="tt">
<$list filter="[!<tid1>tooltip<tt>]">
<$link/><br/>
</$list>
</$list>
</$list>


//"The chieftain who leads them," Theul asked, "what do we know of him?"//

//"His name is Kathrik Mel. He inspires tremendous loyalty in the barbarians, an almost religious fervor."//

//"He's a [[demon]]?"//

//"I don't think so. The [[Ghaash'kala]] call him a sak'vanarrak—it translates as something like 'fiend-touched.' A [[Karrn|Karrnath]] scholar coined the word tiefling. I think he's some mixture of [[fiend]] and mortal, more like a savior than a god."//

//Thuel frowned. "Their savior, our damnation."//

<div align="right">—James Wyatt, //Dragon Forge//</div>

Tieflings are derived from [[human]] bloodlines, and in the
broadest possible sense, they still look human. However,
their infernal heritage has left a clear imprint on their
appearance. They have natural darkvision and resistance to fire, as well as an innate [[sorcerous|sorcerer]] magical ability.

!! Appearance and Longevity

Tieflings have large horns that take any
of a variety of shapes: some have curling horns like a
ram, others have straight and tall horns like a gazelle's,
and some spiral upward like an antelopes' horns. They
have thick tails, four to five feet long, which lash or coil
around their legs when they get upset or nervous. Their
canine teeth are sharply pointed, and their eyes are
solid colors—black, red, white, silver, or gold—with no
visible sclera or pupil. Their skin tones cover the full
range of human coloration, but also include various
shades of red. Their hair, cascading down from behind
their horns, is usually dark, from black or brown to dark
red, blue, or purple. 

Tieflings mature at the same rate as humans but live a few years longer. 

!! Tiefling Names

Tiefling names fall into three broad categories. Tieflings
born into another culture typically have names reflective
of that culture. Some have names derived from the
Infernal language, passed down through generations,
that reflect their fiendish heritage. And some younger
tieflings, striving to find a place in the world, adopt a
name that signifies a virtue or other concept and then
try to embody that concept. For some, the chosen name
is a noble quest. For others, it's a grim destiny.

//''Masculine Infernal Names:''// Akmenos, Amnon, Barakas,
Damakos, Ekemon, Iados, Kairon, Leucis, Melech,
Mordai, Morthos, Pelaios, Skamos, Therai

//''Feminine Infernal Names:''// Akta, Anakis, Bryseis, Criella,
Damaia, Ea, Kallista, Lerissa, Makaria, Nemeia,
Orianna, Phelaia, Rieta

//''"Virtue" Names:''// Art, Carrion, Chant, Creed, Despair,
Excellence, Fear, Glory, Hope, Ideal, Music, Nowhere,
Open, Poetry, Quest, Random, Reverence, Sorrow,
Temerity, Torment, Weary 

!! Tieflings in Eberron

Tieflings rarely appear in the cities and towns of [[Khorvaire]], with most dwelling at the fringes of civilization.

Many tieflings are born to the [[Carrion Tribes]], the barbarians who live in the [[Demon Wastes]]. Such tieflings are touched by the fiendish forces bound beneath
the Wastes, and the tribes consider them to be blessed.
If you're playing such a tiefling, why have you left the
Wastes? It could be that you were destined for some evil
purpose—perhaps even serving as an avatar for an imprisoned [[overlord]]—and you are fleeing that destiny.

Other tieflings are shaped not by fiendish powers,
but by the influence of the [[fiend]]-tainted planes. Such
tieflings might be born in [[manifest zone]]s, where a plane
exerts influence over a region. Planar tieflings are oddities, often seen as strange but not necessarily evil.

Finally, the [[Venomous Demesne]]—a city-state hidden
on the far side of [[Droaam]]—is populated by tieflings.
These tieflings descend from [[Sarlona]]n mages of ancient [[Ohr Kaluun]] who
bargained with dark powers, with the Demesne's lords
being powerful [[warlock]]s and [[wizard]]s. The Venomous
Demesne has had no significant contact with the [[Five Nations]] and few know it exists. Your character could be an envoy or exile from it, or simply an adventurer driven
by a desire to see what lies beyond your homeland. 
<$reveal type="match" state="!!category" text="creature">
<$reveal type="nomatch" state="!!tier" text="">
''[[Creature Tier|creature tier]]: ''''{{!!tier}}''
</$reveal>
</$reveal>
<$reveal type="match" state="!!category" text="spell">
<$reveal type="nomatch" state="!!tier" text="">
''[[Spell Tier|spell tier]]: ''''<$transclude tiddler="SpellTierNames" index={{!!tier}}/>''
</$reveal>
</$reveal>
<$reveal type="match" state="!!category" text="object">
<$reveal type="nomatch" state="!!rarity" text="">
''[[Rarity|rarity]]: ''''<$transclude tiddler="RarityNames" index={{!!rarity}}/>''
</$reveal>
</$reveal>
<$reveal type="match" state="!!category" text="location">
<$reveal type="nomatch" state="!!points" text="">
<$wikify name=locations text="{{!!points}} {{!!polylines}} {{!!polygons}}">
<$button><$action-setfield $tiddler="$:/FlyLocation" text=<<locations>>/><$action-setfield $tiddler="Map" $field="refresh"/>Find On Map</$button>
</$wikify>
</$reveal>
<$reveal type="match" state="!!points" text="">
<$reveal type="nomatch" state="!!polylines" text="">
<$wikify name=locations text="{{!!points}} {{!!polylines}} {{!!polygons}}">
<$button><$action-setfield $tiddler="$:/FlyLocation" text=<<locations>>/><$action-setfield $tiddler="Map" $field="refresh"/>Find On Map</$button>
</$wikify>
</$reveal>
<$reveal type="match" state="!!polylines" text="">
<$reveal type="nomatch" state="!!polygons" text="">
<$wikify name=locations text="{{!!points}} {{!!polylines}} {{!!polygons}}">
<$button><$action-setfield $tiddler="$:/FlyLocation" text=<<locations>>/><$action-setfield $tiddler="Map" $field="refresh"/>Find On Map</$button>
</$wikify>
</$reveal>
</$reveal>
</$reveal>
</$reveal>
The Tiiki River in the [[Tashana Tundra]] flows past the village of [[Whitetooth]] into the [[Winter Bay]]. 
The alchemical substance on the end of this small, wooden stick ignites when struck against a rough surface. Creating a flame with a tindertwig is much faster than creating a flame with flint and steel (or a magnifying glass) and tinder.

Usually sold in packs of 5 (0.5 crown) or 10 (1 crown).
Harkening back to the [[Cannith]]
family’s original profession, members of this [[trade guild]] go
from town to town, using magic to repair broken or
damaged items. Much of Cannith’s popularity among
those who do not have [[dragonmark]]s can be attributed to periodic visits from Cannith tinkers. House
elders maintain that the wandering life of a tinker
is a character-building exercise, and most of the
important dragonmarked heirs spend some of their
adolescence traveling among the tinkers.
The [[Silver Flame]] is an abstract, disembodied force closely associated with a once-human woman named Tira Miron. Herself now immortal, Tira Miron (now known as the Voice of the Silver Flame) serves as
the intermediary between the holy Silver Flame and the
mortals who can never attain sufficient purity to communicate with the Silver Flame directly. 

In 299 YK, the event that started the religion of the
Silver Flame took place. In that year, a terrible eruption
split the ground near what is now [[Flamekeep]], [[Thrane]] and a great pillar of crimson fire emerged from the resulting chasm. No one understood the significance of the blazing column of flame, but most who dared approach it felt unrelenting malevolence in its
radiating heat.

Tira Miron, a [[paladin]] dedicated to [[Dol Arrah]], received
a powerful vision about this strange fire while exploring the western reaches of the realm. In her vision, a great [[rainbow-winged serpent|couatl]] warned her that a terrible
evil was emerging in the east, riding crimson fire from
the depths of [[Khyber]] itself. Tira rallied the forces of
[[Thrane]] and defeated the dark creatures that had come
to venerate the crimson fire and help free the [[malevolent entity|Bel Shalor]] trapped within its flames. With her great sword Kloinjer, its pommel capped with a Khyber [[dragonshard]], Tira turned to face the emerging [[demon]] just as the great
serpent with the rainbow-feathered wings of her vision
appeared and dove headfirst into the fire. Tira watched as
the serpent and the demon struggled in the flames. The
battle within the fire seemed to last for an eternity, and
as she watched the demon began to overcome the serpent.
Horrified, she saw the demon strike a crippling blow. The
serpent, calling on its last reserves of power, encircled the
demon and buried its fangs into the fiend's fiery throat.
At the same moment, it sent a mental plea to Tira, and the
paladin didn't hesitate. She leaped into the fire, plunging
Kloinjer through the writhing serpent and deep into the
demon's flesh.

Then, the legend says, a powerful explosion rocked
the entire kingdom of [[Galifar]]. The hot crimson fire
became a cool silver flame. Tira remained within, now
part of the divine fire that had replaced the evil conflagration. She became the Voice of the Silver Flame, and a new religion was born. [[Flamekeep]], a simple stone castle, was
erected around the everburning pillar of silver fire. Deep
within the chasm, at the point where the fire erupts from
the earth, it is said that mighty Kloinjer's blade is buried
almost to the hilt, binding demon, serpent, and paladin
together forever.

!! Listening to the Voice

The Voice of the Silver Flame whispers from the depths
of the everburning fire located in the [[Cathedral of the Silver Flame]] in [[Flamekeep]]. The Voice, said to belong to Tira Miron, usually communicates through the [[Keeper of the Flame]] (currently Jaela Daran). Others of the faith sometimes hear the crackling Voice, and many make pilgrimages to Flamekeep in hopes of participating in
just such a miracle. However, some scholars outside the
faith believe the Voice isn't Tira Miron, at least not solely.
Some believe that in rare instances the [[demonic entity|Bel Shalor]] that shares the flame with Tira and the rainbow-winged serpent can speak through the silver fire. In these rare
instances, these scholars believe, the demon lures people
on to acts of terrible evil by whispering to them that they
will accomplish good works. Some of the [[crusades|Silver Crusade]] and
inquisitions undertaken on behalf of the Silver Flame
may fall into this category.

The Church of the Silver Flame, naturally, rejects
this theory.
Tirashana is an [[Inspired]] dominator, the right hand of the [[Devourer of Dreams]], and the most influential member of the [[Circle of Night]]. She has planted a network of [[mind seed]]s across [[Eberron]], at least three of which are in [[Sharn]]: [[Bestan ir'Tonn]], [[Maira ir'Talan]], and (DM's choice).

She has certain personality quirks that cause her mind seeds to stand out a little. For one, she uses turns of phrase not common to [[Breland]] or the rest of the [[Five Nations]]: 

* "''do the needful''" = "do what needs to be done"
* "''timepass''" = something to kill time, frivolous, guilty pleasure
* "''kindly adjust''" = "sorry, please excuse the inconvenience I am causing you, but I can't do anything much about it right now"
* "''what is your good name''" = a polite "what is your name again". Also "Your good name, please?"
* "''do one thing''" = "take my advice"
* "''prepone''" = opposite of "postpone"; move something forward

She also holds her head high and shoulders back, and tends to squint when listening to someone she considers beneath her station (which is nearly everyone). These quirks might not be too noticeable among her Sharn mind seeds, considering she has taken control of upper-class people who might already be considered snooty.
[[Lamannia]] is filled with precious natural resources; it's
hardly surprising that an advanced civilization would try
to harvest them. During the [[Age of Giants]], the [[Group of Eleven]] set up a research station and mining camp in a [[layer]] of Lamannia. After a decade struggling against megafauna attacks and [[elemental]]-enhanced weather, the outpost was
finally overwhelmed and abandoned. It's a testament to the
arcane engineering of the [[giant]]s that anything remains of
this structure... although it may be that it remains because
the ruin itself has become a symbol of nature reclaiming
civilization. Vines and moss cover shattered walls, and the
bones of giants are scattered throughout the remnants of this
garrison. Valuable and powerful treasures may well be hidden
in the Folly, but explorers will have to contend with aggressive
elementals, dangerous beasts, and traps left by the long-dead
giants themselves.
* Dragonmarked Houses from 4e ECG
* Add [[Graywall Outpost]] to the map
* [[Map]]
** Colors: https://i.pinimg.com/originals/9d/20/5e/9d205e9fa8988711e313c8d926cf8120.png. All color is done in the style field
** Also a map of [[Sharn]] (all layers; drop down menu decides which layer, which changes the filter)
* Add mechanics
** General rules
** Talent list
** Secrets from Eberron Confidential
* Items
** Trinkets!
** Arcane Artifacts and Curious Curios (includes some trinkets)
* Creatures
* Languages

---

* [[Thunder Sea]] (Exploring Eberron)
* Morgrave Miscellany: https://thetrove.is/Books/Dungeons%20%26%20Dragons%20%5Bmulti%5D/5th%20Edition%20%285e%29/3rd%20Party/%20DMsGuild/%20Community%20Created/Morgrave%20Miscellany.pdf
* Explorer's Handbook
* Dragons of Eberron
* Secrets of Xen'drik
* Five Nations (the usable stuff)
* Backdrop [[Graywall]] and all other Dragon/Dungeon magazine articles
* Dragonshards archive http://archive.wizards.com/default.asp?x=dnd/archeb/ds
* [[Find Things]]
* Work on remaining [[Missing Tiddlers]].
Lord Toka Threefangs in [[Zarash'ak]] is the ambassador of the
[[Droaam]] [[warlord]] [[Kethelrax the Cunning]]. Threefangs
is gaining influence among the [[goblin]]s of the [[Webs]]
with his tales of the [[kobold]] king, and some among
the Liondrakes wonder how he plans to use his growing clout.
This [[Nulakesh]] bastion city of [[Riedra]] lies close to a [[wild zone]] linked to
[[Shavarath]]; the [[Inspired]] are studying the zone to find a
way to tap its energy and breed superior soldiers or war-beasts. If House [[Vadalis]] learns about this, PCs could be sent to see what the [[Riedrans]] have done. Alternatively,
a party of Riedran adventurers could be dispatched to
destroy an experiment gone horribly wrong. 
Centered around [[Pylas Zirinth]], the [[line|Aereni noble line]] of Tolaen
drives [[Aerenal]]'s lumber industry, both harvesting wood for
trade and producing the finest architects and wood-masons on
the island. While they are devoted to the [[Undying Court]], the
Tolaen Aereni are more invested in perfecting physical crafts
than in contemplating metaphysical mysteries. The Tolaen
also produce many of Aerenal's soldiers and usually have good
relations with the [[Tairnadal]]. Tolaen Aereni prefer simple,
functional clothes with little adornment. Tolaen masks are
usually made from wood, and may be intricately carved; Tolaen
soldiers often wear half-masks covering their lower faces
''Capital:'' [[Frosthaven]]<br/>
''Primary Resources:'' Copper, medicinal supplies, livestock<br/>
''Enemies:'' [[Droranath]], [[Narathun]]<br/>
''Celebrated Virtues: ''Empathy, generosity, loyalty. Always willing to help a friend in need, and always willing to make a new friend.

Like [[Lanarak and Londurak]], the mythic founders of Clans
Toldorath and Tordannon were siblings. Unlike their fellow
exiles, Toldorath and Tordannon never quarreled. They followed
the same path, shared the same labors, and even built their
holds adjacent to one another; the city of [[Frosthaven]] lies directly
between the two holds and serves as the capital for both.

Toldorath and Tordannon had many skills, though they were
masters of few. They were hunters and herders, warriors and
miners. But above all, they were the most gifted healers of
the exiles, ready to help anyone in need. Before the [[Great Sorrow|Mror History]],
Frosthaven healers were found across the holds. This changed
with the arrival of House [[Jorasco]]. Today the finest healers in
the [[Mror Holds]] are [[halfling]]s, but dwarves still serve in the
healing houses. More importantly, the farms of Toldorath and
Tordannon are a primary source of many medicinal herbs and
flowers that drive Jorasco operations across [[Khorvaire]].

At a glance, Toldorath and Tordannon have much in common.
They mine copper and herd mountain [[tribex]] and other beasts
on the fields surrounding [[Mirror Lake]]. They're stoic warriors
when they must fight, but they never start a quarrel unless
driven to it. In other ways, they are quite different. Tordannon
dwarves are devoted to the [[Sovereign Host]], while the Toldorath
are ambivalent about religion. Tordannon suffered grievous
losses in the War Below; they shun [[symbiont]]s, have sealed
off their deep passages, and live in fear of the next assault. In
contrast, the Toldorath are intrigued by symbionts and keen to delve deeper into [[Sol Udar|Realm Below]]. Despite these differences, they support one another. Loyalty is one of the prime virtues of these
clans—to family, clan, and the holds themselves.

But there is one thing that makes these two Frosthaven clans
stand out: their support for the [[Jhorash'tar]] [[orc]]s. A story says an
orc shaman taught the healing arts to Toldorath and Tordannon
in the first days of the Exile. This could be pure fantasy—the
modern Jhorash'tar aren't particularly adept healers—but
regardless, these two clans have always sought peace between
orc and [[dwarf]]. This has brought them into bitter conflict
with Clan [[Droranath]]. There have also been times when the
Frosthaven clans have themselves suffered at the hands of the
orcs, when a tribe has struck a Tordannon spire in retaliation
for perceived treachery. But the clan lords remain committed
to building a bridge between the two peoples. Over the last
century, they have promoted the concept of giving the [[orc]]s a
seat on the [[Iron Council]]. Toldorath has employed Jhorash'tar
mercenaries to help secure its colony in the [[Realm Below]], and
is seeking to expand this force to drive a new offensive.

Toldorath and Tordannon have no specialty that calls out
a specific style of adventurer, but this just means that any
character could come from Frosthaven. They have soldiers and
fighters, hunters and rangers. What drives these clans is loyalty
and kindness, their belief that it's always better to make a new
friend than to dismiss someone as an enemy.
This item is a small silver barbell, designed to be worn in the tongue. When worn, the user can lick objects to learn their past once per day. For example, the user could lick a coin and know who had the coin last, what it was used to buy, where it was made, and so on.
This small golden barbell is designed to be worn in the tongue. The wearer can exhale a 30-foot-cone of fire three times per day.
This spell grants the creature you touch the ability to understand any spoken language it hears for the next hour. Moreover, when the target speaks, any creature that knows at least one language and can hear the target understands what it says.
This coil of muscle terminates in a sharp barb. When you
attune to it, this [[daelkyr]]-bred tongueworm attaches to your
throat and nestles under your tongue.

You can make an unarmed strike using the tongueworm, piercing an enemy with the barb and potentially poisoning the target.
<<list-links-article "[tag{!!title}sort[title]]">>
This rough and tumble tavern
is run by a [[shifter]] named Boz. While it caters to the shifter community
of [[Tavick's Landing]], Boz welcomes customers of
all races, and anyone willing to discuss [[hrazhak]]
always finds a warm welcome. This is the best place
to come to bet on hrazhak matches or to find out
about the shifters of [[Sharn]]. 
''District Type: ''Theater district<br/>
''Buildings: ''Theaters (9), temple ([[Olladra]]), poor
lodging (40), poor food (75), poor trades (90), poor
services (115), poor residences (60)<br/>
''First Impression:'' Noisy crowds press into crowded
theaters, and the sounds of bawdy music and roaring
audiences fill the streets.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Center Bridge]] (southwest); [[Firelight]] (south); [[Granite Halls]] (bridge, northwest); [[Olladra's Kitchen]] (bridge, north); [[Cogsgate]] (bridge, northeast); [[High Walls]] (bridge, east); [[Smoky Towers]] (above)

Torchfire is the most notorious district in [[Menthis|Menthis Plateau]],
though its offerings are relatively tame compared
to those of [[Firelight]]. Its theaters, particularly the
[[Ten Torches]], are known for racy musical comedy
designed to appeal to rowdy audiences. 

!! Noteworthy Locations

* [[Gailan's]]. This dinner theater provides food and performances that are a step above the lowbrow entertainment found in the rest of the district.
* [[Ten Torches]]. The cheapest ticket in [[Sharn]]'s theater scene, Ten Torches alternates between lowbrow comedy and bizarre shows that no respectable theater would stage.
The Torlaac Bay lies off the coast of [[Darguun]], and is fed by the [[Torlaac River]].
This expanse of blasted heath and stone runs along the eastern base of the [[Seawall Mountains]]. Ruins from the time of the [[Dhakaani Empire|Dhakaan]] are
believed to dot the moor, and subterranean dungeons hide
beneath the mire. Members of the [[Kech Volaar]] clan have
spent a great deal of time exploring the area, but the moors
are vast and hide their secrets well. 
The Torlaac River in [[Khorvaire]] is a short river that flows from the [[Seawall Mountains]] in [[Darguun]] into [[Torlaac Bay]].
A creature that ingests this poison and can't resist its effects is poisoned for <<dr "4d6">> hours. The poisoned creature is incapacitated.

The Torva River in [[Khorvaire]] flows from the [[Endworld Mountains]] into [[Stormwreck Bay]]. The river flows through [[Q'barra]] and bifurcates near the [[dragonborn]] settlement of [[Ka'rhashan]], forming the distributary [[Crimson River]].
This long-sleeved shirt is made of heavy cotton that constricts when it senses a bleeding wound, helping stabilize the wearer when they are injured.
The [[Thousand Eyes]] of [[Riedra]] makes
no secret of its presence in the [[Jhodra]] of [[Dar Jin]]. The Tower of Eyes
is a spire of whorled black stone. Chunks of embedded
glowing green [[crysteel]] give the impression of gleaming
eyes gazing out across the foreign quarter. While the Eyes
have hundreds of hidden agents, the streets of the [[Jhodra]]
are patrolled by overt guardians dressed in distinctive
green-and-black uniforms. Any [[Riedran|Riedrans]] can come to
the tower to report criminal or suspicious activities, and
the [[Thousand Eyes]] will either respond alone or bring in
bastion guards to deal with the problem.

The commanding officer of the Jhodra Thousand Eyes is Lady Malesha ([[usvapna]] [[Inspired]] telepath), who personally handles interrogation of prisoners.
Other important figures are Lord Tulkath ([[hashalaq]] [[Inspired]] kineticist), who can use [[trace teleport]] and [[psionic dimensional anchor]] to help apprehend criminals,
and Lady Dardhuna ([[hashalaq]] [[Inspired]] seer), a specialist in psionic [[scrying]]. 
This courthouse is where people need to go to acquire licenses to carry weapons or use magic within [[Upper Tavick's Landing]]. The primary clerk who deals with suspicious individuals is an old [[dwarf]] named Billan Tosh. Billan is an expert at spotting forgeries. He also has a pair of spectacles that provide
him with the benefits of [[arcane sight]], and if he detects any
use of magic he triggers an alarm summoning guards—
so the use of magical charms might backfire. Billan is a
low-level member of the [[Aurum]], and the character's
relationship with the Aurum may affect their ability
to acquire licenses; alternatively, he can offer to grant
a request if the characters perform a service for the
Aurum. Because of his Aurum connections, he proves
difficult to bribe; he is well paid for his services.

The spymaster of the [[Zilargo]] embassy has an agent in the records department: Janesta Banton, a [[gnome]] scribe and clerk. As a result, the gnomes can easily gain access to the many details people must provide to obtain a license. 
The heart [[demiplane]] of [[Sul Khatesh]] is a tower built from black stone traced
with silver. It glitters in the light of three unfamiliar crescent
moons. Here, it's always night, and the servants of the Keeper
of Secrets sing paeans to the moons as they perform bloody
sacrifices and trace eldritch symbols in the soil. The tower holds
a library of dark secrets, and beside it, a scriptorium where
[[fiend]]s scribe the books of shadows that may be given to mortal
warlocks. Beneath the city of [[Ashtakala]] in the [[Demon Wastes]]
lies a portal to the Tower of Shadows, and the [[rakshasa]] [[Hektula]]
dwells here when she's not tending to the library of Ashtakala.

The Tower of Shadows has the //Universal Understanding// property of [[Syrania]] and the //Eternal Shadows// property of [[Mabar]]. 
The Tower of the Eyes is the headquarters of the [[Royal Eyes]] of [[Aundair]], and stands inside the compound of
[[Fairhold]] in [[Fairhaven]], a slender white tower adorned with a carving
of a pair of heavy-lidded eyes—the sole suggestion of
its purpose. The tower contains the organization's collected lore, which includes information on the various
powers and personages in the [[Five Nations]]. Dossiers
on spies, nobles, heirs, politicians, and other important
personnel occupy rooms deep down in the structure,
each protected by magic wards. Training facilities,
offices, and armories containing ritual scrolls, [[magic item]]s, and coin fill out the remainder of the tower.
{{Towers of Aundair}}
{{Towers of Aundair}}
The Towering Wood is the massive primeval forest that covers most of the area of the [[Eldeen Reaches]]. 
Four great fortresses essentially define the border
between [[Aundair]] and [[Thrane]] to the west and
[[Breland]] to the south. [[Wrogar Keep]], [[Tower Valiant]],
and [[Tower Vigilant]] stand along the Thrane border,
while [[Vanguard Keep]] guards the plains between the
[[Blackcaps|Blackcap Mountains]] and the [[Eldritch Groves]], near the border
with Breland. Each fortress has a high watch tower
surrounded by magically fortified walls and less obvious magical defenses.

A brigade of about 700 soldiers garrisons each
keep, with the equivalent of a tiny village helping to
supply the soldiers with food, arms, and repairs. The
soldiers include standard infantry, archers and [[wand-wielding specialists|wandslinger]], and at least one unit of cavalry or dragoons (mounted infantry).
The great [[dragonmarked house]]s are the barons of industry and commerce
throughout [[Khorvaire]] and beyond. These dynastic
houses of commerce derive their power partly from their [[dragonmark]]s, but each house has economic as well as magical dominance in its area of influence. House [[Cannith]]’s [[Mark of Making]] makes its dragonmarked heirs the best [[artificer]]s and artisans in
[[Khorvaire]]. But House Cannith also operates crafting guilds whose unmarked [[magewright]]s and crafters benefit from the best training possible.

!! Trade Guilds of Khorvaire

<ul>
<$list filter="[tag[dragonmarked house]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[trade guild]tag<currentTiddler>]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
''District Type:'' Marketplace<br/>
''Buildings:'' Open-air market, temple ([[Kol Korran]]),
average lodging (9), average food (45), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (20), average services
(60), poor services (20)<br/>
''First Impression:'' This district is awash in colorful
signs and tents. The shouts of barkers rise above the
noise of shoppers, and a dozen scents—from sweet
perfumes to sizzling meats—fill the air.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Ambassador Towers]] (southwest); [[Sovereign Towers]] (southeast); [[Oakbridge]] (bridge, northeast); [[North Towers]] (below); [[Platinum Heights]] (above)

Tradefair, the mercantile hub of the [[Central Plateau]],
boasts the quarter's only [[open-air marketplace|Tradefair Market]], along
with a thriving collection of trades and services. 
Tradefair Market, the open-air marketplace, operates daily during daylight
hours. In contrast to other marketplaces in the city,
Tradefair has regulations about stall spacing that
ensure relatively straight, wide, and open (though
crowded) aisles for customers to walk through. The
goods available in Tradefair are generally of high
quality, and an abundant number of House [[Cannith]] tinkers can be found to make repairs through
mundane or magical means. A permit to sell in
Tradefair Market for one day costs 0.5c, which certainly guarantees a certain level of quality among the merchants present, and keeps the market from
becoming overcrowded.
Traglorn Isle is an island in the [[Lhazaar Principalities]]. The rainforest of Traglorn is inhabited by a small number of [[shifter]] tribes, including the Sun-Kin tribe.
Followers of the Transcendent Flesh walk the paths of the Foul Labyrinth in a quest to evolve beyond the bodies they were born in. They work with [[mind flayer]]s and other minions of [[Dyrrn]] the Corruptor, receiving their payment in [[symbiont]]s, [[warlock]] powers, or other forms of physical or mental transformation.
This small, fragile glass ball is imbued with a [[teleport]] spell. When broken, it takes up to 9 willing creatures within 10 feet of it to a predetermined location (determined when creating the orb, and not necessarily known to the user). It has no effect on unwilling creatures.
Transmutation is the most prominent
beauty salon in [[Sharn]]. The salon employs both magical and mundane cosmetic techniques. See [[cosmetic transmutation]].
A student of transmutation casts spells that modify energy and matter.
To them, the world is not a fixed thing, but eminently
mutable. They wield the raw stuff of creation and learn to alter both
physical forms and mental qualities. Their magic gives
them the tools to become a smith on reality's forge.

Some transmuters are tinkerers and pranksters,
turning people into toads and transforming copper into
silver for fun and occasional profit. Others pursue their
magical studies with deadly seriousness, seeking the
power of the gods to make and destroy worlds. 

See also [[cosmetic transmutation]].

!!! <<showspells-school {{!!title}}>>
The Traveler touches the domains of many other [[Sovereigns|Sovereign Host]].
Like [[Aureon]] and the [[Shadow]], the Traveler is a source of
knowledge. Along with [[Olladra]] and the [[Mockery]], it is a patron
of those who rely on deception and cunning. Like [[Onatar]] and
the [[Fury]], it can provide inspiration to the artisan. Both those
who fear the Traveler and those who revere it agree on one
thing: whatever gifts the Traveler gives, they always lead to
chaos. If the Traveler gives you knowledge, it's because the revelation will force you to reevaluate everything you have
known. If it helps you deceive, it's because your actions will
introduce chaos and crisis—whether into your life or the lives of
others. [[Onatar]] will teach a swordsmith to make a better sword;
the Traveler might show them how to make a bomb, changing
the face of warfare. The Traveler isn't here to satisfy your greed
or to grant your ambitions. Instead, it will set you on paths
you never thought to try. This may sometimes grant you good
fortune, but when you call on the Traveler, you're inviting the
unexpected into your life.

One of the more infamous Traveler cults within the [[Five Nations]] is hidden within House [[Cannith]]. While Onatar is the acknowledged patron of House Cannith, some believe that the Traveler is the source of dramatic inspiration,
helping [[artificer]]s make unforeseen breakthroughs. Those
who invoke the Traveler know that its gifts will surely have
a cost and could shake the foundations of civilization, but
they still yearn for that grand discovery. Many in House
Cannith believe that Aaren d'Cannith—the inventor of the
sapient [[warforged]]—was a Traveler cultist; others assume that
the [[Mourning]] may have been the work of a Cannith heir
following the path of the Traveler.

Some who follow the Traveler are tricksters, causing chaos with no clear agenda. But others see themselves as guides, playing tricks on people in order to teach them lessons. Guides seek to challenge established traditions, laws, or institutions—not necessarily to destroy them, but to ensure that they haven't outlived their usefulness. Still others are wanderers, embracing a life of constant change. The [[changeling]] travelers fall into this category, believing that as long as they remain in motion, the Traveler will guide and protect them. Ultimately, the Traveler will throw your life into chaos—for it's by adapting to this chaos that people grow.

The Traveler's symbol is four crossed, rune inscribed bones.
Treants are awakened trees that dwell in ancient forests. Although treants prefer to while away the days, months, and years in quiet contemplation, they fiercely protect their woodland demesnes from outside threats.

A tree destined to become a treant meditates through a long cycle of seasons, living normally for decades or centuries before realizing its potential. Trees that awaken do so only under special circumstances and in places steeped with the magic of [[Lamannia]]. Treants and powerful [[druid]]s can sense when a tree has the spark of potential, and they protect such trees in secret groves as they draw near the moment of their awakening. During the long process of awakening, a tree acquires face-like features in its bark, a division of the lower trunk into legs, and long branches bending downward to serve as its arms. When it is ready, the tree pulls its legs free from the clutching earth and joins its fellows in protecting its woodland home.

After a treant awakens, it continues to grow exactly as it did when it was a tree. Treants created from the mightiest trees can reach great sizes while developing an innate magical power over plants and animals. Such treants can animate plants, using them to ensnare and trap intruders. They can call wild creatures to aid them or carry messages across great distances.

Even after awakening, a treant spends much of its time living as a tree. While rooted in place, a treant remains aware of its surroundings, and can perceive the effects of events taking place miles away based on subtle changes nearby.

Woodcutters who avoid culling healthy living trees and hunters who take only what they need of the forest's bounty are unlikely to arouse a treant's ire. Creatures careless with fire, those who poison the forest, and those who destroy great trees, especially a tree close to awakening, face the treant's wrath.
The Treaty of Thronehold is the treaty initiated by King [[Kaius III|Kaius ir'Wynarn III]], signed in the former Galifaran capital of [[Thronehold]] on 11 Aryth 996 YK (now commemorated as [[Thronehold Day]]), between the surviving four of the [[Five Nations]], formally ending the [[Last War]].

The treaty recognized the nations of [[Aundair]], [[Breland]], [[Thrane]], [[Karrnath]], the [[Talenta Plains]], [[Zilargo]], [[Q'barra]], the [[Lhazaar Principalities]], the [[Mror Holds]], the [[Eldeen Reaches]], [[Darguun]], and [[Valenar]].

The former nation of [[Cyre]], the renegade territory of [[Droaam]], the wild lands of the [[Shadow Marches]], and the [[Demon Wastes]] were not represented in the Treaty. The [[Mournland]] is unclaimed.

!! Provisions
Amongst the provisions of the Treaty of Thronehold were:

* [[Warforged|warforged]] were emancipated, the creation of any new warforged was banned, and [[Cannith]] was ordered to dismantle their [[creation forge]]s.
* [[Thaliost]], a contested state between [[Aundair]] and [[Thrane]], was formally ceded to Thrane.
* Certain acts were forbidden; for example, duels to the death in Aundair were outlawed.
* A multi-national military court was established for military criminals, which generally end in [[Dreadhold]] Prison. 
* The boundaries of the remaining [[Five Nations]] were clearly established, according to their state at the end of the Last War.
This uninhabited island supposedly
hides the loot of two thousand years’ worth of pirate raids,
and tombs even older than that, dating back to the original
human settlement of [[Khorvaire]]. Legends claim that
the island was used as a hiding place for every kind of
treasure—pieces of gold, dragonshards, relics—ever gathered in a pirate raid by the ancient Lhazaarite sea princes, including the legendary pirate queen [[Lhazaar]] herself.

Unfortunately, the island is surrounded by treacherous
reefs and is home to all manner of terrible monsters and
curses, making landings difficult and prolonged searches
dangerous at best and fatal in most cases. 
When you or another creature draws a card from this deck of standard playing cards, you can control which card is drawn.
This trident is a magic weapon. While you carry it, you can cast [[dominate]] from it on an aquatic beast. You can use this magic up to three times per day.
The Triumvirate rules [[Zilargo]]. This council, composed of a
representative from each of the major cities of [[Korranberg]],
[[Trolanport]], and [[Zolanberg]], was founded as an oversight
committee to monitor the behavior of students and patrons
of the [[Library of Korranberg]]. The powers and duties of the
Triumvirate slowly expanded to cover the entire nation.
Each of the three cities has its own Council of Nine, [[gnome]]s
drawn from wealthy families who manage local civic concerns. In theory, the city’s representative to the Triumvirate
is democratically selected from its council. In practice, the
process is anything but democratic, as secret wars of words
and blackmail determine power within each council.

The [[Trust]], the secret order that protects [[Zil|Zilargo]] society, reports directly to the Triumvirate. It has a coordinator in each city who works with the local council. Few realize that the Triumvirate possesses an impressive vault of information concerning political, military, and economic activities that rivals that of the [[Library|Library of Korranberg]], thanks to the work of the Trust. 
The savage, degenerate troglodytes squat in the shallows of [[Khyber]], marking the borders of their territories with cracked bones and skulls, or with pictographs painted in blood or dung.

Perhaps the most loathsome of all humanoids, the reptilian troglodytes eat anything they can stomach. They dwell in filth. The walls of their cavern homes are smeared with grime, oily secretions, and the debris of their foul feasting. The odor excreted by troglodytes is so revolting that it is poisonous to non-troglodytes when inhaled at close range.

Many troglodytes live in caverns under the jungles of [[Q'barra]], and serve the [[Poison Dusk]]. Others worship aspects of the [[Devourer]] and the [[Mockery]], or whichever [[overlord]] is bound in the [[Age of Demons]] ruin they might dwell within.
The Trolan River in [[Zilargo]] flows past the capital city of [[Trolanport]] into the [[Thunder Sea]].
With its crisscrossing canals and flooded streets, the
capital of [[Zilargo]] serves as the center of the [[gnome]] shipbuilding industry and a nexus for trade. Scores of ships
make port here daily. Among the many beautiful things
the city is known for are its spectacular coastal thunderstorms. Crowds gather on balconies and verandas to
watch these awesome displays.

The Tower of the [[Triumvirate]] rises over the central
portion of the city. House [[Kundarak]], House [[Sivis]], and
House [[Cannith]] maintain outposts in the city, and the
other [[dragonmarked house]]s station agents here as well. Trolanport is also home to the great [[elemental]] binding guilds.
A troll eats anything that moves, from grubs to [[human]]s, and is rightly feared fro its ravenous appetite, feral cunning, and remarkable regenerative power.

Trolls stand about 9 feet tall and weigh between 400 and 500 lbs. Their skin is usually shades of moss green, putrid gray, or some mottled combination of the two, and their long ropy hair is black, gray, or dark green. Their long, ungainly arms end in massive clawed hands, and they possess darkvision and an enhanced sense of smell.

Smashing a troll's bones and slashing through its rubbery hide only makes it angry. A troll's wounds close quickly. If the monster loses an arm, a leg, or even its head, those dismembered parts can sometimes act with a life of their own. A troll can even reattach severed body parts, untroubled by its momentary disability. Only acid and fire can arrest the regenerative properties of a troll's flesh. The trolls, enraged, will attack individuals making acid and fire attacks against them above all other prey.

Their regenerative capabilities make trolls especially susceptible to mutation. A decapitated troll might grow two heads from the stump of its neck, while a troll that eats a fey creature might gain one or more of that creature's traits.

Trolls are proud of their strength, and enjoy engaging in
tests of strength, like tug of war or lifting, with other trolls or
[[ogre]]s. While they generally dismiss smaller creatures, a troll is
impressed by anyone that performs remarkable feats of strength;
they generally respond better to intimidation than to diplomacy.

!! Trolls of Droaam

Trolls are native to all four major continents of Eberron, but most of the trolls on [[Khorvaire]] have fled to [[Droaam]]. There, many of them serve as elite guards of the [[Daughters of Sora Kell]]. Others serve the daughters in a different way: in grist mills, the flesh of living trolls is carved off and formed into sausage to sustain the burgeoning population of the nation; the trolls regenerate and the process begins again. This "[[grist]]" would normally be completely inedible, but the Daughters have a secret alchemical process that makes the sausage palatable, if not exactly delicious.

Like skullcrusher [[ogre]]s, the war trolls of [[Maenya's Fist]] ([[creature tier]] ''3'') are
a unique subspecies that may be the result of magebreeding.
They are utterly devoted to [[Sora Maenya]] and to [[Droaam]]. War trolls are stronger, smarter, and more skilled than their ordinary counterparts, and typically wear plate armor and wield sophisticated weapons. 
Mutated [[kuo-toa]]s and other [[aberrant|aberration]] creatures
occupy this abandoned city in the [[Mournland]], which was once a major
stop on the [[lightning rail]]. The cityscape has been
warped beyond recognition. Its inhabitants raid the
[[Talenta Plains]] from their twisted homes in Tronish,
or from holds near [[Lake Cyre]] or the [[Crimson Water]].

The [[halfling]]s of [[Gatherhold]] whisper that some
nameless horror directs the activity in Tronish from
the depths of one of those bodies of water. They
note the weird lights that flash and glow in western
Lake Cyre. 
The Tropic of Lharvion is the northernmost latitude at which the sun can be seen directly overhead during the [[Lharvion|Khorvaire calendar]] equinox.
The Tropic of Zarantyr is the southernmost latitude at which the sun can be seen directly overhead during the [[Zarantyr|Khorvaire calendar]] equinox.
While you wear these black pinstripe trousers, you become up to five inches taller or shorter, depending on your preference. This is a temporary [[cosmetic transmutation]] effect and not an [[illusion]].
While you wear these trousers, you can run twice as fast for up to 10 minutes per day. 
This spell requires a one-hour ritual and 2500c worth of ritual components, which are expended.

You touch a creature that has been dead for no longer than 200 years and that died for any reason except old age. If the creature's soul is free and willing, the creature is restored to life.

This spell closes all wounds, neutralizes any poison, cures all diseases, and lifts any curses affecting the creature when it died. The spell replaces damaged or missing organs and limbs. If the creature was [[undead]], it is restored to its non-undead form.

The spell can even provide a new body if the original no longer exists, in which case you must speak the creature's name. The creature then appears in an unoccupied space you choose within 10 feet of you.

Performing this spell is risky; drawing a spirit back from [[Dolurrh]] might catch the attention of a Dolurrhi [[marut]], or even bring back the wrong spirit, causing a ghost to manifest or ending up with a hostile personality in your friend's body. This is why [[Jorasco]] healers capable of resurrection typically cast [[augury]] first, and will refuse service if the result is "woe". For more information, see the "Concerning Resurrection" section of [[Dolurrh]].
A creature with truesight can, out to a specific range, see in normal and magical darkness, see invisible creatures and objects, automatically detect visual illusions, and perceives the original form of a shapechanger or a creature that is transformed by magic.
The rolling Trumpet Mountains in northern [[Thrane]] are the region of highest elevation in that nation. They are considered an extension of the [[Starpeaks]] in [[Aundair]].
If the peaceful streets of [[Zilargo]] seem too good to be
true, it’s because they are. The security enjoyed by
the [[gnome]]s of this land comes at a price. The nation
is patrolled by an order of secret police—spies and
assassins who answer only to the [[Triumvirate]], and
who are authorized to preserve the peace by any
means necessary.

A foreigner who finds himself on the wrong side of
a first offense in [[Zilargo]] is likely to be given a second
chance. Perhaps he’ll find a mild poison in his drink,
along with a warning to watch his step. A thief might
have her ill-gotten gains stolen back before she can
fence them, replaced with a note ordering her to flee
the country at once. Targets who do not listen, or who
go too far, are simply eliminated.

Agents of the Trust do their best to perform assassinations quietly. Poison is a favorite tool, but not the
only one at their disposal. However, the Trust seeks
to act before a crime has been committed whenever possible. Characters planning sedition or a heist are
likely to receive a whispered illusory warning from
unseen agents—a warning they would be wise to heed.

It is possible to outwit the Trust, since its agents
can’t be everywhere at once. However, the air of omnipresence and omniscience generated by the order is
enough to keep most would-be criminals in line.

Few realize that this web of spies is also active in nations across [[Khorvaire]]. The [[gnome]]s believe knowledge is the greatest weapon of all, and
Trust agents endlessly search for secrets that could
prove useful to their nation. 

The Trust began as an oversight force within the [[Library of Korranberg]], eventually
expanded to encompass the entire nation. Over the last two centuries, it has spread beyond [[Zilargo]], becoming one of the most efficient intelligence-gathering agencies in [[Khorvaire]]. The Trust intervenes only in matters that threaten the public peace or the
security of the nation. As a result, private intrigues
abound in Zilargo, but their perpetrators must be
careful to keep their schemes and conflicts from
escalating from private to public.

!! Known Members

<<list-links-article "[tag{!!title}sort[title]]">>
A creature that ingests this poison and can't resist its effects is poisoned for up to 1 hour. The poisoned creature can't knowingly speak a lie, as if under the effect of a [[zone of truth]] spell.
Tsucora [[quori]] are nightmarish creatures. Their headless torsos are covered with eyes and twitching limbs, including two massive arms that end in powerful pincers, and a serpentine tail tipped with a vicious stinger. They are cruel and calculating, enjoying the power they wield over others as they concoct elaborate schemes to advance their own positions and discredit their rivals.

//''Relentless Schemers.''// Constantly jockeying for position, each tsucora hopes to be reincarnated as a more powerful servant of the [[Dreaming Dark]]. As such, their plans are as often focused on the ruination of competitors as they are on the furthering of [[il-Lashtavar]]'s plans. When they aren't serving in the cities of their nightmare realm, they hunt the dreaming spirits of mortals.

//''Fearmongers.''// Their ability to manipulate the fears of mortals sees tsucoras often sent to [[Eberron]] as [[Inspired]]. Nothing keeps [[humanoid]] chattel in line like fear, and the tsucoras are the masters of manipulating the uncertainty of mobs and high-ranking officials alike. The effectiveness of tsucora Inspired keeps the members of this order in the good graces of the [[kalaraq]] quori.

!! Tsucora Dreamblades

Some tsucora [[Inspired]] follow the path of the dreamblade. Although these assassins are primarily tools of the [[Dreaming Dark]], the [[Thousand Eyes]] has a few of them.

This dreamblade is a nightmare warrior who fights with blades formed of pure darkness. The blades are lethal on their own, but their attacks also [[psionically|psionics]] force the victim to recall the most agonizing moments of their life. Dreamblades rely on stealth and surprise, seeking to overwhelm their target with a devastating first attack. Should this initial attack fail, they often attempt to flee via short-range teleportation.
The captain of Lady [[Tureya]]'s [[Taskaan|Taskaan Legion]] guards spent her youth fighting in the mountains of [[Adar]] and has a bitter hatred of [[kalashtar]]. When
she is not stationed in the sanctum, Tulaar patrols the [[Jhodra]], searching for suspicious individuals and memorizing their scents. She might antagonize PCs to see if
they can be provoked into unlawful behavior, but she will not start a fight without reason. 
''District Type:'' Tenement district<br/>
''Buildings:'' Poor residences (240)<br/>
''First Impression:'' The walls of Tumbledown are
honeycombed with tiny chambers, and massive tenements occupy the center of the towers. Large or small,
these townhouses are in terrible condition; walls are
chipped and cracked, and mold and mildew covers
everything. The people crammed into Tumbledown
are poor and miserable.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Broken Arch]] (southwest); [[Hareth's Folly]] (south); [[Malleon's Gate]] (below); [[Clifftop]] (above)

Tumbledown is a wretched residential district, home
to the poorest inhabitants of [[Middle Dura]]. While it
has little to offer, it is at least occasionally patrolled
by the [[Sharn Watch]], which provides the inhabitants
with a limited sense of security.

[[Daask]] has recently established a [[dreamlily]] den
in one of the tenements of Tumbledown, run by a
[[gnoll]] named Caasht. A
small band of gnolls provides security for the den.
This is a direct challenge to the [[Boromar Clan]]'s
control of dreamlily distribution, but so far the
Boromars have not struck back. 
The fortress of Turakbar's Fist in [[Droaam]] is set upon an imposing mound of volcanic rock in the center of a sprawling plain. The [[minotaur]] [[warlord]] [[Rhesh Turakbar]] and his [[demon]]-worshiping clan rule here, the fortress’s outer walls painted with the blood of their foes as a grim warning.
Lady Tureya, a powerful [[usvapna]] [[Inspired]] telepath, the Jewel of [[Corvagura]], is the Eidolon of the [[Riedra]]n city of [[Dar Jin]], and the high minister of the [[Iron Gate]]. She is a brilliant strategist who has steered [[Riedra]]'s foreign policy for centuries.
She keeps a close watch on events in the [[Jhodra]]. Should
a group of powerful adventurers stir up trouble in her
city, she will be quick to notice—the question is what she
chooses to do about it. She is a master diplomat with a
talent for finding people's weaknesses and making offers
that are simply too good to pass up. 

While Tureya is loyal to [[il-Lashtavar]], she is an administrator of Riedra, not an agent of the [[Dreaming Dark]]. She wants what is best for the [[quori]], and so far she has
taken no side in the building struggle between the [[Thousand Eyes]] and the Dreaming Dark. It's up to the DM to decide which path she'll take—and how this choice might
affect PCs who come to her city.

!! The Sanctum of Eidolon Tureya

This massive keep is a district in its own right, filling the space where
the five wards of [[Dar Jin]] come together. The heart of the sanctum
is an ovoid tower built from stone, [[crysteel]], and [[sentira]]. Almost eight hundred feet in height, it can be seen across the length of the city. The outer foundation is a
fortress in its own right, housing the Eidolon's personal
troops: over a thousand [[Taskaan|Taskaan Legion]] [[shifter]]s led by captain [[Tulaar]], along with [[Inspired]] shock troopers and members of the [[Horned Guard]]. Farther in lie the quarters of the [[Chosen]], where young Chosen train in the [[psionic|psionics]] arts and prepare to take their places in [[Riedran society|Riedrans]]. The central tower is
the heart of the [[Iron Gate]], and Tureya and her subordinates analyze Riedran trade and diplomacy and discuss
plans for the future. If someone was looking to recover
a manifest of Riedran shipping imports for the last year,
or to determine if the Iron Gate was supporting the
[[dreamlily]] trade, odds are the knowledge is locked away
in the great tower. 
Turnaway is an island in the [[Lhazaar Principalities]], located in [[Turnaway Sound]].
Turnaway Sound lies between the island of [[Turnaway]] and its neighbors in the [[Lhazaar Principalities]]. It connects the [[Lhazaar Sea]] to the [[Eel Bay]].
An arcane institution funded by the [[dragonmarked house]]s,
the Twelve operates out of a [[thirteen-tiered keep|Ziggurat of the Twelve]] that floats
above the city of [[Korth]] in [[Karrnath]]. As part of the agreements that ended the [[War of the Mark]], [[Hadran d'Cannith]] suggested that the houses work together to create an institute for the application of magic—a foundation that would study
[[dragonmark]]s and the more traditional forms of arcane magic. The keep was built by Alder d'Cannith, a visionary [[wizard]] and master fabricator who used his studies of the sky to determine that the keep should possess thirteen towers.
“The moons suggest that the perfect number of dragonmarks is thirteen,” Alder cryptically explained, “but we shall call the institution the Twelve, for the thirteenth mark was cast off long ago.” No one argued with him. (While the [[elves|elf]]
remember the [[Mark of Death]], it is a topic they wish to forget.
Aside from the elf leaders, few know the truth behind the
lost [[dragonmark]].)

Over the centuries, the institute has been responsible for many arcane advances. The [[artificer]]s of the
Twelve helped develop the [[airship]]s operated by House
[[Lyrandar]], for example, as well as the [[message stations|speaking stone]]
of House [[Sivis]].

As an arm of the [[dragonmarked house]]s, the Twelve
attempted to remain neutral during the [[Last War]]. However, many of the [[wizard]]s and [[artificer]]s of the Twelve had national loyalties that were stronger than their ties to
the institute, and they chose to leave to fight in the war.
Quite a few fell in battle. Now that the Twelve has resumed
normal operations, it seeks to replace its fallen members
and make sure that each house is represented.

The Committee of Twelve oversees the institute.
The committee actually has more than twelve members;
there are twelve dragonmarks, but the split of House [[Phiarlan]] and House [[Thuranni]] and the current troubles within House [[Cannith]] have caused the membership
to fluctuate.

The Twelve has access to a tremendous array of mystical supplies and funding, and the greatest wizards and [[magewright]]s of the land fight for workshop privileges at the
institute. Advances made at the institute are shared equally
among the houses, although there are always rumors of
one or more of the houses diverting funds for secret projects or attempting to conceal valuable discoveries.

As an institution, the Twelve seeks to advance the mystical arts. In particular, the Committee of Twelve looks for
magical developments that have practical value to society
and a potential for profit. The Twelve has a great deal to
offer arcane adventurers. It has access to considerable stores
of rare mystical components and a vast library of spells.
Even the mundane can find the Twelve to be an invaluable
asset, because the sages at the institute can quickly identify
unusual [[magic item]]s or artifacts. However, being a prestigious organization, the Twelve will not deal with adventurers until they have developed a positive reputation.

King [[Galifar I|Galifar ir'Wynarn]], not completely convinced of the [[dragonmarked house]]s' neutrality and altruistic outlook, established the [[Arcane Congress]] as direct competition for the
Twelve. Today, the two institutes of magical studies engage
in a more or less friendly rivalry for resources, students,
and arcane discoveries.
''District Type: ''Professionals<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrine ([[Silver Flame]], [[Kol Korran]]), average lodging (15), upscale food (11), average food (25), exotic trades (11),
upscale trades (15), average trades (40), upscale services (40), average services (80), upscale residences
(40), average residences (80), other (2)<br/>
''First Impression:'' A host of small businesses are
interspersed with pleasant houses and a few manor
towers. Barristers, architects, scribes, translators,
and members of other skilled professions offer their
services here, along with a few more exotic—and
expensive—trades. <br/>
''Social Class: '' Middle class<br/>
''Neighbors:'' [[Silvergate]] (northwest); [[Pinnacle]] (northeast); [[Copper Arch]] (south); [[Den'iyas]] (bridge, southwest); [[Graystone]] (below)

All work and no play means you have come to Twelve Pillars. The inhabitants of this district are serious about what they do, and are generally quite good at their
trades. The exotic trades include a calligrapher; an importer of (legal) [[Riedra]]n goods, notably sculptures; and a dealer in exotic cheeses. The district derives its name from the [[courthouse|Tower of Law]] at its center, a structure surrounded by twelve massive pillars, each made from a different type of stone. Each pillar is topped with a statue of one of the [[Lord Mayors of Sharn|Lord Mayor of Sharn]]. As the pillars are all filled, there has been some discussion as to how to honor the more recent mayors. 
The sylvan grove known
as the Twilight Demesne has long been a sacred site
for the [[fey]] and [[Greensingers]] of the [[Towering Wood]], for the boundaries between the Faerie Court of [[Thelanis]] and Eberron are thin here.
The Twilight Demesne is home to great revels, and those who wander within may stumble upon the [[City of Rose and Thorn|Shae Loralyndar]], the domain of a powerful [[archfey]] called the King of Summer. If you're playing a character with ties to the
[[fey]], the Twilight Demesne could be your home. 
The sky is hidden by the dense canopy of this vast rainforest,
leaving the forest floor in an endless twilight. The Twilight Forest of [[Lamannia]] is the most well-known [[layer]] of the [[plane]] of primordial nature, with by far the most direct connections to [[Eberron]] than any other layer.

The trees are over a hundred feet in height—impressive, certainly, though not
as tall as the greatpines of the Towering Wood in the [[Eldeen Reaches]]. But as people further explore the Twilight Forest, they come upon strange ridges and walls of wood, some forming twisted wooden canyons. Following these, explorers discover
they're the roots of unimaginably colossal trees, vast titans
wider and taller than the towers of [[Sharn]]. The Twilight Forest
as mortals experience it lies in the shadow of the grander canopy that rises far above it, and these enormous trees are
home to megafauna and mightier beings.

Though the Twilight Forest is wild and untamed, explorers
can find wide cleared paths through the lower forest. Survival
experts may recognize that these aren't trails created by
[[humanoid]] hands; rather, they're the paths of totems, who
have crushed the lesser forest beneath their colossal feet. The
forest is filled with beasts—mundane and [[dire|dire beast]] creatures in the
lower forests, megafauna in the grand canopy above it, and the
occasional passage of totems. There are multiple communities
of [[lycanthrope]]s scattered throughout the lower forest. A clan
of wererats have carved out a warren in the roots of a colossal
tree, while a pack of wild wereboars feuds with werewolves
descended from exiled templars. An ancient [[elf]] [[druid]] named
Haral, who spends most of her time in the form of an owl,
does her best to maintain order; she is assisted in this by a
megafauna owl she calls Ruark.

The forest has many other inhabitants, and a few minor
[[elemental]]s can be found in this layer. A gust of wind, a pool
of water, a rolling stone—in [[Lamannia]], any of these things
could be //alive//.
These earrings, a pair of long canine teeth dangling from hooks, greatly improve the wearer's sense of smell.
Most [[devil]]s of Shavarath serve the Legion of Tyranny. They seek to crush hope, and no form of treachery or dishonorable conduct is too low for a devil.
However, they're far more disciplined than the savage hordes of the Legion of [[Cruelty]], working with precision and careful plans. The Century of Chains forces enemy [[conscript|manifestation]]s (and unlucky adventurers) to fight for them, and uses civilian conscripts as living shields. The Century of the Serpent is always willing to
negotiate and makes many pleasing offers, but any agreement
inevitably leads to betrayal.

All forms of [[devil]]s can be found in the Legion of Tyranny.
Their sole focus is war; they dominate and corrupt conscripts,
but don't seek mortal souls from the Material Plane. [[Bearded|bearded devil]] and [[spined devil]]s serve as basic troops, while elite squads of
[[erinyes]] descend from the sky. [[Amnizu|amnizu]] command
centuries, and beings with the power of [[overlord]]s lead cohorts.

The devils of the Cohort of Misery say that the [[Mockery]] is
part of Tyranny Command, a belief that fuels a bitter enmity
with the [[demon]]s of the Century of Terror. Curiously, the Cohort
of the Iron Hand maintains that the [[Sovereign|Sovereign Host]] [[Aureon]] leads
Tyranny Command, and that they are simply enacting his vision
for universal order.
No criminal guild in [[Sharn]] is more shrouded in mystery than the Tyrants. This organization of [[changeling]]s deals in secrets and lies, selling forgeries, running long cons, and treating identities as a commodity. The Tyrants have spies throughout the city, even in places where they have no current plans or contracts. The organization gathers as many secrets as possible, then sells that information to the highest bidder, uses it for blackmail, or stores it for a time when it becomes useful.

The Tyrants have been operating in [[Sharn]] for over three hundred years from a base of operations in the [[Dragoneyes]] district, in [[Lower Tavick's Landing]]. They
have agents spread across the city. A beggar, a bartender, or a courtier could actually be a persona crafted by a Tyrant [[changeling]]. The Tyrants have a long-standing truce with the [[Boromar Clan]] and don't take a side in the halfling family's conflict with [[Daask]]. 

!! Tyrants Operations

The Tyrants are master grifters, conducting a host of short and long cons throughout the city. Much like the [[Boromar Clan]], they have a general live-and-let-live relationship with the [[Sharn Watch]]. As long as the Tyrants focus their crimes on foreigners and tourists—and donate generously to the local Watch—the officers will look the other way. In addition to pursuing their own schemes for gold, Tyrant charlatans offer a host of services to their clients; they can help to frame innocents for crimes, or make it possible for a criminal to seem to be in two places at once, providing an ironclad alibi.

The finest forgers in the city are in the ranks of the Tyrants, capable of duplicating anything from [[identification papers]] to works of art. [[Magewright|magewright]]s among the Tyrants have the ability to permanently [[alter someone's appearance|cosmetic transmutation]], providing a fugitive a chance at a new life.

First and foremost, the Tyrants deal in information. They hoard secrets, and for the right price they can be persuaded to share what they know. Occasionally a Tyrant approaches someone with an offer of information in exchange for gold. 

!! Tyrants NPCs

Members of the Tyrants have a loose definition of identity. The majority of the members are [[changeling]]s. They often maintain multiple identities, and a particular identity might be shared among a group of changelings.
A captain in the [[Sharn Watch]] who is actually an agent
of the Tyrants might be portrayed by a member of the
Tyrants' inner circle in the morning, when he has to interact with a wide range of people. But when he goes off-duty in the evening and keeping up the identity is an easier task, the role might be taken over by a young recruit.

The following individuals are some of the Tyrant's
most important identities:

* [[Ek]], often called Tyrant One, guides the inner circle of changelings that leads the organization.
* [[Kilk]] is the [[city councilor|Sharn Council]] for [[Lower Tavick's Landing]] and is a fictional persona created by the Tyrants, played by a variety of changelings at different times. 
* The [[Spider]] is a [[changeling]] information broker who owns a cosmetics store called Honest Faces in the [[Dragoneyes]] district. This location is a common destination for people who want to purchase secrets from the Tyrants. Though the Spider often sells secrets for gold, sometimes it will trade its knowledge only for services or other secrets. 

!!! Tyrants Contacts

| !<<dr d4>> |!Contact |
| 1 |[[Korryn]] ([[elf]]) maintains Korryn's Quill, a shop in the [[Bazaar]] of [[Dura]] that sells supplies for artists and scribes. In addition to being a remarkable calligrapher, Korryn is an expert forger. |
| 2 |[[Loz]] ([[changeling]]) is a bartender at the [[Crooked Mirror]] in [[Callestan]] and is an information broker, with access to a wide array of rumors. |
| 3 |[[Chaela Tas]] ([[half-elf]]) is a grifter with dozens of plots afoot at any given time. Though this identity is the face they wear with you, they maintain many different personas tied to their schemes. |
| 4 |[[Weave]] (changeling) is a body artist who runs a salon in the [[Dragoneyes]] district. |

!! Tyrants Villains

The Tyrants are a covert force. They operate in the shadows, trade identities, and like to manipulate their enemies into fighting each other. Tyrant villains rarely show
their true faces. Examples of Tyrants villains appear on
the table below.

| !<<dr d6>> |!Tyrants Villain |
| 1 |A [[changeling]] rogue infiltrates adventuring parties to steal their [[magic item]]s. |
| 2 |A cabal of changelings shares an identity as a [[Sharn Watch]] captain. They use the disguise to free criminals from prison. |
| 3 |A changeling assassin murders members of the [[Boromar Clan]], [[Daask]], and House [[Tarkanan]], then takes on the identities of its victims. |
| 4 |A changeling [[bard]] gathers incriminating information about members of the [[King's Dark Lanterns]], then blackmails them. |
| 5 |A [[Brelish|Breland]] changeling veteran of the [[Last War]] was distrusted by fellow soldiers because of the shapechanger's heritage. The veteran now exposes those soldiers' darkest secrets to their friends, families, and employers. |
| 6 |A changeling mage masquerades as a priest of the [[Silver Flame]] and uses spells to send the religion's faithful "signs" from [[Tira Miron]] that encourage them to spy, steal, and kill for the Tyrants. |

!! Tyrants Campaign Themes

The primary theme of the Tyrants is mystery. In dealing with the Tyrants, there is always a question of what is real and what the true objective actually is. With the Tyrants, anything could be a long con, and both allies and enemies may not be who they appear to be.

The Tyrants have three objectives: acquiring gold, gathering secrets, and protecting the [[changeling]]s of [[Sharn]]. In working the Tyrants into a campaign, the first
question is which of these objectives will take precedence. Are they primarily grifters, trying to squeeze as much profit as possible out of the situation? Are they mainly working to gather secrets, and to use those secrets to manipulate others? Or are they most concerned
with helping other changelings, who are often with the
objects of fear and suspicion?

The Tyrants offer an easy way to provide adventurers
with information. The [[Spider]] can be a strong ally for
adventurers, and you can always arrange for an agent of
the Tyrants to step out of the shadows with and offer to
sell a secret. 

The Tyrants could also have a long-term sinister
agenda—something they've been working on for generations, which is only coming to fruition now. Do they want to replace the entire [[city council|Sharn Council]] of [[Sharn]], or are their aspirations even higher than that? In a campaign that examines this idea, the Tyrants might impersonate the patrons and allies of the adventurers, thereby tricking them into carrying out questionable tasks.

The Tyrants can also serve as a group patron for a party of adventurers, especially if the party includes one or more changelings. The table below provides hooks for adventurers working with the organization.

| !<<dr d6>> |!Tyrants Assignment |
| 1 |Kill an important figure without leaving evidence behind so a member of the Tyrants can replace the target. |
| 2 |Steal a formal badge of office or uniform for a member of the Tyrants to use as part of an assumed identity. |
| 3 |Act as bodyguards for a member of the Tyrants who is pretending to be an important figure. |
| 4 |Assume new identities to infiltrate the [[Sharn Watch]] and steal criminal records. |
| 5 |Use incriminating information to blackmail a member of the [[city council|Sharn Council]]. |
| 6 |Find evidence that can be used to blackmail a member of a [[dragonmarked house]]. |

!! Tyrants Adventure Hooks
The table below presents ideas for additional adventures themed around the Tyrants.

| !<<dr d6>> |!Tyrants Adventure Hook |
| 1 |A friendly NPC dies in combat. The corpse reveals its true form to be that of a [[changeling]]. |
| 2 |A list of Tyrants agents and their identities exists somewhere in [[Sharn]]. Every legitimate and criminal organization in the city competes to find it. |
| 3 |The [[Sharn Inquisitive]] publishes an anonymous article accusing several members of the [[Sharn Watch]], the [[city council|Sharn Council]], and the [[dragonmarked house]]s of being [[changeling]] members of the Tyrants. The accused individuals vehemently deny the claims. |
| 4 |A shamed [[Brelish|Breland]] general of the [[Last War]] goes on a killing spree against changelings, claiming the Tyrants ruined his life by exposing his extramarital affair. |
| 5 |A [[Sharn Watch]] captain being blackmailed by the Tyrants has had enough. He publicly exposes his incriminating secrets, then offers a reward for information concerning the organization. |
| 6 |Roll on another organization's Adventure Hooks table; the Tyrants are secretly involved in the situation. |
The massive, crouching fortress of Tzaryan Keep is the seat of power of the [[oni]] [[warlord]] [[Tzaryan Rrac]].
Tzaryan Rrac was the first [[warlord]] of [[Droaam]] to embrace the rule of the [[Daughters of Sora Kell]]. As a reward for his fealty, the hags
granted the oni mage control of the [[Watching Wood]]’s
southern reaches and the land ranging from south of
the forest to the [[Thunder Sea]]. Tzaryan dwells there in the massive [[Tzaryan Keep]].

Arcane research and foul rituals occupy much of Tzaryan’s time. The [[oni]] mage
lusts after relics of the [[Dhakaani Empire|Dhakaan]], as well as
items from the war against the [[daelkyr]] and the [[Age of Demons]]. To this end, he sends his agents across
[[Khorvaire]], pursuing mysteries that he has uncovered
in his studies.

Tzaryan has a number of well-placed agents within the [[Sharn]] branch of the
criminal gang known as [[Daask]]. He uses these followers to keep tabs on prominent explorers in Sharn and to manipulate the resources of [[Morgrave University]]
for his own ends.

Like all of [[Droaam]]’s other
[[warlord]]s, Tzaryan lusts for power. Though he does
not openly oppose the [[Daughters of Sora Kell]], he puts
his own well-being firmly ahead of the interest of
the kingdom of monsters. The [[oni]] might well
betray the hags if the price were right.
Ulaash is a [[ghaal’dar|hobgoblin]] blademaster of the [[Kech Shaarat]]. He’s
joined the [[Deathsgate Guild]] to test the skills of chaat’oor
warriors; he may challenge martial adventurers to a duel.
He respects those who show courage and skill.
Very rarely, a tadpole from an [[elder brain]]'s brine pool transforms an individual into an ulitharid, a larger and more potent [[mind flayer]] that boasts six tentacles.

Illithids innately recognize that an ulitharid's survival is more important than their own. An [[elder brain]]'s reaction to the rise of an ulitharid varies. In most colonies, the ulitharid becomes an elder brain's most favored servant, invested with power and authority. In others, the elder brain perceives an ulitharid as a potential rival for power, and it manipulates or quashes the ulitharid's ambitions accordingly.

//''Birth of a Colony.''// When an ulitharid finds sharing leadership with an elder brain to be insufferable, it breaks off from the colony, taking a group of [[mind flayer]]s with it, and moves to another location to form a new colony. After the death of the ulitharid's body, mind flayers take its brain and place it in a brine pool, where it grows into an [[elder brain]] over a few days. This process doesn't work on the brain of an ulitharid that dies a natural death, as a brain that succumbs to old age is too decrepit to be used in the creation of an elder brain.

//''Extractor Staff.''// Each ulitharid carries a psionically enhanced staff made of black metal. When the ulitharid is ready to give up its life, it attaches the staff to the back of its head, and the staff cracks open its skull and peels it apart, enabling its brain to be extracted. The brain and the staff are then planted in the ulitharid's corpse, causing it to dissolve into ichor. This psionically potent slime helps to fuel the transformation of the area into a brine pool that surrounds an embryonic elder brain.
Umber hulks are hulking monstrosities (or possibly true [[aberration]]s) found in [[Khyber]] that resemble a beetle with the proportions of a gorilla. They can burrow through solid rock, forming new tunnels in their wake. The steel-hard chitin of its body can withstand the cave-ins, tunnel collapses, and rock falls that commonly follow it.

Burrowing into the wall of a cavern or passageway, an umber hulk lies in wait for creatures to pass by on the other side, its hair-like feelers sensing any movement around it. When it explodes out in a shower of earth and rock, its unsuspecting quarry turns to face the oncoming threat—and is entranced by the umber hulk's bewildering eyes, forced to stand helpless as its mandibles snap shut.

Many survivors of an umber hulk encounter recollect little about the attack, because the monster's confusing gaze scrambles their memory of the event. Those who have fought and killed umber hulks recognize the signs. For other denizens of [[Khyber]], grisly tales of vanished explorers and wanton destruction speak of an unknown foe. Umber hulks take on supernatural status in these harrowing stories, many of which convey the same warning: once an umber hulk has been spotted, it is already too late to escape it.

This simple axe looks no different from a standard forester's tool. A single-edged head is set into a slot in the haft and bound with strong cord. The axe was found by a timber-hauling crew who disappeared into the shadows of a cave deep in an old forest. Retrieved in the dark of the cave, the axe was found to possess disturbing magical properties.

This weapon deals extra necrotic damage to anything it hits. When you hit a [[plant creature]] with it, the target takes double damage. While you carry this axe, you may cast [[darkness]] once per day.
This arrow can't be broken, except when it is within an [[antimagic field]].
This delicate porcelain teapot is painted with intricate
flowers and gold leafing. If the teapot is broken, you can
speak its command word to cause the teapot
to magically repair itself. If any pieces are missing, the
teapot is repaired with a hole where the piece used to be.
The Unchained practice one of the most subtle and powerful forms of rebellion in [[Riedra]]. They dream. The founder of
the movement was a human named ''Sulaan'', a merchant
who was fascinated by the free dreams he experienced in
other lands. Sulaan eventually learned about the [[dreamspace]]. He decided to spread free dreams to the people of [[Riedra]], believing that doing this was the key to change
in the world.

Sulaan disappeared five years ago, and many assume
that he was taken by the [[Thousand Eyes]]. However,
some of the Unchained have received dreams of contact from Sulaan. None can say if these are truly the work of the enigmatic founder, or if the [[quori]] are masquerading as Sulaan and using this guise to manipulate his followers.

The Unchained are loosely organized, and most members know only others in their own communities. A few gifted dreamers use a [[dream of contact]] to maintain communication between distant villages, but the Unchained have no grand scheme. Members work to identify others who share their ideas and to teach the ways of the [[dreamtouched]]. In the eyes of the Unchained, dreams alone can win the battle.

''Getting the PCs Involved:'' The Unchained can be
useful allies for the PCs precisely because of their passive
stance. They can be hidden anywhere in [[Riedra]], and as
free thinkers, they can choose to help persecuted characters. They aren't willing to use violence and have limited
resources, but they can provide advice and shelter, and
potentially a [[dream of contact]]. 

See also [[Ilaan]].
Undead are once-living creatures that have been magically animated. Through the use of [[necromancy]], undead must be infused with the essence of either the plane of [[Mabar]] or the plane of [[Irian]]. 

Mabaran necromancy can create walking corpses such as [[zombie]]s and skeletons, as well as powerful creatures such as [[vampire]]s and [[lich]]es. This form of undead is commonly used as a tool by the followers of the [[Blood of Vol]] and members of the Order of the [[Emerald Claw]], and the nation of [[Karrnath]] even used animated corpses as soldiers in the [[Last War]] in order to protect their living combatants from the perilous front lines. Undead created by [[Mabar]]an [[necromancy]] must be sustained by feeding off of the living, a process which some say could potentially siphon away the very life force of Eberron.

[[Irian]] [[necromancy]] can create undead known as [[deathless]], such as the members of the [[Undying Court]], the honored ancestors of [[Aerenal]] who rule the [[elven|elf]] nation and shape their people's destiny. These undead are sustained by the devotion of their descendents, and have no need for blood or life energy as other undead do.

!! Types of Undead

<<list-links-article "[tag{!!title}sort[title]]">>
''District Type:'' Inn district<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]]), upscale lodging (1), average lodging (35), poor lodging (100), average food (20), poor food (80),
average trades (20), poor trades (60), average services
(20), poor services (60), poor residences (20)<br/>
''First Impression:'' The Underlook district has seen
better days. Dingy inns and restaurants line the
streets, but many old businesses have closed and
been transformed into wretched tenements. Nonetheless, cheap lodging is plentiful and travelers from across [[Khorvaire]] walk the streets.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Broken Arch]] (northeast); the [[Bazaar]] (east); [[Stormhold]] (south); [[Precarious]] (below); [[Overlook]] (above)

Before [[Menthis Plateau]], Underlook was the center
for [[Sharn]]'s nightlife. The district was filled with fine
restaurants, inns, and other forms of entertainment.
But over the centuries the finest establishments have
moved to other towers, leaving Underlook to decay in
the shadows. Honest sailors and merchants who arrive
at [[Cliffside]] often choose to stay in Underlook instead
of risking life and limb in the [[lower ward]]s.

In addition to the inns and taverns of Underlook,
there are a wide number of businesses that are, while
not illegal, often held in low regard. In particular,
Underlook is an excellent place to hire [[inquisitive]]s.
While the heirs of [[Tharashk]] are generally considered
to be the best inquisitives in [[Khorvaire]], there are
a number of capable non-house operatives in the
district who can do the job if the price is right. 

!! Noteworthy Locations

* [[Ghallanda Hall]]. This proud [[Ghallanda]] [[enclave]] continues to operate amid the fading squalor of [[Middle Dura]], and has become a tourist attraction. It offers a range of services, with food and lodging of poor to comfortable quality.
* [[Information Acquisition]]. An inquisitive agency run by members of House [[Tharashk]].
* Our greatest champions and sages will never be lost to us. Their wisdom guides us, and their power protects us all.
* Honor our past. Respect our traditions. Perfect your skills and you may earn your place among the [[deathless]].
* Destroy those foul creatures that channel the power of [[Mabar]], for they consume the essence of our world. 

The [[elves|elf]] of [[Aerenal]] refuse to let their greatest souls be
lost to the oblivion that is [[Dolurrh]]. The wisest and most
accomplished elves are preserved after death, being held in [[spirit idol]]s or becoming
members of the Undying Court. The devotion of the
living elves sustains the Undying Court, and the Court
generates a well of mystic energy that empowers their
clerics. As an [[Aereni]] [[cleric]], your spells aren't personally
granted to you by a specific Undying Councilor. Your
powers flow from the Court itself, allowing you to serve
its will and to protect your people.

Of all the religions of Eberron, the Undying Court is
most grounded in the world. The Court stands in the
city of [[Shae Mordai]], and as an [[Aerenal]] [[elf]], you could
seek an audience with one of your [[deathless]] ancestors.
As a devotee of the Undying Court, you recognize it as
the power that sustains your civilization and as an assembly of your greatest sages and leaders. Should you accomplish great achievements in your life, you can aspire to join the Court.

As a [[cleric]] or [[paladin]] of the Undying Court, you have
a concrete relationship with your deity. In creating your
character, consider why you've traveled so far from
home. Are you on a specific mission? Are you serving
the Court as a whole, or are you acting as an agent of a
specific councilor—perhaps your own ancestor? The Undying Court despises [[undead]] creatures that prey on the
living, so if you don't have a concrete mission, you can
always hunt down undead and evil [[necromancers|necromancy]]. 

!! Symbol

The symbol of the Undying Court is a golden mask with
luminous eyes, worn over the face while a priest is carrying out their duties. Devotees wear a smaller mask as
a brooch or amulet. 

!! Rites

The most sacred rite of the Undying Court is trance
communion. While in trance, an [[Aereni]] [[elf]] engages in
meditation that connects them to the gestalt consciousness of the Court. This experience affirms the place of
the individual as part of the greater whole.

Since trance communion is a personal experience,
the role of the priest is to provide spiritual and practical
guidance to their congregation. A masked priest serves
as the face of the Court, and any elf can approach them
seeking an ease to their burdens. 

!! Temples

In [[Aerenal]], the temples of the Undying Court are step
pyramids built from stone. In [[Khorvaire]], shrines to the
Court use imported Aereni [[densewood]], a particularly
tough lumber that grows only on the island. Regardless
of form, the walls are engraved with stories about the
Undying Councilors that serve as the particular patrons
of the temple, usually those related to the local priests. 
This item is a common leather belt with a circular buckle. When activated, the belt grows and expands, magically unfolding over the user's body until they are clad in a full suit of burnished leather armor. The whole process takes less than twenty seconds. After unfolding, the armor becomes nonmagical.
Unicorns dwell in enchanted forests. Unrelated to the horses it resembles, a unicorn is a celestial creature that wanders the realms of [[Thelanis]], its white form glimmering like starlight.

A unicorn's brow sports a single spiraling horn of ivory whose magical touch can heal the sick and the injured. Its ears catch the words and whispers of the creatures that share its domain, and it knows the tongues of [[elves|elf]] and [[sylvan|fey]] folk. Unicorns allow good-hearted creatures to enter their woods to hunt or gather food, but they hold evil ever at bay. Foul-hearted creatures seldom leave a unicorn's domain alive.

Unicorns are sometimes ridden as mounts by blessed champions chosen by the majestic creature. They make trusty steeds, able to run as fast as a warhorse, and they possess limited teleportation ability as well.
The Unity forms the foundation of [[Riedra]]n government, and the
majority of the population serves one of its branches.
While each branch of the Unity has its own ministers,
the seven arms work together in the service of the nation
and answer to the local bastion lords. This arrangement
separates the Unity from the [[Thousand Eyes]] and [[Harmonious Shield]], which follow different chains of command.
All branch high ministers are skilled [[psion]]s.

!! Branches of the Unity of Riedra

<<list-links-article "[tag{!!title}sort[title]]">>
This tube holds milky liquid with a strong alcohol smell. The liquid instantly dissolves up to 1 square foot of adhesive it touches, including [[sovereign glue]].
The pursuit of knowledge and education are things that
flourish in times of peace. While most [[dominion]]s are
devoted to their own personal contemplation, the [[Throne|throne]] of
Knowledge maintains the University of [[Syrania]], where chosen
students can study an astonishing array of subjects with
[[virtue]]s of knowledge and the occasional guest dominion. The
catch is that students need to be admitted... and there isn't
actually a process for applying. At the moment, the University
only has twenty students, chosen from across the [[plane]]s by
roaming virtues.

For planar travelers who come to Syrania, the University is
a good repository of general knowledge; if the scholarly virtues
can't help, they'll likely know the way to a dominion that can.
It's also an unusual background for a player character; perhaps
a [[sorcerer]] unlocked their powers at the University,
or perhaps a [[warlock]]'s [[celestial]] patron is their thesis advisor.
''District Type:'' University<br/>
''Buildings:'' University buildings—instruction and
faculty offices (15), library (5), temple ([[Aureon]]),
shrine ([[Path of Light]]), upscale lodging (20), upscale
food (30), upscale (literary) trades—booksellers,
stationers, mapsellers, seal makers, etc. (50),
upscale (literary) services—scribe, sage, translator,
cartographer, etc. (38), dormitories (20), upscale
residences (100)<br/>
''First Impression:'' Students carrying armloads of
scrolls and books hustle to classes, while others sit or
stand in circles, discussing the day's lessons.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Ivy Towers]] (northwest); [[Den'iyas]] (northeast); [[Platinate]] (southeast); [[Seventh Tower]] (southwest); [[Highest Towers]] (bridge, north); [[Sunrise]] (bridge, south); [[Everbright]] (below)

The home of [[Morgrave University]], the University
District is dedicated to the pursuit of knowledge—while making as much profit as possible. From Morgrave itself to the businesses that have sprung
up around it, love of learning coexists with love of
earning and the two feed happily off each other. If
scholarly interest can lead to great profit, or thirst
for gold to historical discovery, then the residents of
the University District are doubly satisfied. 

!! Noteworthy Locations

* [[Morgrave University]]. Perhaps not the most respectable institution of higher learning in [[Khorvaire]], Morgrave boasts an unparalleled collection of artifacts and scholarly works about ancient [[Xen'drik]] and the [[Dhakaan]] Empire, and is a major patron of adventurers and explorers.<br/><br/>
* [[Art Temple]]. This theater is renowned for its avant-garde techniques and subjects. 
* [[Golden Horn]]. This wealthy inn includes a library, a few large meeting rooms, and a small concert hall. Performing at the Horn is an excellent opportunity for aspiring [[bard]]s.
* [[Grand Stage]]. This stage hosts grand performances of the beloved classics of [[Galifar]], along with more modern works that follow classical traditions.
* [[Kavarrah Concert Hall]]. The grand auditorium near the University, Kavarrah Concert Hall hosts the finest musical performances in Sharn. 
* [[Haftak's Books and Binding]]. The [[Sharn Inquisitive]], the city's local chronicle, is printed at this bookstore and bindery.
* [[Sharn Opera House]]. Performances at the Sharn Opera are one of the most highbrow forms of entertainment in the city. 
* [[Stargazer Theater]]. This open-air theater focuses on popular entertainment with family appeal. 
[[Morgrave University]] might be better known, but [[Fairhaven]]'s University of Wynarn—the first institution of higher learning in the [[Five Nations]]—is better respected. The campus outgrew
its initial building long ago and now encompasses
six sprawling structures equipped with dormitories,
apartments, libraries, restaurants, coffee houses, theaters, classrooms, laboratories, and museums. Though not quite as impressive as the great
[[Library of Korranberg]], the Royal Collection of Aundair
stacks up as the second-best repository of tomes and scrolls
in all of [[Khorvaire]].

The university remained open throughout the [[Last War]], but fewer and fewer enrollees arrived. By the
war’s end, the professors outnumbered the students.
To increase enrollment, the university relaxed its
restrictions on attendees and invited new students
from all nations. The new policy created a cosmopolitan mix of scholars including [[orc]]s, [[goblin]]s, [[shifter]]s,
and even a few [[warforged]]. This diversity has resulted
in increased tensions among the student body, and
strident calls for more representation of minority races
among the teaching staff. Still, the university is committed to educate as it has over the centuries and has
taken steps to accommodate its diverse population.
This is the [[Xoriat]] stronghold and birthplace of the [[daelkyr]] [[Belashyrra]].
The Lord of Eyes imagined the [[beholder]]s and brought that
vision to life, and the Citadel is home to a host of beholderkin.
Tiny floating eyes buzz about like insects. Millipede-like
creatures have rows of eyes running down their backs. The true
beholders are mostly focused in deep contemplation of specific
things, and don't pay attention to outsiders unless they're
disturbed. Some study strange paintings. Others watch scrying
pools reflecting images of [[Eberron]] or other planes. And some
examine seemingly mundane objects, such as a rusty iron key,
a dead rabbit, or an expensive hat. However, there are a few
that patrol the Citadel, watchful for intruders.

The surfaces of the Citadel are made from an iridescent
material that your eyes can't quite focus on, as if the walls and
floor are blurred. There are mirrors spread around the halls.
Some run slow and show you younger than you are; others
show glimpses of the future. Scrying pools reveal secrets you
don't want to know—current events on Eberron, scenes from
the past, or the possible future.
This spell creates an invisible, mindless, shapeless, human-sized force that performs simple tasks at your command until the spell ends up to 1 hour after casting. The servant springs into existence in an unoccupied space on the ground within 60 feet.

You can mentally command the servant to move around and interact with objects. The servant can perform simple tasks that a human servant could do, such as fetching things, cleaning, mending, folding clothes, lighting fires, serving food, and pouring wine. Once you give the command, the servant performs the task to the best of its ability until it completes the task, then waits for your next command. It struggles to pick up anything heavier than 30 lbs, and it can't attack. If it ever suffers harm, the spell ends.

If you command the servant to perform a task that would move it more than 60 feet away from you, the spell ends.
Gold and power flow down from Upper Central. The
district of [[Highest Towers]] is the seat of government,
where city hall and the municipal archives are located.
The [[Korranath]] is the name of both the central financial
district and the grand temple of [[Kol Korran]] that dominates it. This district also houses the [[Kundarak Bank of Sharn]] and the [[Vaults]], House [[Kundarak]]'s ostensibly
impenetrable storage facility.

Some of Sharn's wealthiest citizens live in the [[Mithral Tower]] district, and [[Platinum Heights]] is the most expensive market district in Sharn. It has fewer shops than
the [[Bazaar]] of [[Dura]], but if you're looking for top-quality
goods or services, there's no finer—or more expensive—source to be found.

If you maintain no better than a poor lifestyle, many
people in Upper Central will assume you're a servant or
vagrant; this could cause you to have disadvantage on
Charisma checks involving residents. 

!! Districts and Noteworthy Locations

* [[Highest Towers]]. The seat of city government, this district is also where [[airship]]s arrive and depart. 
** [[City Archive]]. This enormous edifice holds the historical and legal records of Sharn and the surrounding regions. 
** [[Council Hall]]. The seat of city government and the site of [[City Council|Sharn Council]] meetings. The council meets weekly, and visitors can watch from the gallery. 
** [[Lyrandar Tower]]. All [[airship]] travel to and from Sharn passes through the docking spires of Lyrandar Tower, the [[house|Lyrandar]]'s primary [[enclave]] in Sharn. 
* [[Korranath]]. Named for the great temple of Kol Korran that lies at its center, this district is dedicated to wealth and finance. Moneychangers, banks, and grand vaults are found here, in addition to the estates of powerful merchants. 
** [[The Korranath|Korranath (temple)]]. The temple of Kol Korran is an ostentatious display of wealth and a popular tourist attraction, since many believe praying at the Korranath ensures success in business. 
** [[Kundarak Bank of Sharn]]. This is the largest bank in Sharn and the center of House [[Kundarak]] urban operations in the city. 
** The [[Vaults]]. Located below the Kundarak Bank, the Vaults are Kundarak's heavily guarded storage facility.
** [[Wayfinder Foundation|Wayfinder Foundation (Sharn office)]]. The guildhall for this legendary [[association of explorers|Wayfinder Foundation]]. 
* [[Mithral Tower]]. Mithral Tower is Sharn's most desirable downtown residential district, comparable to the more suburban [[Oak Towers]] and [[Crystal Bridge]] districts in [[Upper Northedge]].
** [[Tomollan Estate|Javan Tomollan]]. Mithral Tower's most noteworthy resident is its representative on the city council, Javan Tomollan.
* [[Platinum Heights]]. Catering to Sharn's elite, this district provides a wide range of shops and services of wealthy Upper Central to aristocratic quality. 
** [[Aurora Gallery]]. The most prestigious auction house in Sharn, Aurora deals in magic items, exotic finds from [[Xen'drik]], and other wonders. 
** [[Gray Dragon Inn]]. This inn provides aristocratic and wealthy lodging for those who can afford it. 
** [[Sannid's]]. One of Sharn's most celebrated restaurants, Sannid's serves Brelish cuisine of wealthy quality and has a legendary wine cellar. 
* [[Skysedge Park]]. Home to three sprawling rooftop parks, this district provides a touch of wilderness in the Upper Central heart of the city. A small community of immigrants from the [[Eldeen Reaches]] maintains these groves and gardens.
** [[Skysedge Park (park)]]. The largest of the three parks in this district gave its name to the whole district.
** [[The Gatehouse|Gatehouse]]. This small stone building is a sacred site to the sect of [[druid]]s known as the [[Gatekeepers]].
This ward is full of activity. Its people are prospering,
but there's an edge of desperation about them; many
folk are on the lookout for opportunities to better themselves. Upper Dura has the general properties of a middle ward, with most goods and services priced for a
modest or comfortable lifestyle. The merchants and artisans are accustomed to dealing with unusual individuals, and adventurers receive a warm welcome here.

[[Clifftop]] is a home away from home for explorers and
mercenaries. [[Daggerwatch]] is a fortress district, containing garrisons for the [[Sharn Watch]] and the Brelish army. The [[Gold & White]] is a Daggerwatch tavern that caters
to Brelish soldiers; those who hold a Brelish military
rank will receive a warm welcome, while those who
served other nations would be wise to take their business elsewhere.

In the [[dwarven|dwarf]] district of [[Highhold]], a center of activity is [[Moraggan's]], which serves the strongest spirits in
Sharn, but it's no mere tavern; often patronized by [[Mror|Mror Holds]] merchants and [[Kundarak]] agents, it maintains the highest of standards (with prices to match).

The [[Highwater]] district is home to the wealthiest inhabitants of Dura and is the site of [[Pegasus Spire]], the [[enclave]] of House [[Vadalis]]. The temple district of [[Hope's Peak]] features the [[Citadel of the Sun]], a grand temple of [[Dol Arrah]] and a bastion for the virtuous. The [[Overlook]]
district is home to Sharn's [[kalashtar]] community and
includes the only temple of the [[Path of Light]] in [[Breland]]. 

!! Districts and Noteworthy Locations

* [[Clifftop]]. This district caters to adventurers, with a wide array of businesses aimed at explorers and fortune hunters. 
** The [[Clifftop Adventurers' Guild]]. An institution that provides adventurers with camaraderie and profitable work. 
** The [[Drunken Dragon]]. A tavern frequented by members of the Clifftop Adventurers' Guild. The food is modest, but it has the widest selection of exotic alcohol in [[Sharn]]. 
** The [[Esoteric Order of Aureon]]. The guildhall of one of Sharn's most prestigious arcane orders. A reliable source for arcane spellcasting services. 
** The [[Mystic Market]]. A collection of shops specializing in different categories of [[magic item]]s. Most merchandise is common or uncommon, but rare items are occasionally available. 
* [[Daggerwatch]]. Daggerwatch holds garrisons for both the [[Sharn Watch]] and the Brelish army, along with business and residences for those who support the garrisons. 
** The [[Gold & White]]. This tavern offers fare of comfortable quality at modest prices. It caters to members of the Sharn Watch and Brelish veterans, but others will receive a cold welcome. 
* [[Highhold]]. A district built by dwarves for dwarves, Highhold has strong [[Mror|Mror Holds]] influences in its architecture. It's a good place to find Mror goods and is home to talented smiths and brewers.
** [[Moraggan's]]. A posh tavern specializing in strong Mror spirits. Food and drink are wealthy in quality and cost. 
* [[Highwater]]. The finest residential district in Dura and the seat of House [[Vadalis]], Highwater is largely comfortable in quality with a few wealthy estates. 
** [[Pegasus Spire]]. The seat of House Vadalis in Sharn is one of the few enclaves where [[pegasi|pegasus]] are raised and trained. Native to [[Syrania]], these celestial beasts can become stranded in Sharn; Vadalis heirs care for them and match them with virtuous companions. 
* [[Hope's Peak]]. A relatively new temple district, with shrines and churches that have relocated from [[Fallen]] in [[Lower Dura]]. Hope's Peak includes several monasteries and a sacred grove. 
** The [[Citadel of the Sun]]. A temple devoted to [[Dol Arrah]], noteworthy for the three blessed [[griffon]]s that reside there. 
* [[Overlook]]. Overlook is noteworthy for its [[kalashtar]] community, which maintains a community center, a shrine devoted to the [[Path of Light]], and a few restaurants serving [[Sarlonan|Sarlona]] cuisine.
* [[Redstone]]. A relatively new district, Redstone has grown into one of the largest centers for commerce in the city, nearly twice the size of [[Granite Halls]].
Elegant and civilized, Upper Menthis is home to four of
the finest theaters in [[Breland]]: the cutting-edge [[Art Temple]], the colorful [[Khavish Theater]], the traditional [[Grand Stage]], and the open-air [[Stargazer Theater]], as well as
the [[Kavarrah Concert Hall]]. 

The shops in Upper Menthis deal mainly in fine food,
fashion, and exotic goods. For instance, in the [[Seventh Tower]] district, Window on Yesterday, Echoes of the Past, the Mekdall Gallery, and Cloud Antiquities all
buy and sell interesting antiques and trinkets from distant lands (see [[Little Xen'drik]]).

The district of [[Den'iyas]] is a [[gnome]] neighborhood
that provides a glimpse into the culture of [[Zilargo]]. [[Davandi Fine Tailoring]] is the source of some of the finest
[[glamerweave]] clothing in [[Khorvaire]], and the district also hosts a number of businesses that specialize in [[alchemy|alchemist]],
[[illusion]], or [[divination]]. Visitors should be aware that intrigue is the primary pastime in Den'iyas, and that hapless adventures can easily find themselves pulled into
intricate schemes or feuds.

Upper Menthis also contains the [[University District]],
home to Breland's finest institutions of learning. 

!! Districts and Noteworthy Locations

* [[Den'iyas]]. Founded by [[gnome]] immigrants from [[Zilargo]], Den'iyas is a haven for those interested in Zil culture. It's home to many sages and artisans, and a hotbed of schemes and intrigue. 
** [[Davandi Fine Tailoring]]. In addition to being the city councilor representing Upper Menthis, the gnome [[Thurik Davandi]] is an accomplished tailor and [[magewright]] who produces the finest glamerweave clothing available in Sharn. 
** [[Khavish Theater]]. Established by and for [[gnome]]s, the Khavish has ample seating for small creatures, and its shows make extensive use of illusions. 
* [[Ivy Towers]]. This residential district includes comfortable homes and modest apartments. Many of the students and faculty of [[Morgrave University]] live in Ivy Towers. 
* [[Platinate]]. A high-end residential district, home to several retired explorers and adventurers.
* [[Seventh Tower]]. A shopping district, with restaurants and goods of comfortable to wealthy quality. Seventh Tower is especially noteworthy for [[Little Xen'drik]], a collection of galleries whose owners buy and sell goods from [[Xen'drik]]. 
** [[Little Xen'drik]]. This area of small shops deals in antiquities and relics recovered from [[Xen'drik]] and the ruins below Sharn. 
* The [[University District]]. This district is dominated by [[Morgrave University]]. It's also a nexus for sophisticated entertainment, including the Art Temple, the Grand Stage, and the Great Hall of Aureon. 
** [[Art Temple]]. This theater is renowned for its avant-garde techniques and subjects. 
** [[Dezina Museum of Antiquities]]. Attached to Morgrave University, this building displays the relics recovered on the university's many expeditions. 
** [[Golden Horn]]. This wealthy inn includes a library, a few large meeting rooms, and a small concert hall. Performing at the Horn is an excellent opportunity for aspiring [[bard]]s.
** [[Grand Stage]]. This stage hosts grand performances of the beloved classics of [[Galifar]], along with more modern works that follow classical traditions.
** [[Great Hall of Aureon]]. Sharn's largest temple to the [[Sovereign|Sovereign Host]] [[Aureon]], the Great Hall celebrates knowledge and learning. The clergy are sages and savants in a wide variety of fields. 
** [[Kavarrah Concert Hall]]. The grand auditorium near the University, Kavarrah Concert Hall hosts the finest musical performances in Sharn. 
** [[Sharn Opera House]]. Performances at the Sharn Opera are one of the most highbrow forms of entertainment in the city. 
** [[Stargazer Theater]]. This open-air theater focuses on popular entertainment with family appeal. 
Upper Northedge is the perfect place for the noble who
can afford a manor in the clouds but wants to avoid the
bustle of [[Upper Central]]. The districts of [[Crystal Bridge]]
and [[Oak Towers]] are filled with spire-topped manors and
grand estates. A host of rooftop parks and gardens provide lovely spaces to sit and reflect.

[[Shae Lias]] is arguably the most remarkable district of
Upper Northedge. Its population is largely composed of
[[elves|elf]], and it is a bastion of [[Aereni]] culture and traditions.
The heart of Shae Lias is the [[Gates of Passage]], a grand
structure that is both the Aereni embassy and a temple
to the [[Undying Court]]. The priests of the Undying Court
don't share this information with outsiders, but many
residents believe that an actual member of the Court—an ancient [[undead]] elf possessing vast knowledge and
divine power—resides in the temple.

Other points of interest in Shae Lias include the [[Oaks]],
one of the finest restaurants in Sharn, which serves
food of the highest quality (and priced accordingly).
The [[Veil of Flesh]] specializes in Aereni body art, in the
form of both traditional tattoos and temporary illusions
woven directly into the skin. The business known as
[[Nightshade]] might be the most unusual watering hole
in Sharn, doubling as apothecary and tavern; the house
specialty is beverages tainted with weak poisons, designed to take the imbiber to the very edge of death.  

!! Districts and Noteworthy Locations

* [[Crystal Bridge]]. A peaceful residential district with many wealthy and aristocratic estates. 
* [[Oak Towers]]. A residential district where housing ranges from comfortable to aristocratic. Construction in Oak Towers uses materials and styles drawn from [[Aerenal]], and the district is home to many of Sharn's established [[elf]] and [[half-elf]] families. 
* [[Shae Lias]]. This district is a bastion for the culture and traditions of the elves of [[Aerenal]]. It includes a variety of businesses specializing in Aereni goods, as well as a temple of the [[Undying Court]]. 
** [[Gates of Passage]]. Built from Aereni [[densewood]], this spire serves both as the embassy of [[Aerenal]] and a temple of the Undying Court. Aereni citizens who die in Sharn are interred in the temple crypts until their remains can be transported to Aerenal. 
** [[Nightshade]]. An apothecary dealing in exotic herbs and salves, Nightshade is also a tavern specializing in lightly poisoned beverages. 
** The [[Oaks]]. A legendary restaurant that serves Aereni and Brelish cuisine. The quality is unmatched, as are the aristocratic prices. Head chef [[Maza Thadian]] has maintained the Oaks for over three hundred years, but after her recent appointment as [[city councilor|Sharn Council]] for Upper Northedge she is often occupied with other matters. 
** The [[Silver Bough]]. This establishment deals in arms crafted in the Aereni tradition. This merchandise includes [[magic item]]s, but woodshaper Tanar Mendyrian takes time to produce his wonders, and only a limited selection is available at any given time. 
** The [[Winding Root]]. A marketplace and gallery that showcases the work of elven artisans, including sculptures, textiles, and fine clothing. 
** The [[Veil of Flesh]]. This studio deals in Aereni body art and alteration, such as tattoos and cosmetic [[transmutation]]. 
This ward is effectively a self-contained city catering to
the nobles that live there. It has fine housing, skilled services, a luxurious mercantile district, and even an entire
district—[[Sunrise]]—designed for the servants of the nobles. The services and lodging in Sunrise accommodate
those with poor or modest lifestyles, as opposed to the
higher-priced goods found elsewhere in the ward.

For those willing to put up with its restrictive laws,
Upper Tavick's Landing has many fine features.
[[Wyredd's Spirits]] is the best source for wine in Sharn.
The shop [[Crystals of Denion]] buys and sells rare [[magic item]]s, though it only has a handful of such items at any
given time. [[Transmutation]] is a renowned beauty salon
providing both mundane and arcane services. House
[[Deneith]] maintains a fortified garrison and training facility in the [[Copper Arch]] district.

!! The Laws of Upper Tavick's Landing

During the war, fears of attacks by foreign agents resulted in the establishment of a number of laws here
that affect visitors, including adventurers, to this day.

The soldiers of House [[Deneith]] have full authority
to act as agents of the [[Sharn Watch]] in Upper Tavick's
Landing, and staff of Deneith's elite [[Blademark|Blademarks Guild]] mercenaries maintain checkpoints at the district's edges. 

You need a license to carry a weapon in Upper Tavick's Landing. It costs only 1c, but you have to plead
your case to a clerk. Any Blademark or member of the
watch can demand to see your license and might confiscate unauthorized weapons. You also need a license
to cast spells in the ward. It costs 2c, and you must
specify the spells you intend to cast. A fine can be levied
for any unauthorized use of magic. To get licenses for
weapons or spellcasting, you'll have to go to the courthouse in the [[Twelve Pillars]] district.

Another law requires inhabitants to dress "in a manner that upholds the solemn dignity of this proud ward."
[[Blademarks|Blademarks Guild]] and officers of the watch can choose how
they interpret this. Typically, armor is considered inappropriate unless you're tied to House [[Deneith]] or the
[[Sharn Watch]], or you've served with the Brelish military.
Anyone in contempt of this law is escorted out.
Any sort of unruly behavior—fighting, shouting in the
streets, and the like—brings a fine of up to 1c and temporary expulsion from the ward. 

!! Districts and Noteworthy Locations

* [[Copper Arch]]. This district is built around the [[Deneith]] garrison that polices the upper ward. It contains shops and services catering to the wealthy elite. 
** The [[Three Towers]]. A fortress [[enclave]] of House [[Deneith]]. One tower is a garrison for the [[Blademark|Blademarks Guild]] mercenary forces that police Upper Tavick's Landing. The second is dedicated to house business and training. The third is a private mansion for Deneith heirs. 
** [[Transmutation]]. A beauty salon that employs both magical and mundane cosmetic techniques. 
** [[Wyredd's Spirits]]. Wyredd deals in fine wines and exotic spirits. Wyredd's has the finest selection in Sharn, but his prices are high. 
* [[Dalan's Refuge]]. An opulent residential district replete with monuments of prominent Sharn citizens.
* [[Ocean View]]. This residential district is home to some of the most influential citizens of Sharn. It has a mix of wealthy mansions and aristocratic estates. 
* [[Pinnacle]]. This temple district seems to hold the social aspect of religion at a higher importance than practicing the faith.
* [[Silvergate]]. This shopping district is patronized by those with gold to spare. All manner of fine jewelry and expensive clothing can be found here, along with aristocratic food and lodging. 
** [[Crystals of Denion]]. This gallery deals in rare and expensive [[magic item]]s. The selection is limited, and Denion looks for items that are both beautiful and powerful. 
* [[Sunrise]]. This district provides housing for the shopkeepers and servants who keep Upper Tavick's Landing running. Housing is largely modest in quality, with a few comfortable towers.
* [[Twelve Pillars]]. This is the civic heart of Upper Tavick's Landing. The twelve pillars it's named for surround a courthouse, the [[Tower of Law]], where visitors can get licenses to carry weapons in the ward. 
The upper [[city|Sharn]] sees the most light and enjoys the freshest air,
and consequently the most well-to-do members of
society live and work among the skybridges and
platforms and balconies that extend from the
uppermost towers. 

<<list-links "[tag{!!title}sort[title]]">>
1: A group of adventurers approaches, telling you to move along and stop trying to steal their business. (If the characters belong to the [[Deathsgate Guild]] or the [[Clifftop Adventurers' Guild]], these could be members of the rival guild.)
2: Outside a House [[Kundarak]] bank, a [[human]] noble screams at a [[dragonmark]]ed [[dwarf]], "What do you mean it's lost?"
3: A priest of [[Kol Korran]] preaches to a crowd, saying, "The best way to invest in yourself is to invest in your gods."
4: An [[elf]] riding a [[pegasus]] with bulging saddlebags asks you for directions to the [[Aurora Gallery]].
5: Two drunk [[dwarves|dwarf]] pass a bottle of spirits back and forth and sing a bawdy song. Passersby are mortified.
6: Two [[kalashtar]] play dragonchess at an outdoor table. They move pieces without touching them.
7: A [[halfling]] chef stands in a large [[skycoach]] that is equipped with a stove, oven, and washbasin. Several spectral hands prepare and plate food as the chef serves a party of smiling customers.
8: A [[harpy]] decked out in colorful ribbons flies overhead, calling, "Get the best deals on adventuring gear at Old Claggin's in [[Clifftop]]."
9: Some [[Morgrave|Morgrave University]] students follow their [[dwarf]] professor onto a lift as she says, "Next stop: the [[Cogs]]!"
10: An out-of-breath [[gnome]] carrying bagpipes asks you for directions to [[Kavarrah Concert Hall]].
11: A flustered [[gnome]] carries a stack of papers taller than he is—unaware of the plume of smoke coming from inside a scroll case slung on his back.
12: You walk by a shirtless [[elf]] tattooed from head to waist with images of [[dragon]]s battling each other.
13: A groomed [[hobgoblin]] wearing a jeweled vest approaches you and says, "Ah! Adventurers. Any interest in securing some [[Dhakaan]]i relics for me?"
14: Someone has painted, "The crown dies with [[Boranel|Boranel ir'Wynarn]]!" across the gates of a noble's mansion. A member of the [[Sharn Watch]] is talking to the household staff.
15: A [[magewright]] offers to shine your shoes instantly with magic for 2 gold galifars, saying, "You can't be seen with those dirty things up here."
16: A [[human]] wearing the livery of House [[Vadalis]] struggles to carry a 3-foot-tall speckled blue egg down the street.
17: An [[aasimar]] oracle approaches and promises to give you the answer to all the problems that ever existed for 42 gold galifars.
18: A [[shifter]] with flowers in her hair and a wand in her hand offers to magically gild any item of clothing you wear for 20 gold galifars.
19: Four [[warforged]] work together to operate an enormous tarrasque puppet as publicity for a new play at the [[Art Temple]].
20: A horrified crowd is gathered around a burning effigy of King [[Boranel|Boranel ir'Wynarn]]. No one claims responsibility for the act.
21: A [[human]] noble is berating a [[warforged]] servant for losing her invitation to the next [[Tain Gala]].
22: A young noble proposes to his boyfriend in a beautiful garden on a tower balcony. Nearby, a [[changeling]] looks on in tears.
23: You walk down a path lined with trees on which are growing candy-coated apples.
24: Three children sparring with wooden swords play dangerously close to the edge of a bridge.
25: A [[kalashtar]] on the street approaches you, saying, "I can help you talk with the dead. Is there anyone you miss?"
26: An artist offers to draw caricatures of everyone in your group at the same time by using several magically animated quills.
27: You approach a fresco painted on the ground that depicts King [[Boranel ir'Wynarn]]. As you get closer, the fresco speaks, delivering an inspiring line taken from one of the king's speeches.
28: A [[dragonborn]] standing near several [[soarsled]]s offers you a tour of upper Sharn's most impressive mansions.
29: Two nobles, one [[Aundair]]ian and one [[Brelish|Breland]], heatedly debate which of their countries would have won the [[war|Last War]] had it been fought to a conclusion.
30: A gilded [[warforged]] plays a sad song on a trumpet, honoring those who fell during the [[Last War]].
31: A group of well-outfitted adventurers snicker and whisper to each other as you pass.
32: You turn a corner and notice a [[shifter]] who immediately puts her hands in her pockets and starts whistling, obviously trying to act inconspicuous.
33: A [[pseudodragon]] flies out of a nearby bush. As the playful creature licks your faces, you notice it wears a collar engraved with the letter M.
34: You walk past a placid pond in a small park filled with colorful fish. An attendant removes dead fish from the water with a net.
35: You come near a mansion, and an illusion of an old man dressed in noble finery appears. "Get off my lawn!" the figure gripes.
36: An [[elf]] child with a faerie dragon on a leash walks toward you and asks if you'd like to touch the exotic pet.
37: You find a small brass key on the ground that glows blue whenever it is touched.
Ustah is a potent [[Syrk|Syrkarn]] liquor brewed from honey and wild berries, reportedly from an ancient [[ogre]] recipe.
To unite the Six Kings, [[Jhazaal Dhakaan]] created a dream they
could share—a vision that bound them all together. However,
this isn't just a metaphor. When mortals sleep, their spirits touch
[[Dal Quor]] and create temporary dreamscapes. Jhazaal Dhakaan
bound the spirits of the dar together, creating a vast, permanent
dreamscape within Dal Quor—a vision of the ideal [[empire|Dhakaan]].
With the spirit of every [[dar|Heirs of Dhakaan]] tied to this place, when one of them
sleeps, they dream of the empire and their place within it.

The Uul Dhakaan isn't oppressive. Each dreaming dar
has their own unique dreams within the Uul, and just like
normal dreams, these are a place to process recent events and
experiences. But the Uul Dhakaan provides a foundation that
shapes and flavors those dreams, teaching and inspiring even
while allowing the dar to process their own experiences. The
Uul Dhakaan also retains the memories of all those who have
gone before. While dreaming in the Uul Dhakaan, a warrior
could experience a battle against the [[daelkyr]] that occurred
thousands of years ago, fighting alongside one of the greatest
heroes of that age. A smith could forge a blade alongside a
legendary [[daashor|artificer]]. These things aren't real; both the hero and
the smith are dreams, pieced together through memory. And
as with any dream, the dreamer likely won't remember most
of it after they wake up. But it remains in their subconscious
as a source of inspiration and instinct. The dar know what
the empire could and should be. They know the role they are
supposed to play, the meaning of //muut// (duty, honor of the empire, what is expected of you) and //atcha// (personal honor, glory, the opportunity to exceed what is required of you). And they feel the connection to the dar around them, understanding they all
share that common vision. This reinforces the other aspects of the Dhakaani psyche,
strengthens their martial discipline, and underlies their
adherence to caste roles.

The Uul Dhakaan is a dream, and for most dar, it's nothing
more than that. It's not something they discuss with outsiders,
nor something they give much thought to from day to day;
dreaming of the empire is just a part of life. But there are a few
people within each kech who deal with the Uul Dhakaan in a
more concrete fashion:

* ''Chot'uul.'' The “dream watchers” are an order of monks who monitor the Uul Dhakaan and protect it from corruption. In addition to specialized training and mental discipline, the chot'uul employ tools to retain their full consciousness and memories while dreaming, even allowing them to bring prized possessions into the dream (see [[uul'kur|dream key]] and [[kra'uul]]). The chot'uul protect the Uul Dhakaan from [[quori]] manipulation, the corruption of the [[daelkyr]], and other spiritual threats.
* ''Duur'kala.'' A [[dirge singer]]'s training often includes time within the Uul Dhakaan. An [[uul'kur|dream key]] allows the novice duur'kala to experience historical events within the dream or to study with the memory-shades of duur'kala masters.
* ''Uul'kala.'' The “dream singers” are [[dirge singer]]s who specialize in walking in dreams. The deep vaults of the [[Kech Dhakaan|Heirs of Dhakaan]] are spread across [[Khorvaire]], and the uul'kala act as their ambassadors and emissaries, maintaining communication between each kech and planning strategies. This serves a similar role to the [[speaking stone]]s of House [[Sivis]], for a duur'kala equipped with an uul'kur can report back to superiors in their dreams. While useful, this practice isn't as widespread as the speaking stones of the [[Five Nations]]. Uul'kur are a limited resource, and even with one, it takes skill to navigate within the dream. There are kech vaults that lost their last uul'kala over the centuries in isolation, and as a result, that clan's fate remains unknown to the present day.

The Uul Dhakaan serves as a foundation for the Dhakaani
psyche, reinforcing their beliefs and traditions. But it's not an
oppressive force, and for most Dhakaani, it's simply a source of
instinct and inspiration. In creating a Dhakaani character,
consider whether the Uul Dhakaan holds any special
importance for you.

If adventurers want to experience what the Dhakaani Empire was at its height—and what it could be again—they can find it here. Chot'uul
guardians maintain outposts throughout the dream, along with
a great monastery in the capital city. The magic woven into the
dream ensures that the throne in the imperial palace remains
empty—for now. But when a new emperor is chosen and has
the support of the majority of the dar, they'll hold the throne in
the Uul Dhakaan as well as in the Material Plane.
Although [[Adar]] has more than a few [[Kythri]] [[manifest zone]]s, Uutkleza is a particularly dark scar on the mountains near which only bedlam dwells. Getting to Uutkleza requires a treacherous climb from 4,000 to 10,000 feet,
then a descent into a crater like that of an inactive volcano.
No volcano sleeps here, though. Within the ringing peaks,
Uutkleza's landscape roils and shifts, sometimes even with
the thoughts of a traveler. Openings to [[Kythri]] pop in and
out at random intervals, defying the [[Shroud]] and sometimes
trapping denizens from the Churning Chaos in Adar. [[Chaos pool|chaos pool]]s also dot the landscape.

Uutkleza is home to any creature found on [[Kythri]],
and within it at least one [[roc]] is known to reside. The entropic atmosphere of Uutkleza shares all of Kythri's traits, except that gravity is normal. In the expanse of Uutkleza, a small order of [[githzerai|gith]] have an enclave they
call ''Sudakha''. Though they know and admire some of the
values expressed within [[Adar]], the githzerai interact little
with those outside Uutkleza, spending much of their
time honing their skills by keeping whatever comes from
[[Kythri]] within Uutkleza. Recently, an [[Endseeker|Endseekers]] sect has
moved near the crater, apparently having designs on the
githzerai monastery and the [[chaos pool]]s. 
''Leader:'' [[Dalin d'Vadalis]]<br/>
''Headquarters:'' [[Foalswood]] (near [[Varna]], [[Eldeen Reaches]])<br/>
''Dragonmark:'' [[Mark of Handling]]

//Don't get sentimental. A beast is a tool. Our role is to find the right tool for the task and to make sure they're of the finest quality. Nature is our kingdom; never forget that we were born to rule it.//

<div align="right">—Dalin d'Vadalis</div>

Represented by the [[hippogriff]], House Vadalis plays an
important role in daily life, offering meat, mounts, and
more. Vadalis isn't one of the most powerful houses, but
its barons are generally content; they're more interested
in discovering new monstrosities than engaging in politics. The current head of the house, Dalin d'Vadalis, disdains the use of a title and has no aspirations to nobility
or greatness for himself or his house.

House Vadalis breeds and trains beasts for a wide
range of purposes. While the house maintains vast cattle ranches and trains horses and hounds, the [[Mark of Handling]] allows Vadalis to work with more exotic creatures as well. [[Griffon|griffon]]s, [[hippogriff]]s, and even [[bulette]]s can be bred and trained. Even with the Mark of Handling, this is dangerous work; there's a lot of turnover at the bulette ranch. But these exotic creatures aren't enough to satisfy the most innovative members of the house, leading to the practice of magebreeding. Using [[dragonshard]] focus items, Vadalis has found ways to create magical creatures. Typically, this results in a superior version of a creature—an animal that is stronger,
faster, and smarter. But rumors claim that Vadalis has
crafted monsters of its own. Some rumors even insist
that Vadalis is trying to magebreed better humans. 

!! History of House {{!!title}}

[]

!!! The Last War

[]

!! Guilds and Organizations

[]
To use this ring's effect, you must have the [[Mark of Handling]].

While wearing this ring, you can expend some of its stored magical power to comprehend and verbally communicate with beasts for 5-15 minutes. You can also expend a charge to gain advantage on a Persuade roll against the beast. The ring can be used 2-5 times per day before its power is expended and must recharge overnight.
//Individuality is a curse. Every day, it fills you with disappointment and doubt. But within the Hive, you will always know your place, always know your purpose. Join us. Forget your past. Forget your pain. And help us build a better world.//
<div align="right">—A cultist of Valaara</div>

The Crawling Queen works its will on insects,
arachnids, and other vermin. Swarms with malign sentience, worms that consume victims from within, cultists that slowly become insects—all of these delight Valaara. 

Valaara's verminous children are all around us, listening in the walls and consuming our dead. While it creates new and deadly forms of insects and arachnids (such as the [[carrion crawler]], Valaara also experiments with insect consciousness, spreading the mind
of a [[humanoid]] across multiple bodies. Victims of Valaara's delusions may believe that they are insects transformed into human form, or that they are being controlled or consumed by parasites.

''//Cults of Valaara.//'' Valaara's most widespread cult calls itself the Hive;
members of this sect surrender their individuality to serve
the collective, with mammals acting as if they're insects. The
question when dealing with the Hive is whether it's solely a
delusion and the victims can be saved, or whether the cultists
truly have been consumed from within by Valaara's children,
and are simply wearing human shells.

Beyond the Hive, Valaara's cults invariably interact with
insects in some way. Some believe they are receiving divine
messages hidden in the buzzing of insects. Others cultivate
massive hives of telepathic insects or create charnel pits as
a breeding ground for maggots.

Cultists of Valaara may wield [[symbiont]]s such as [[throwing scarab]]s and [[spellburrow]]s.

Valaara has no established domain, but its cults often spring
up in the sewers and middens of major cities. It prospers in
places where insects and humans both thrive. Despite their
shared affinity for vermin, the [[Children of Winter]] [[druid]]s
despise Valaara and its cults; they seek to preserve the natural
order, whereas Valaara's creations are anything but natural.
A widespread [[cult of the Dragon Below|Cults of the Dragon Below]] can be found across the west coast of [[Khorvaire]], from the [[Shadow Marches]] to the [[Demon Wastes]]. Cultists believe that there is a paradise within [[Khyber]]: the Vale of the Inner Sun, a place free from suffering and death. To earn passage to the Vale, a champion must defeat a host of worthy foes, dedicating their souls to the "Gatekeeper" (not to be confused with [[Gatekeeper druids|Gatekeepers]]. Cults vary on the criteria for “worthy foe”—while some cultists are serial killers, others only consider monsters or evildoers as qualifying for their passage.

The Vale of the Inner Sun does exist, and it has the //Stillness of Flesh// property of [[Risia]] and the //Light of Life// property of [[Irian]]. However, there is a price to this immortality; creatures who dwell in the Vale for an extended time become slowly mutated,
eventually turning into unique [[aberration]]s. The inhabitants of
the Vale—some of whom have been there for centuries—have
no love of outsiders, and visitors must prove their worth to
bathe in the prismatic light of the Inner Sun.

''Capital:'' [[Taer Valaestas]]<br/>
''Hallmarks:'' Elves, horses, mercenaries 

In the midst of the [[Last War]], an army of [[Tairnadal]] warrior [[elves|elf]] from [[Aerenal]] seized this region from [[Cyre]],
invoking a claim to the land from long before [[humanity|human]]'s
arrival on the continent. The elves of Valenar devote
themselves to the arts of war. Their cavalry has no equal
in [[Khorvaire]], and they combine a talent for magic with
stealth and swordplay. Cyre employed the Valenar as
mercenaries until the elves betrayed Cyre and took a
corner of the nation for themselves. These lands escaped the destruction visited upon the rest of [[Cyre]]. After
the [[Mourning]], no one wanted to challenge the Valenar's
claim to the land they had taken; in the interests of
peace, the [[Treaty of Thronehold]] recognized the new elf
kingdom of Valenar.

Valenar [[elves|elf]] spend little time at rest, operating in
small units called warbands. Those who aren't patrolling the kingdom travel abroad seeking adventure.
[[Half-elves|half-elf]] handle the civic administration. Some of
these are the children of Valenar elves, but most are immigrants who've come from elsewhere in [[Khorvaire]] in
search of opportunity. Cyran [[human]]s still occupying the
region fall below them in rank. Once citizens of [[Cyre]],
now they're citizens of Valenar. Little has changed for
the commoners, most of whom don't care who wears
the crown.

The harsh sands of the [[Blade Desert]] cover northern
Valenar and serve as a natural barrier between this land
and the rest of [[Khorvaire]]. Beyond the desert, Valenar
transitions from rolling steppes to fertile plains. The
desert can be deadly, but the Valenar elves pose the
greatest risk for adventurers. The elves won't interfere
with peaceful caravans, but a well-armed group of travelers invites challenges. 

!! Interesting Things About {{!!article}}{{!!title}}

* The [[dragonmarked|dragonmarked house]] House [[Lyrandar]] helped the Valenar [[elves|elf]] build the infrastructure of their kingdom. The [[half-elves|half-elf]] have no homeland, but House Lyrandar hopes to make Valenar a haven for its people.
* The ancestors of the elves fought [[goblin]]s for control of this region many thousands of years ago. Relics of that struggle are still scattered across Valenar and the [[Blade Desert]]: ruins, haunted fortresses, and battlefields that have slipped out of alignment with time.
* Valenar warbands include [[druid]]s and rangers, and druidic magic bolsters the military arsenal of the elves. Walls of thorns surround elven fortresses, and beasts fight alongside the elves. [[Valenar horses|Valenar beast]] are known for being as fearless and stubborn as the elves who ride them. 

!! Valenar Characters

When creating a Valenar character or NPC, consider the following:

* ''Martial Role.'' Valenar was forged in war. As an [[elf]], consider your role in a warband. Are you a simple soldier, an acolyte devoted to the elven ancestors, or a sage familiar with your Valenar history? As a [[half-elf]], you might be an entertainer, a sailor, or a guild artisan working to support the elf army, or you might be a charlatan seeking opportunities. As a [[human]] from Valenar, you could be an urchin born in [[Taer Valaestas]], or a folk hero fighting for the common people.
* ''Dreams.'' Have you left Valenar behind, or are your aspirations tied to the new kingdom? As a [[half-elf]] with Valenar blood, do you want to be recognized as a true Valenar—granted a bond to a [[patron ancestor|Spirits of the Past]] and a chance at immortality—or are you more interested in building a homeland for your people? As a [[human]] whose land the elves reclaimed, do you want to work with the elves or do you want to drive them out—and if so, who do you want to replace them?
* ''Animal Companions.'' Feytouched beasts play an important role in Valenar society. The Valenar are known for their steeds, but a wide range of [[Valenar beast]]s bond with non-elves. As a starting character, you might not have established a connection to a Valenar beast. If you return to Valenar later in your adventuring career, perhaps you will find your bondmate. 

!! Cities and Sites

Most of the communities of Valenar consist of farming villages, with fortress towers scattered across the plains as military outposts. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

There's a popular saying in [[Taer Valaestas]]: "The
shadow of war hangs long over Valenar." War defines
Valenar culture. The [[Treaty of Thronehold]] recognized
Valenar as a sovereign nation, but the elves are already
pushing the limits of the treaty. Some venture into the
[[Mournland]] or the untamed jungles of [[Q'barra]], and Valenar warbands have launched raids into [[Darguun]] and
[[Karrnath]]. High King [[Shaeras Vadallia]] has promised to
rein in his warriors, but many believe that the elves will
continue their provocation. Their main interest is conflict with a worthy foe—and they might want Darguun or Karrnath to declare war.

Because of this, the nation remains on a war footing. Villages find it challenging to produce the supplies required to maintain the elf army. Still, the Valenar are rarely cruel overlords. As long as a village can meet its
quotas, the elves leave it alone, though villages that fall
below expectations are more likely to receive assistance
from [[druid]]ic advisors than punishment. 
The [[elves|Tairnadal]] of [[Valenar]] say that when their ancestors fought the [[giant]]s of [[Xen'drik]], elf [[druid]]s took the forms of animals on the battlefield. The cruel and mighty Emperor [[Cul'sir]] of the giants laid a curse upon the druids and trapped them in the forms of animals. Just as the ancestors of the Valenar guide their warriors in battle, the spirits of these druids can awaken power in an animal to create a companion worthy of a champion.

Valenar beasts are awakened to advanced intelligence and power by the touch of an ancestral spirit. Traditionally, Valenar animals choose Valenar elves as companions, reflecting a bond between the ancestors of elf and animal. To be chosen by a Valenar beast is a great honor, and any such elf is treated with respect and reverence. Still, on the rare occasions when a Valenar animal chooses an adventurer of a different ancestry as a companion, it is universally accepted.

The Valenar horse is the most commonly known example, but the ancestral spirits can take on many animal—hawk, hound, or others.
''District Type:'' Average residential <br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses ring the towers of this quiet district. Children play in the streets, couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Myshan Gardens]] (northeast); [[Granite Halls]] (south); [[Ashblack]] (below); [[Dava Gate]] (above)

Vallia Towers is very similar to [[Myshan Gardens]]. Its population includes an unusually high concentration of [[half-elves|half-elf]], but otherwise features the same hodgepodge of artists, revolutionaries, and nonconformists.
All but unknown in the [[Five Nations]], the Valraea
are a [[line|Aereni noble line]] of [[sea elves|sea elf]]. Their ancestors were magebred and
charged to guard and govern the coastline of [[Aerenal]]. While
rare, Valraea can be encountered in any of the port cities of
Aerenal and are represented in the [[Undying Court]].  Valraea typically dress in leather and are comfortable with casual nudity; they fashion masks from shell and bone. 
Awakened to an endless night, vampires hunger for the life they have lost and sate that hunger by drinking the blood of the living. Vampires abhor sunlight, for its touch burns them. They never cast shadows or reflections, and any vampire wishing to move unnoticed among the living keeps to the darkness and far from reflective surfaces.

Most of a vampire's victims become //vampire spawn//—ravenous creatures ([[tier 2|creature tier]]) with a vampire's hunger for blood, but under the control of the vampire that created them. If a true vampire allows a spawn to draw blood from its own body, the spawn transforms into a true vampire no longer under its master's control. Few vampires are willing to relinquish their control in this manner. Vampire spawn become free-willed when their creator dies.
{{Towers of Aundair}}
By far the largest city in the Reaches (population: 40,000) serves as the gateway
for commerce with the world beyond. Reacher merchants come from far and wide to sell their goods in the markets of Varna. All the [[dragonmarked house]]s have
outposts in Varna, but as the ancestral seat of House
[[Vadalis]] it houses their largest [[enclave]]. Varna has also become home to the excesses of all larger centers, particularly a thriving black market where
poachers and trappers smuggle rare plants and animals into [[Aundair]] and beyond.

A notable feature of the
city is Hunter’s Grove, an enormous temple dedicated
to the Sovereign Lord [[Balinor]], the patron deity of
House [[Vadalis]]. 
Varuz Bay lies off the coast of [[Adar]] and the [[Corvagura]] province of [[Riedra]]. It is part of the [[Barren Sea]].
The town of
Vathirond, situated on the southern banks of the [[Brey River]], serves as a watch-post and trading center. It sits
across the border from the nation of [[Thrane]], and near
the line that once separated [[Breland]] from [[Cyre]]. 

Throughout the [[Last War]], this town was beset by armies
from [[Thrane]], [[Cyre]], and [[Karrnath]]. Vathirond's residents
still hold grudges against these close foreign neighbors.
However, their attention of late has been focused on the
[[Mournland]]. Nameless horrors have begun to slip into
[[Breland]] from the east at an alarming rate, and Brelish
soldiers and adventurers stationed in Vathirond are usually the first to contend with these threats. 

The [[Brey River]] provides the main transportation
into and out of Vathirond, though an [[Orien]] trade road
connects the town with [[Starilaskur]] to the west. The
eastern end of the road stretches into the [[Mournland]],
disappearing beyond the mist as though beckoning travelers to visit the ruins and wreckage of [[Cyre]]. While the
mist has not moved any closer since the [[Mourning]], the presence of the dead nation eats away
at the inhabitants of Vathirond. The town has lost more
than a quarter of its population to disease, rampaging
horrors, or because the people have fled to find safer,
less desolate ground elsewhere in the kingdom. Since the
death of Cyre and the birth of the Mournland, Vathirond’s population has dwindled from more than twenty thousand to its present level of just over fifteen thousand.
King [[Boranel|Boranel ir'Wynarn]] sees this development as a trend he must
find a way to change before this strategic location turns
into a ghost town.
The Royal Treasury of [[Galifar]], located in [[Metrol]], [[Cyre]], was commonly known as the Vault. While there were reserves hidden around the kingdom,
the Vault included both the mint, Cyre’s primary reserves
of currencies and precious metals, and important cultural
artifacts deemed too valuable to be displayed. Salvagers have
dreamed of finding this “Golden Palace,” but there are some
stories saying that the Vault no longer remains where it was
built, but is actually missing. The [[Mourning]] had strange effects
on Metrol, and it’s possible the Vault was simply physically
displaced, or it could have fallen into another [[plane]].
The heart of [[Dolurrh]] is the Vault of Memories. This tower,
carved up through gray stone, is larger than any of the great
towers of [[Sharn]]. The lowest levels hold the Vault's library;
here, the spirit known as the Librarian interviews each
shade and makes a record of its life. His power is such that
an entire life can be confined to a single large page. Every
sigil inscribed holds a crucial memory, and if a creature is
proficient in arcana, they can read the symbol to experience
that memory. The many floors of the library hold countless
books of preserved lives, carefully tended by [[shadar-kai]]
scribes. The Librarian himself is a massive hooded figure—his books are likewise enormous. It's said that he can be many places at once, allowing him to speak to every shade, capturing the story of its life, before it fades.

In the halls above the library, the [[Queen of the Dead]] keeps
her many treasures. What seem to be obsidian statues are
actually [[shade]]s, crystallized to prevent them from being
entrapped and lost in Dolurrh. Paintings and crystals contain
memories that the Queen has chosen to isolate. Beyond these
are countless trinkets and oddities, items collected by her
shadar-kai over the vast scope of history. And higher still are
the chambers of the Queen herself, where she usually sits in
silent contemplation, listening to the whispers of the countless
shades in her domain.
The lowest levels of the [[Kundarak Bank|Kundarak Bank of Sharn]] are known as the Vaults, and are almost a
separate business entity from the bank proper. House
[[Kundarak]] offers storage space for small- to medium-sized items of great value with the highest possible
security, at a cost of 3c per month (which includes
insurance against theft). These are for long-term
storage, not for short-term like the safe-deposit vaults, and thus can't
be collected magically from other sites.
Vedykar is a city in south-central [[Karrnath]]. The [[Vedykar Enclave]] is the headquarters of House [[Jorasco]].
<<list-links-article "[tag{!!title}sort[title]]">>
This is a studio for [[Aereni|Aerenal]] body
art, including traditional tattoos, [[cosmetic transmutation]], and the [[elven|elf]]
techniques that give the living the appearance of
death. Depending on the purse and the desires of
the client, the effects of either procedure can be
permanent or temporary. 
This luxurious inn specializes in fulfilling fantasies. While companions of all races and
genders can be found here (though most are in fact [[changeling]]s), a client can enjoy
the company of anyone he or she desires. A portrait
is preferred, but the [[changeling]] Velvet can pluck images from the mind of a
client, drawing out appearance, mannerisms, and
other desired traits. The appearance of rooms can be
adjusted to fulfill a specific scenario. 

While companionship is certainly sold at Velvet's, it is not always what
people want. A client may want to practice a wedding
proposal. A barrister may go to Velvet's to relive a
glorious triumph in the courtroom. A lonely traveler
may want to spend one night at home with his wife and
family, even if they are only facsimiles. Velvet's can
make all of these happen. The cost of such elaborate
scenarios is considerably higher than a standard inn
or brothel, but Velvet's does provide an experience
that cannot be found anywhere else in [[Sharn]]. 
Ven ir'Kesslan was a duke of [[Cyre]] who founded the kingdom of [[New Galifar]] in [[Q'barra]] in 928 YK. He was the grandfather of King [[Sebastes ir'Kesslan]] who rules New Galifar today.

The [[Last War]] shattered the existing order in [[Galifar]], setting the [[human]] nations
of [[Khorvaire]] against each other. However, a good number of [[Galifar]] nationalists refused to embrace what they saw as the petty grasping for power of royal scions. Rather than join in the conflict, these patriots sought refuge outside their broken kingdom.

One such idealist was Duke Ven ir’Kesslan, who petitioned his monarch—King Connos of [[Cyre]]—to grant him the right to settle the lands east of the [[Endworld Mountains]]. In the territory the [[Lhazaar|Lhazaar Principalities]] corsairs called “cursed [[Q'barra]],” he would found a new kingdom based on the ideals of fallen Galifar.

Under the watch of the Cyran military, ir’Kesslan and thousands of like-minded folk set out in a colonial fleet. Though a third of his ships were lost to pirates, war, and weather, those colonists who made landfall did so near [[Adder Bay]], founding a settlement
at what is now [[Adderport]].

As they tried to raise their new home within the jungle, the settlers inadvertently disturbed numerous sites holy to the native [[lizardfolk]], [[dragonborn]], and [[kobold]]s. Such actions sparked intermittent hostilities that the settlers typically won. The dragonborn pressed the colonists hardest, but through diplomacy, ir’Kesslan managed to secure a tenuous peace.
This city-state in the west of [[Droaam]], hidden by powerful illusions, is ruled by families of [[tiefling]] [[warlock]]s and [[wizard]]s who wield powerful magic and craft dark wonders. These Venom Lords are led by Lord Bal Molesh. The fiefdom has had no significant contact with the [[Five Nations]] and few know it exists.

The tiefling and [[human]] inhabitants of the Venomous Demesne descend from [[Sarlona]]n mages who bargained with dark powers. With the fall of [[Ohr Kaluun]], the refugees founded this sanctuary in what is now Droaam, and its four ruling families possess great knowledge and vast arcane power. 

While the demesne's nobles are tieflings, humans are a significant part of the population, and Demesne humans can be found serving as [[magewright]]s in other cities. The humans of the Venomous Demesne have little in common with the people of the East and feel no kinship to the Five Nations.
Seven spires rise up from [[Metrol]], a natural (or supernatural)
wonder. These plateaus held the ancestral homes of the noble
lines of old Metrol with the Royal Vermishard, the seat of the [[Cyran|Cyre]]
crown. However, over centuries, other powers—such as House
[[Cannith]] and House [[Phiarlan]]—made their way to the Vermishards
as well. Cannith and Phiarlan worked together with Cyran
[[magewright]]s to embed illusory lighting into the Vermishards, their
glittering spires becoming a remarkable part of the Metrol skyline. The finest warriors of [[Galifar]] served in the Vermishard Guard; after the onset of the [[Last War]], these soldiers formed the core of [[Cyre]]'s new military academy.

The Vermishards, and the rest of [[Cyre]], have lain in ruin since the [[Mourning]]. Today, they are inhabited by the self-styled ruler of the ruins of Metrol, "Empress" [[Donata]].
When you grasp this walking cane and speak the command word, it transforms into an ordinary longsword and ceases to be magical.
The Vigilant Eye is a cult devoted to [[Belashyrra]], which they call the All-Seer. Cult members develop an alien eye on the palm of their non-dominant hand.
When they view the world through this eye, members can see “secrets” about the world around them that feel true—such as seeing certain people are possessed by [[demon]]s or about to commit murder. Members take vigilante action to eliminate the threats “revealed” by their eyes. This cult often takes root in House [[Deneith]] [[enclave]]s or city watch units.
The Vile Marsh is a large region of wetland in eastern [[Shadow Marches]] and western [[Droaam]], stretching from [[Blackwater Lake]] to the [[Azure Bay]].
This incredibly light armor is woven from layers and layers of moss and plant fiber. In the sun, the armor grows lush with greenery and flowers, granting the user a higher defense bonus. In darkness, the armor wilts slightly.

This armor must be watered on a weekly basis.
Virtues are a higher order of [[Syrania]]n [[angel]], with names and broad
[[domain|Syranian domain]]s—//Hazari, Virtue of Nature.// They act as assistants and
emissaries of the [[dominion]]s. Virtues spend much of their time
contemplating their domain, but they also gather information
for their dominions—either by fetching existing records
within Syrania, talking with creatures who visit the plane,
or by venturing beyond Syrania and discretely observing. A
dominion is always aware of everything that happens to its
virtues and immediately knows all information they collect.
Virtues typically have power equal to [[deva]]s, and they
change their forms to conceal their presence while gathering
intelligence. They can commune with their dominion to answer questions tied to their domain, and can cast [[plane shift]] once per day, but only when acting in
the direct service of a dominion. 
You point at a location within 150 feet, and a glowing 1-foot-diameter ball of emerald acid streaks there and explodes in a 20-foot-radius sphere. Each creature in that area is drenched in acid.
The [[line|Aereni noble line]] of Vol was a noble line of [[Aerenal]] with a long tradition of [[necromancy]] tracing its roots back to the [[Qabalrin]] of ancient [[Xen'drik]]. When members of the line of Vol developed the [[dragonmark]] known as the [[Mark of Death]], they undertook a risky series of experiments designed to unlock its full powers, fusing [[elf]] with [[dragon]] imbued with the power of [[Mabar]]. 

When this knowledge was revealed, the [[Sibling Kings]] proclaimed that the house would be exterminated to the
last member, because a single drop of its blood could
destroy all living things. In an unprecedented alliance, the [[Undying Court]] and the [[dragon]]s of [[Argonnessen]] joined forces to eradicate the bloodlines that carried the [[Mark of Death]]. 

The war was bitter, but its result was never in
doubt. The line of Vol was utterly exterminated. Confirmed by repeated [[divination]]s, no living members of the line of Vol and no living bearers of the [[Mark of Death]] persist to this day. However, [[Lady Illmarrow]] isn't //technically// living...

In the aftermath of this brutal purge, those [[elves|elf]] who had supported Vol but didn't bear its blood were given the choice of exile or swearing fealty to the [[Sibling Kings]] of [[Aerenal]]. Even those who hadn't supported Vol chose to flee; some of
those who bore the [[Mark of Shadow]] feared that they would be next in this pogrom, while others believed that the spilling of elf blood by elf hands tainted [[Aerenal]]. This resulted in a wave of exiled elves settling in the [[Lhazaar Principalities]] and spreading west into the lands that are now [[Karrnath]]. They brought with them beliefs and practices that would merge with local [[human]] traditions and give birth to the religion known as the [[Blood of Vol]].

Most assume that the elves feared the power of the
[[Mark of Death]]. But a close study of the records challenges this assumption. If the mark was so deadly, how was the house defeated? In fact, elf and dragon
didn’t fear what the line of Vol was; they were afraid
of what it might become. In the mingling of elf and
dragon, there was the potential to create something
new—a being who could become the avatar of death
itself.
This small carved stone is typically bound to a leather strap worn
around the wrist or neck. Designed by the [[Dhakaan|Heirs of Dhakaan]]i [[dirge singer]]s,
the vola'khesh facilitates communication between elite units.
They are created in linked sets; up to ten stones can be bound
together, and once established, this link cannot be changed.
At present, the vola'khesh are only used by the [[Kech Dhakaan|Heirs of Dhakaan]]
and are unknown to the people of the [[Five Nations]]. If the
enchantments were replicated, these tools could be put into use
by spies and law enforcement agencies of the Five Nations.

While wearing a vola'khesh, you can whisper a message that is heard by all creatures
within 120 feet wearing a linked vola'khesh. Magical silence,
1 foot of stone, 1 inch of common metal, or 3 feet of wood will
block this effect, but the magic doesn't have to follow a straight
line and can travel freely around corners or through openings.
Volaar Draal, the stronghold of the [[Kech Volaar]] clan, is hidden deep
beneath the peaks and crags of the [[Seawall Mountains]]. The Kech Volaar include the best masons and combat engineers in [[Khorvaire]]. Blunt and functional where it stands carved into the mountainside, this [[Dhakaani|Heirs of Dhakaan]] fortress is said to be impregnable—a claim that has been put to the test on numerous
occasions.

Foreigners are allowed to enter Volaar Draal only when invited by a trusted member of the Kech Volaar. The subterranean citadel is a grim place,
filled with troops undertaking combat drills and the
echoing songs of the [[duur'kala|dirge singer]]. Its vast underhalls contain
fungus fields that produce food for the city, forges for
armorers, libraries and vaults to house the relics of the
[[empire|Dhakaan]], and a great cavern in which Kech Volaar troops
perform battle drills.

Volaar Draal is a primary source for Dhakaani arms and armor, and its
vaults hold thousands of scrolls and tomes detailing
the [[Age of Monsters]], as well as artifacts from the war
against the [[daelkyr]].
This city is [[Droaam]]'s only port, located near the mouth of the [[Scar River]] on the shores of [[Manta Bay]]. It is part of the fiefdom of the [[fire giant]] [[warlord]] [[Gorodan Ashlord]].

Gorodan allows anyone to
make port in Vralkek as long as the proper fees are
paid. To protect commerce and travel, the fire giant
keeps strict laws enforced by his [[goblin]] and [[ogre]] militia. These laws favor the wealthy, the powerful, and those creatures that are willing to pay the steep trade taxes that Gorodan levies. Vralkek’s semblance of order is not sufficient to conceal the wickedness that thrives there, from black markets to the temples of malevolent gods.

The strong and well connected prosper in Vralkek,
but only as long as their goals support the Ashlord’s.
[[Gorodan|Gorodan Ashlord]] has no love for the [[Daughters of Sora Kell]] or their other [[warlord]]s, and he works against them if doing so furthers his own ends.
Vulpana Falls is a river in [[Sarlona]] that forms part of the border between [[Riedra]] and [[Adar]]. It empties into [[Varuz Bay]].
! The Warder

''Color:'' Pockmarked steel gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Warding|Mark of Warding]]<br/>
''Associated Plane:'' [[Shavarath]]

Vult is the farthest [[moon]] from Eberron, and some legends say that it holds back forces that lurk out within the stars. The [[druid]]s say that children of Vult are practical, careful folk who generally plan ahead and prepare for the worst; when disaster strikes, the children of Vult hold civilization together. In his study of the [[Seren]]s, the sage Galeoin reported that the barbarians believe that Vult "devours" the spirits of deceased great wyrms that fail to attain godhood.
Vulyar is a large town in [[Karrnath]], on the [[lightning rail]] line beween [[Vedykar]] and [[Irontown]]. It has a large [[Cannith]] East [[enclave]].
[[Vundry]] runs a shop in the [[Bazaar]] of [[Dura]]. On the surface,
appears to be a pawnshop and curio store. Behind
this façade, Vundry is one of the most reliable and
well-connected fences in Sharn. When dealing with
a friend (especially [[gnome]]s and allies of the [[Boromar Clan]]), Vundry can turn up almost any item within a week (within her 5000 crown limit).

Normally, Vundry buys any legal item for 45%
of its value, up to a limit of 2000c. Her shop is
full of odds and ends of all sorts—pottery shards
from [[Xen'drik]], a masterwork broadsword, a [[Riedran|Riedra]]
spice rack. For her friends, Vundry raises her limit
to 6000c and pays 55% of the value of items that
she buys. Vundry also fences illegal goods, charging
20% of the value of the item. She usually drops this
fee by 1% every subsequent time she does business
with the same character, to a minimum of 10%. It can
be expensive establishing credentials with Vundry,
but over time it is worth the expense. 
The [[black dragon]] [[Vvaraak]] is said to have taught the
secrets of [[druidic magic|primal magic]] to the first [[Gatekeepers]] thousands of years ago. Though Vvaraak is long dead, rumors say that her hidden lair holds secrets tied to the
[[Draconic Prophecy]] and the mysteries of druidic magic. 
You create a wall of fire on a solid surface within 120 feet. You can make the wall up to 60 feet long, 20 feet high, and 1 foot thick, or a ringed wall up to 20 feet in diameter, 20 feet high, and 1 foot thick. The wall is opaque and lasts for the up to 1 minute, or until your concentration is broken.

When the wall appears, each creature within its area is scorched. 

One side of the wall, selected by you when you cast this spell, deals fire damage to each creature that stands within 10 feet of that side. A creature also suffers fire damage when it enters the wall. The other side of the wall deals no damage.
An invisible wall of force springs into existence at a point you choose within 120 feet. The wall appears in any orientation you choose, as a horizontal or vertical barrier or at an angle. It can be free floating or resting on a solid surface. You can form it into a hemispherical dome or a sphere with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-by-10-foot panels. Each panel must be contiguous with another panel. In any form, the wall is 1/4 inch thick. It lasts for up to 10 minutes, or until your concentration is broken. If the wall cuts through a creature's space when it appears, the creature is pushed to one side of the wall (your choice which side).

Nothing can physically pass through the wall. It is immune to all damage and can't be dispelled by [[dispel magic]]. A [[disintegrate]] spell destroys the wall instantly, however. The wall also extends into the space between planes, blocking teleportation through the wall.
You create a wall of ice on a solid surface within 120 feet. You can form it into a hemispherical dome or a sphere with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-square panels. Each panel must be contiguous with another panel. In any form, the wall is 1 foot thick and lasts for up to 10 minutes.

If the wall cuts through a creature's space when it appears, the creature within its area is pushed to one side of the wall and suffers significant cold damage.

The wall is an object that can be damaged and thus breached. Destroying a section of wall leaves behind a sheet of frigid air in the space the wall occupied. A creature moving through the sheet of frigid air suffers a blast of cold damage.
You create a wall of swirling sand on the ground at a point you can see within 90 feet. You can make the wall up to 30 feet long, 10 feet high, and 10 feet thick, and it vanishes when the spell ends up to 10 minutes later (or when your concentration is broken). It blocks line of sight but not movement. A creature is blinded while within the wall, and their walking speed is reduced to at least a third of their normal speed.
This ammunition packs a wallop. A creature hit by the ammunition must resist the explosion of force or be knocked prone.
If you are a spellcaster, you can cast [[hold]] while attuned to this wand. You also gain an additional spellcasting stress box.
This wand has 3 charges. While holding it, you can expend 1 of its charges and cause one object you can see within 30 feet of you to become the color of your choice. The object must be no larger than a 5-foot cube. This change lasts one hour.

The wand regains all expended charges daily at dawn. If you expend the wand's last charge,  the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] may result in the wand erupting in a harmless, multicolored flash and crumbling to ashes.
If you are a spellcaster, you can cast [[fireball]] while attuned to this wand. You also gain an additional spellcasting stress box.
If you are a spellcaster, you can cast [[lightning bolt]] while attuned to this wand. You also gain an additional spellcasting stress box.
You can cast [[magic missile]] while attuned to this wand, ''even if you aren't a spellcaster.''

If you are a spellcaster, you can cast magic missile as a [[rare-tier|spell tier]] [[spell]] (5-7 missiles).
If you are a spellcaster, you can cast [[polymorph]] while attuned to this wand. You also gain an additional spellcasting stress box.
While holding this wand, you can create a harmless burst of multicolored light at a point you can see up to 60 feet away. The burst of light is accompanied by a crackling noise that can be heard up to 300 feet away. The light is as bright as a torch flame but lasts only a second. You can do this seven times each day.
This wand has 3 charges. While holding it, you can expend 1 of its charges and target a [[humanoid]] you can see within 30 feet of you. The target must resist the magic or be forced to scowl for 1 minute.

The wand regains all expended charges daily at dawn. If you expend the wand's last charge,  the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] transforms the wand into a [[wand of smiles]].
This wand has 3 charges. While holding it, you can expend 1 of its charges and target a [[humanoid]] you can see within 30 feet of you. The target must resist the magic or be forced to smile for 1 minute.

The wand regains all expended charges daily at dawn. If you expend the wand's last charge,  the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] transforms the wand into a [[wand of scowls]].
This wand has 3 charges. While holding it, you can expend 1 of its charges and cause plants in a 30-foot radius, centered on yourself, to sway as if in the wind.

The wand regains all expended charges daily at dawn. If you expend the wand's last charge,  the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] may result in the wand crumbling to ashes.
This wand slightly enhances your offensive spells. In addition, your spells are not impeded when cast on a target taking partial cover.
If you are a spellcaster, you can cast [[web]] while attuned to this wand.
This wand looks and feels like an icicle.

You can cast [[ray of frost]] while attuned to this wand, ''even if you aren't a spellcaster.''

If you are a spellcaster, you can also cast [[ice storm]] using this wand.
A wand sheath clamps onto a [[warforged]]'s arm and allows them to retract or extend a wand in less than a second. While extended, the wand is usable by the warforged, but their hand remains free.
This disturbing [[daelkyr]]-made [[symbiont]] is a leathery tentacle
with one end terminating in a single bulbous eye, and the other
sporting a barb designed to burrow into flesh. When you attune
to the wandering eye, it burrows into one of your shoulders, then
rises up from it, studying the world and projecting insights into
your mind. The wandering eye may occasionally take an interest
in some random element of your current environment; in this
case, the DM may draw your attention to this object or person.

While the eye is uncovered, you gain the following benefits.

//''Third Eye.''// When you make an attempt to perceive or investigate using sight, gain an advantage.

//''Periscopic Vision.''// The eye can stretch up to 18 inches
and can be used to peer around corners or over cover. 

//''Always Vigilant.''// The eye remains watchful while you sleep. If the eye spots danger,
it sends you a mental alarm in the form of a nightmare that
immediately wakes you up.

If the eye is knocked unconscious, it will awake after an hour or two.
Aside from [[Gatherhold]], the Wandering Inn is House [[Ghallanda]]’s most significant
presence in the [[Talenta Plains]], providing entertainment and
shelter to any fortunate enough to cross its path. When
times are dark and travelers are weary, one can always
hope that the Wandering Inn is just beyond the horizon.

The Inn is a traveling fair and trading post that makes a regular circuit across the Plains, setting up its colorful stalls and tents
as a gathering place for halfling tribes in the area.
The caravans of the Wandering Inn provide a place of
refuge and healing for the nomadic tribes, and even
those [[halfling]]s who resent [[Ghallanda]]’s movement out
of the plains and into the wider world embrace the
spirit of fellowship that the Wandering Inn represents.
Magic evolves. When [[Galifar I|Galifar ir'Wynarn]] forged his [[kingdom|Galifar]], his [[wizard]]s
hadn't mastered [[fire bolt]] or [[ray of frost]]. The development of the
[[cantrip|spell]]—casual spells that can be used at will—took centuries,
as the [[Arcane Congress]] studied [[Aereni|Aerenal]] techniques and the
powers of [[sorcery|sorcerer]]. The soldiers of the united kingdom relied
on sword and bow. But as the [[Last War]] began, [[Aundair]] took
stock of its resources. Thanks to the presence of the Arcane Congress, Aundair led Galifar in mystical education. Assembling
the first regiment of arcane dragoons, Aundair developed the
[[war staff]] and [[battle rod]]. Over the course of the Last War, these
techniques spread across the [[Five Nations]] and beyond. Today
it's no surprise to see a tough [[inquisitive]] or a [[Sentinel Marshal|Sentinel Marshals]]
with a sword in one hand and a wand in the other. But no one
calls these people “arcane dragoons.” If you fight your battles
with [[fire bolt]] or [[sacred flame]], you're known as a “wandslinger.”

!! What is a Wandslinger?

At its simplest level, a wandslinger is any individual capable
of casting a destructive cantrip. Beyond that, it's about
how you present yourself to the world. If you know the [[fire bolt]]
cantrip, you could be a wandslinger. Do you
carry an arcane focus? If so, do you display it prominently? Do
you carry your [[wand of Fernian ash|imbued wood focus]] with pride, twirling it and
doing flame tricks? If so, you're a wandslinger. By contrast, if
you're a scholarly [[wizard]] who despises conflict and prefers
not to use an arcane focus, you're not a wandslinger, even
though you are just as capable at magical combat. As much
as anything, it's about attitude.

!! Example NPC Wandslingers

* ''Aundairian Dragoon.'' Cantrips known: [[force blast]], [[shocking grasp]]. Spells known: [[concussive burst]] (1/day).
* ''Brelish Firebrand.'' Cantrips known: [[fire bolt]], [[light]]. Spells known: [[burning hands]] (1/day).
* ''Cyran Phantasm.'' Cantrips known: [[force blast]], [[lesser illusion]]. Spells known: [[shield]] (1/day).
* ''Karrnathi Ghoul.'' Cantrips known: [[chill touch]], [[poison spray]]. Spells known: [[cause fear]] (1/day).
* ''Thrane Beacon.'' Cantrips known: [[sacred flame]], [[spare the dying]]. Spells known: [[guiding bolt]] (1/day).
The War of the Mark, a terrible and bloody conflict,
changed the face of [[Khorvaire]], firmly establishing the
[[dragonmarked families|dragonmarked house]] that hold power to this day. The
war began about five hundred years before the establishment of [[Galifar]], when the dragonmarked houses launched a sort of inquisition to put an end to the proliferation of
[[aberrant dragonmark]]s. The houses had the advantage
of greater numbers, but the aberrant marks of the time
carried tremendous destructive power.

In the third year of the war, Lord [[Halas Tarkanan]] began
organizing his aberrant kindred into a proper military force
to oppose the dragonmarked houses. Tarkanan, known as
“The Earthshaker,” carried an [[aberrant mark|aberrant dragonmark]] that gave him
great influence over the elemental forces of earth and fire,
but his strategic brilliance was even more important to the
course of the war. His consort was an enigmatic woman
called the [[Lady of the Plague]]. Though she is commonly seen
as a monster, the records of the war suggest that she was
loath to use her power unless forced to, and might even
have despised the aberrant mark she carried.

Though Tarkanan's efforts extended the conflict, the
aberrants fell in the end. Tarkanan himself was trapped
in the siege of [[Sharn]], which he had made his stronghold
and base of operations. When it became clear that he and
his followers were doomed, he and the [[Lady of the Plague]]
unleashed the full power of their marks—power sufficient
to destroy the city. Terrible quakes caused parts of the
city to collapse, and rivers of lava flowed up from the fiery
lake deep below. Swarms of vermin and deadly plagues
ravaged the invaders and defenders alike. Some claim that
the Lady of the Plague's death-curse still lingers in the depths
of [[Old Sharn]].

The War of the Mark ultimately solidified the position
of the [[dragonmarked house]]s in [[Khorvaire]], and it laid the
foundation for the prominent place of both House [[Cannith]]
and House [[Deneith]], which played central roles in the war.
It led to the foundation of the [[Twelve]] as an avenue for the
houses to cooperate toward common aims.
This massive silver kite shield emits a powerful divine aura that repels all [[Mabar]]an [[undead]] that draw near.
[[Aundair]] developed the //war staff// to help [[wandslinger]]s match the range of [[Thranish|Thrane]] archers, but it quickly spread across [[Khorvaire]]. This spellcasting focus enables the wielder to cast cantrips at up to four times the normal range.

See also [[battle rod]].
This House [[Deneith]] prison was used
during the height of the kingdom of [[Galifar]] to contain
some of the worst criminals given over to the care of the
[[Defenders Guild]]. Converted into a fortress during the
[[Last War]], the place was used by the [[Cyran|Cyre]] army up until
the [[Darguun]] revolt. The keep, still largely intact, became
a tomb for the Cyran forces when [[Haruuc|Haruuc Shaarat'kor]] and his forces
laid siege to the place. The Cyrans refused to surrender or
flee, and so were surrounded and cut off from supplies and
outside aid. The two thousand troops died slowly of starvation and growing illness as Haruuc simply ordered his
troops to watch and wait. Today, the [[goblinoid]]s shun the
keep, believing it to be haunted by the last Cyran troops to
fill its ancient battlements.
''District Type:'' Garrison<br/>
''Buildings:'' Garrison building, temple ([[Dol Dorn]]),
average lodging (20), poor lodging (4), upscale
food (8), average food (15), poor food (15), upscale
trades (15), average trades (33), poor trades (28),
average services (40), average residences (160), poor
residences (40)<br/>
''First Impression:'' Some guards of the Watch march
to and fro in groups, while others stand at attention,
and still others drill for combat. Shouted commands
and marching songs fill the air.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Everbright]] (southeast); [[Cassan Bridge]] (south); [[Rattlestone]] (bridge, southwest); [[Stormhold]] (bridge, northwest); [[Dragon Towers]] (bridge, north); [[Forgelight Towers]] (below); [[Ivy Towers]] (above)

Warden Towers is the home of [[Menthis Plateau]]'s
Watch garrison, which includes 450 guards responsible for keeping order in the whole plateau. It also
houses a small community of [[Lhazaar|Lhazaar Principalities]] immigrants,
many of whom have joined the [[Watch|Sharn Watch]]. This community also spills into [[Forgelight Towers]] and [[Downstairs]], both in [[Lower Menthis]]. 

!! Noteworthy Locations

* [[Thuranne d'Velderan's Investigative Services]]. An [[inquisitive]] agency specializing in criminal investigation.
* The [[Broken Anchor]]. A tavern catering to Lhazaar travelers.
//We, the Wardens of the Wood, protect all the children of Eberron, from the beasts of the wild to the people of the cities. We preserve the balance between nature and civilization and help each understand the other. //

The Wardens of the Wood believe that civilization has
a place in the world. As a warden, you help others understand nature, ensuring that they don't cause unintentional harm or stumble into danger. Wardens serve as
militia and mediators in the [[Eldeen Reaches]]. This is the
largest of the druidic sects and the most recognized. 
To use this brooch's effect, you must have the [[Mark of Warding]].

While wearing this brooch, you are more resistant to magical force (e.g. [[force blast]], [[concussive burst]]), and you are immune to damage from the [[magic missile]] spell.
[[Sharn]] is a vertical city, and elevation is an indicator of
status and wealth. Each quarter is roughly divided into
three levels, and the combination of quarter and level
defines a ward. Thus, wards have names such as [[Lower Dura]], [[Upper Central]], and [[Middle Menthis]].

Upper wards are the domain of the rich and powerful.
Here you'll find the finest goods and the most expensive
services. Only those who maintain a wealthy or aristocratic lifestyle can easily afford the prices for meals
and lodging, and adventurers who maintain a squalid or
wretched lifestyle might be treated with disdain (suffering disadvantage on Charisma checks).

Violence is rare in any of the upper wards, and the
[[Sharn Watch]] actively patrols these areas. Although
the guards here might be corrupt just as in a middle or
lower ward, they're already being well paid by powerful
nobles and criminal organizations, and they work efficiently in the service of these forces.

Middle wards are home to the middle classes. Here
you'll find bustling markets and taverns, along with a
wide range of entertainment and housing. Most goods
and services are affordable by those of a modest or
comfortable lifestyle, with a few higher-priced options
tucked away. The Sharn Watch has a presence, but not
as strong as in the upper wards.

Lower wards house the hard-working laborers, along
with the destitute and the desperate, including refugees
who lost everything in the war and orphans who never
had anything to begin with. Services priced for a modest lifestyle can be found, but overall the lower wards are
home to those who have no better than a poor lifestyle;
a visitor who displays signs of a wealthy or aristocratic
lifestyle might attract unwanted attention. The watch
pays little attention to the lower districts, making them a
haven for criminals and gangs.

These are stereotypes that don't apply to all wards.
Dura is a particularly poor quarter, meaning that Upper Dura is effectively a middle ward in economic terms;
similarly, because Central Plateau is a hub of wealth
and power, Lower Central is effectively a middle ward.

Each ward is further subdivided into districts, which
are neighborhoods defined by an economic role, a separate culture, or both. For example, [[Lower Northedge]]
includes the districts of [[Stoneyard]], [[Longstairs]], and
[[North Market]]. It's generally true that the combination of
a district's ward and quarter will give you a broad idea
of what to expect there. A district in [[Upper Central]] will
typically be well kept and swarming with guards, while
a district in [[Lower Dura]] will be squalid and dangerous. 

!! Getting Around

Sharn is an enormous city, and traveling on foot from
one side of the city to the other can be time-consuming.
Here are some travel-time guidelines:

* It takes at least 30 minutes to cross a ward.
* If you're traveling between wards, add 30 minutes for each ward you pass through.
* [[Dura]] and [[Tavick's Landing]] are especially large; double the time it takes to move through one of them.

For instance, traveling from [[Lower Menthis]] to [[Upper Central]] involves passing through three wards (taking a bridge from Lower Menthis to [[Lower Central]], then
ascending two levels) and can take 90 minutes or longer.

Not all the quarters are linked to one another by
bridges. The connections that do exist include these:

* [[Central Plateau]] has bridges that lead to [[Northedge]] and [[Menthis|Menthis Plateau]].
* [[Dura]] is connected to [[Tavick's Landing]] and Menthis.
* Tavick's Landing is connected to Dura, Menthis, and [[Northedge]]. 
* Menthis is connected to Tavick's Landing, Dura, and Central.
* Northedge is connected to Central and Tavick's Landing.

Traveling from district to district involves the use of
bridges and ramps, along with magic lifts—vast floating
disks that slowly ascend and descend along threads of
mystical energy. Lifts are mainly used to move cargo
and can be up to 30 feet in diameter. Most lifts have rails
but aren't fully enclosed; if combatants fight on a lift,
someone falling or being pushed off the edge is always a
possibility.

<<<
Alternative walking travel time guideline: 15 minutes per district, including ones connected by bridge. 

Example: [[Clifftop]] to [[Deathsgate]]. 

:''Path 1:'' [[Clifftop]] → [[Hope's Peak]] → [[Redstone]] → [[Daggerwatch]] → [[Highhold]] → [[Sunrise]] → [[Ocean View]] → [[Dalan's Refuge]] →(down)→ [[Deathsgate]] (8 districts, 8*15=120 minutes)

:''Path 2:'' [[Clifftop]] → [[Hope's Peak]] → [[Redstone]] → [[Daggerwatch]] →(bridge)→ [[Ivy Towers]] → [[University District]] → [[Platinate]] →(bridge)→ [[Dalan's Refuge]] →(down)→ [[Deathsgate]] (8 districts, 8*15=120 minutes)

<<<

For a speedier journey through the streets, House [[Orien]] manages a system of carriages for hire. Taking an Orien carriage cuts travel time in half and costs a negligible fee (0.02c) per district. Flight is, of course, the fastest way to get around in Sharn, cutting travel time down to one-sixth of the walking pace (2.5 minutes per district). It's also more expensive, at 0.05c per district, and each mount can hold only one person, as opposed to four in a carriage (not including the driver). The most common form of aerial transport is the [[skycoach]], but many flying mounts, including [[hippogriff]]s, [[griffon]]s, [[glidewing]]s,
and [[giant owl]]s, can be found for hire around the city. 

!! Important Districts

|!&nbsp; |![[Central Plateau]] |![[Dura]] |![[Menthis Plateau]] |![[Northedge]] |![[Tavick's Landing]] |
|![[Upper|upper ward]] |[[Highest Towers]], [[Korranath]], [[Mithral Tower]], [[Platinum Heights]], [[Skysedge Park]] |[[Clifftop]], [[Daggerwatch]], [[Highhold]], [[Highwater]], [[Hope's Peak]], [[Overlook]] |[[Den'iyas]], [[Ivy Towers]], [[Seventh Tower]], [[University District]] |[[Crystal Bridge]], [[Oak Towers]], [[Shae Lias]] |[[Copper Arch]], [[Ocean View]], [[Silvergate]], [[Sunrise]], [[Twelve Pillars]] |
|![[Middle|middle ward]] |[[Ambassador Towers]], [[Dragon Towers]], [[Sovereign Towers]], [[Sword Point]], [[Tradefair]] |[[The Bazaar|Bazaar]], [[Broken Arch]], [[Hareth's Folly]], [[Rattlestone]], [[Stormhold]], [[Tumbledown]], [[Underlook]] |[[Cassan Bridge]], [[Everbright]], [[Little Plains]], [[Smoky Towers]], [[Warden Towers]] |[[High Hope]], [[Holdfast]] |[[Cornerstone]], [[Deathsgate]], [[Graystone]], [[Tavick's Market]] |
|![[Lower|lower ward]] |[[Boldrei's Hearth]], [[Olladra's Kitchen]] |[[Callestan]], [[Fallen]], [[Gate of Gold]], [[Malleon's Gate]], [[Oldkeep]], [[Precarious]], [[The Stores|Stores]] |[[Downstairs]], [[Firelight]], [[Torchfire]] |[[Longstairs]], [[North Market]], [[Stoneyard]] |[[Black Arch]], [[Cogsgate]], [[Dragoneyes]], [[High Walls]], [[Terminus]], [[Wroann's Gate]] |
|!The [[Cogs]] |[[Ashblack]], [[Blackbones]], [[Khyber's Gate]] |<|<|<|<|

Above the city: [[Skyway]]<br/>
[[Cliffside]] (on the banks of the [[Dagger|Dagger River]], bordering [[Dura]]): [[Grayflood]], [[Mud Caves]], [[Sharn's Welcome]], [[Ship's Towers]]

To see all locations in Sharn in a complete bulleted list, see [[Locations in Sharn]].

!! Dungeons of Sharn

[[Sharn]] boasts countless opportunities for adventurers.
You can get caught up in espionage in [[Upper Central]] or
drawn into a crime war in [[Lower Dura]]. Aside from the
intrigues and politics of the city, Sharn has a wide range
of cursed ruins, haunted slums, shunned catacombs,
and other dangerous places. Wise folk avoid these areas, but those whose hunger for adventure outweighs
their good sense might do the opposite. 

* The [[City of the Dead]]
* [[Old Sharn]]
* [[Fallen]]
* [[Khyber's Gate]]
* The [[Sewers|sewers]]
//"Pierce was built by design, while you were built by accident," Lakashtai said. "The soul is what matters, not the shape of the vessel."//

//"What makes you think he has a soul?" Gerrion said.//

//"What makes you think you do?"//

<div align="right">—Keith Baker, //The Shattered Land//</div>

The warforged are [[construct]]s built to fight in the [[Last War]]. While
the first warforged were mindless automatons, House
[[Cannith]] devoted vast resources to improving these steel
soldiers. An unexpected breakthrough produced sapient
soldiers, giving rise to what some have only grudgingly
accepted as a new species. Warforged are made from
wood and metal, but they can feel pain and emotion.
Built as weapons, they must now find a purpose beyond
war. A warforged can be a steadfast ally, a cold-hearted
killer, or a visionary in search of meaning. 

!! Living Steel and Stone

Warforged are formed from a blend of organic and inorganic materials. Root-like cords infused with alchemical
fluids serve as their muscles, wrapped around a framework of steel, darkwood, or stone. Armored plates form
a protective outer shell and reinforce joints. Warforged
share a common facial design, with a hinged jaw and
crystal eyes embedded beneath a reinforced brow ridge.
Beyond these common elements of warforged design,
the precise materials and build of a warforged vary
based on the purpose for which it was designed.

Although they were manufactured, warforged are
living [[humanoid]]s. Resting, healing magic, and medicinal skill all provide the same benefits to warforged that they do to other humanoids. 

!! Warforged Personality

The warforged were built to serve and to fight. For most
of their existence, warforged had a clearly defined function and were encouraged to focus purely on that role.
The [[Treaty of Thronehold]] gave them freedom, but many
still struggle both to find a place in the post-war world
and to relate to the creatures who created them.

The typical warforged shows little emotion. Many
warforged embrace a concrete purpose—such as
protecting allies, completing a contract, or exploring
a land—and embrace this task as they once did war.
However, there are warforged who delight in exploring
their feelings, their freedom, and their relationships
with others. Most warforged have no interest in religion, but some embrace faith and mysticism, seeking higher purpose and deeper meaning.

The typical warforged has a sexless body shape. Some warforged ignore the concept of gender entirely, while others adopt a gender identity.

The more a warforged develops its individuality, the more likely it is to modify its body, seeking out an [[artificer]] to customize the look of its face, limbs, and plating. 

!! Quirks

Warforged often display an odd personality trait or two,
given how new they are to the world. The table below contains example quirks. 

| !<<dr d8>> |!Warforged Quirk |
| 1 |You analyze—out loud—the potential threat posed by every creature you meet. |
| 2 |You often misread emotional cues. |
| 3 |You are fiercely protective of your friends. |
| 4 |You try to apply wartime discipline to every situation. |
| 5 |You don't know how to filter your feelings and are prone to dramatic emotional outbursts. |
| 6 |You don't understand clothing beyond its utility and assume it denotes a person's function. |
| 7 |You are obsessed with your appearance and constantly polish and buff yourself. |
| 8 |War is the only thing that makes sense to you, and you're always looking for a fight. |

!! Warforged Names

Most warforged were assigned numerical designations
for use in military service. Many of them adopted nicknames, often given to them by their comrades. As independent individuals, some have chosen new names as
a way to express their path in life. A few take on [[human]]
names, often the name of a fallen friend or mentor.

//''Warforged Names:''// Anchor, Banner, Bastion, Blade,
Blue, Bow, Cart, Church, Crunch, Crystal, Dagger,
Dent, Five, Glaive, Hammer, Iron, Lucky, Mace, Oak,
Onyx, Pants, Pierce, Red, Rod, Rusty, Scout, Seven,
Shield, Slash, Smith, Spike, Temple, Vault, Wall 

!! Warforged Traits

Most warforged are about the size of an athletic human, but weigh around 300 lbs. They can come in a variety of subtypes, including [[envoy]], [[skirmisher]], and [[juggernaut]].

Warforged were created to have
remarkable fortitude, granting them resistance to poison, immunity to disease, and no need to eat, drink, or breathe. Rather than sleeping, warforged spend at least six hours in an inactive, motionless state.
In this state, they appear inert, but they are not unconscious, and can see and hear as normal. 

A variety of [[magic item]]s have been designed to work exclusively for warforged, including [[docent]]s and [[armblade]]s.

A typical warforged is between two and thirty
years old. The maximum warforged lifespan remains
a mystery; so far, warforged have shown no signs of
deterioration due to age. 
In the final days of the [[Last War]], House [[Cannith]] unleashed its mightiest creations: the [[warforged]] colossi. These enormous mechanical warriors thundered across [[Cyre]], crushing everything in their paths and leaving ruin behind them. Meant to end the war decisively, the colossi pulverized hundreds of soldiers beneath their feet and incinerated whole legions with beams of fiery light that shot from their mouths. This rampage was cut short on the Day of [[Mourning]]. The arcane cataclysm that engulfed Cyre destroyed most of the warforged colossi, causing them to collapse into lifeless heaps.

//''Colossal Survivors.''// Some warforged colossi survived the Day of Mourning more or less intact and are thought to only be in stasis, waiting to be awakened. Cannith [[artificer]]s are eager to track them down and determine whether they can be awakened or, at the very least, salvaged for [[docent]]s and other magic items. Here are locations where operational warforged colossi are rumored to dwell:

* "Arkus" (Colossus WX-11) lies prone at the bottom of the [[Glowing Chasm]] in the northern part of the [[Mournland]], with one of its arms torn off.
* "Artorok" (Colossus WX-73) sits at the bottom of [[Lake Cyre]] amid the scaffolding of a sunken House [[Cannith]] workshop, flooded but otherwise intact.
* "Hanamar" (Colossus WX-42) stands at the bottom of [[Kraken Bay]], near the coast of [[Valenar]], buried up to its knees in sand and flooded, but it is otherwise intact.
* "Karrnslayer" (Colossus WX-31) lost its legs but crawls through the [[Mournland]], using its arms to drag its great bulk across the ground. 
* "Landro" (Colossus WX-33) is partially phased into a mountainside on the border of [[Cyre]] and [[Breland]], but still explorable and potentially salvageable.
* "Norr" (Colossus WX-5) is slumped amid the ruins of [[Metrol]], the former capital of Cyre.
* "Tymber" (Colossus WX-12) squats in the [[Crawling Swamp]], in the northwest corner of the [[Shadow Marches]]. How it got there, no one knows.

//''Hollow Structure.''// Although it can operate without a crew, a warforged colossus is built to carry [[wizard]]s, [[artificer]]s, [[magewright]]s, and elite troops. For this reason, these [[construct]]s are largely hollow on the inside, with tunnels, ladders, storage areas, and observation decks.

A colossus might be filled with monsters and secrets, in addition to the corpses of those who died inside it.
A warforged item is any [[magic item]] that can only be used by [[warforged]].

<<list-links-article "[tag{!!title}sort[title]]">>
Warforged titans are hulking bipedal [[construct]]s built to wreak paths of destruction through enemy armies. Some of the most feared combatants of the [[Last War]], warforged titans are barely sentient, with just enough intelligence to follow commands. They served as a technological precursor to [[warforged]], and were based on ancient designs created by [[giant]] [[artificer]]s during the [[Age of Giants]].

Throughout the Last War, [[Cyre]] poured gold into House
[[Cannith]]'s coffers, urging them to develop ever-deadlier
weapons. In 959 YK, Cannith presented Queen Dannel with
the first warforged titans. For a time, this gave Cyre an edge—
but as always, Cannith began selling these creations to other
nations, as well as selling [[blast disk]]s and [[siege staff]]s to those
who needed to fight titans.

During the Last War, the warforged titan served a number of
critical roles. The mere presence of an imposing titan provided
a defensive bulwark for infantry, as enemy infantry could rarely
afford to engage a titan without [[artillery|arcane artillery]] or magical support. Titans
are tireless, surprisingly swift, and capable of crossing almost
any terrain. They are also devastatingly effective against fortifications and siege engines.

A titan has two platforms in its chassis, each designed to hold one humanoid-sized or smaller creature. Typically, these platforms hold archers, providing the warforged
with some minimal ranged support to complement its powerful
melee attacks. However, specialized crew can dramatically
increase the capabilities of a titan: an [[evoker|evocation]] can provide strong
ranged attacks, while an [[abjurer|abjuration]] can stand ready to counter or
dispel enemy magic, and an onboard [[artificer]] can keep the titan
operational. Sending your titan against [[Karrnathi undead]]? An
exorcist can be a boon for dealing with [[undead]]. Alternatively,
a titan could simply serve as a battering ram, carrying two
spies or commandos ready to leap off and blend into an enemy
community as soon as the titan breaches a defensive wall.

Standard warforged titans do not have articulated hands at the ends of their arms, but rather gigantic embedded weapons (typically a hammer on one limb, an axe on the other). Some titans instead have a self-loading integrated ballista in place of one of their melee weapons. Late in the war, [[Cannith]] developed titans that had only one platform, with a [[long rod]] integrated in place of the other platform. Other titan variations and enhancements exist, such as elemental shielding.

!! Titan Consciousness

While called “[[warforged]],” the titans are quite different from the
truly living constructs that came after them. Titans have limited
sentience. They imprint on their commanders, and to a lesser
degree, on the uniforms of their allies. They can follow orders
and general instructions such as “protect allies” or “engage
enemies.” But as a rule, titans don't feel emotion, reflected by
the fact that they're immune to being charmed or frightened.
Today, most remaining titans are simply waiting in storage,
content to remain motionless until it's time to serve again.

Yet there are stories of titans who've developed full
consciousness. If the tales are true, this could be the result of
rogue [[artificer]]s (possibly cultists of the [[Traveler]] hidden within
House [[Cannith]]), or it could be a random spark of evolution—
suggesting that the potential for sentience lies within all titans.
Warlocks are seekers of the knowledge that lies
hidden in the fabric of the multiverse. Through pacts
made with mysterious beings of supernatural power,
warlocks unlock magical effects both subtle and
spectacular. Drawing on the ancient knowledge of
beings such as [[archfey]], [[overlord]]s, [[daelkyr]], the [[Undying Court]], or powerful [[immortal]] spirits from other [[plane]]s, warlocks piece together
arcane secrets to bolster their own power. 

The magic warlocks cast is considered [[arcane|arcane magic]], due to the predictable and orderly nature of a pact. However, the line is blurred when making a pact with a [[celestial]] or [[fiend]], which may add a dash of faith-based [[divine magic]] into their spellcasting; or making a pact with a [[quori]], which might be considered [[psionic|psionics]] in nature.
A decade removed from anarchy, [[Droaam]] now follows a form of despotic feudalism. The different
regions of the nation are dominated by warlords that
impose their rule over lesser creatures. Some reign by
sheer force; others, such as the charismatic [[Queen of Stone]], have a more subtle hand. All warlords owe
fealty to the [[Daughters of Sora Kell]] and provide the
[[hag]]s with tribute—either material goods or the services of troops and laborers.

Although the rule of the hags is ultimately based
on fear, the warlords recognize that the Daughters of
Sora Kell are shaping Droaam into a powerful nation.
As a result, it is rare for a warlord to challenge the
hags. However, between the lords themselves, feuds,
power struggles, and assassination are a part of day-to-day life.

See also [[Culture of Droaam]].

!! The Warlords of Droaam

<<list-links-article "[tag{!!title}sort[title]]">>
At first glance, this [[layer]] of [[Shavarath]] looks like the blasted land between the
trenches of [[Nullius Terram]]. It's home to a number of warring
cities, but they aren't static settlements. Rather, some are
floating fortresses that dwarf the [[Argonth]] of [[Breland]], and others
walk on two legs.
The Watching Wood is a forest in western [[Droaam]]. It is the prime hunting ground of the [[Dark Pack]], the band of [[lycanthrope]]s and [[worg]]s, and is also home to a variety of dark [[fey]]. The [[warlord]] [[Tzaryan Rrac]] claims the southern portion of this wood as part of his fiefdom.
The special forces of the
[[Harmonious Shield]] of [[Riedra]], most water soldiers are particularly skilled in stealth and perception, as well as the ability to move and react swiftly. A water soldier's
gear depends on
the soldier's specialties and the
assignment. Water
soldiers work independent of the other
units, in small squads.
Although they're occasionally sent into [[Adar]],
water soldiers are typically used in
strikes against dissident groups.
This pair of soldier's greaves are magically waterproof, allowing the user to wade through waist-high water without getting wet.
You conjure up a sphere of water with a 5-foot radius at a point you can see within 90 feet. The sphere can hover but no more than 10 feet off the ground. The sphere remains for the spell's duration of 1 minute, or until your concentration breaks.

Any creature in the sphere's space is either ejected from that space (especially if it is larger than the sphere) or is restrained by the sphere as it is engulfed by the water.

The sphere can restrain as many as four human-sized or smaller creatures. If the sphere restrains a creature that causes it to exceed this capacity, a random creature that was already restrained by the sphere gets ejected.

You can move the sphere as long as the spell is in effect. If it moves over a pit, a cliff, or other drop-off, it safely descends until it is hovering 10 feet above the ground. Any creature restrained by the sphere moves with it. You can ram the sphere into creatures and attempt to engulf them.

When the spell ends, the sphere falls to the ground and extinguishes all normal flames within 30 feet of it. Any creature restrained by the sphere is knocked prone in the space where it falls. The water then vanishes.
This wax seal is carved with arcane sigils and is often used by the Notaries Guild of House [[Sivis]]. When used to seal a letter, that letter cannot be opened by anyone but the
addressed recipient, as if you had cast the [[arcane lock]]
spell on it. 

Once you have used the seal, it can't be used
again until the next dawn. 
Probably the most central and unifying code of [[Tashana shifter culture|Culture of the Tashana shifters]], the Way of the Brothers is based on an
ancient myth. While the details of the myth vary from
nation to nation, and even from tribe to tribe, the essential story is always the same. Soon after the dawning of
creation, the first [[shifter]]s were tricked by [[demon]]s into
fighting one another in a devastating civil war. Three
great nations fought until the snows of the Tundra had
melted away from the heat of spilled shifter blood.

Gravely wounded and near death, a sole surviving
Warrior of the first nation walked the carnage of the
battlefield. He presently came to an ancient glacial slab
of rock, where a Shaman from the second nation lay
unconscious and dying. Exhausted and weary of death,
the Warrior put away his knife and instead cleaned and
dressed the wounds of his enemy.

To his surprise, the Shaman awoke the next morning
to find his wounds tended and a pack containing meat and
water lying nearby. The Shaman set off for the horizon and
came across another ancient rock. Upon the rock, an Elder
from the third nation lay dying. The Shaman wordlessly
tended to the Elder, and resumed his wandering.

The Elder in turn awoke to find meat and water laid
aside, and set off for the horizon. He too came upon a
glacial rock, upon which the Warrior of the first nation
had finally succumbed to cold and hunger. And so the
Elder tended to the Warrior.

Thus began the Great Healing of the Tribes. The
spell of the demons had been broken, and the shifters
of the [[Tashana Tundra]] lay down their spears and sheathed their
claws. When the tribes finally united in a summit, the
Warrior, the Shaman, and the Elder met upon a great
glacial stone and realized that each had circled back to
the same place in his delirium. The three embraced
one another as true brothers, and brought peace to the
Tashana people.
Founded by a renowned hunter
and explorer, Lord [[Boroman ir'Dayne]], the Wayfinder
Foundation is an exclusive adventurers' guild that
welcomes only experienced and renowned members.
Dayne suffers from a wasting curse that prevents him
from undertaking further adventures of his own, so he
has put his considerable fortune to use in sponsoring
great expeditions. The Wayfinder Foundation has an
unusually wide reach for an adventurers' guild, with
guildhalls found across [[Khorvaire]] as well as in the
city of [[Stormreach]], in [[Xen'drik]]. Its headquarters, and
the residence of its wealthy patron, is in [[Fairhaven]]. 
The [[Wayfinder Foundation]] has a relatively small office in [[Sharn]], but it is a
vitally important one for many of the adventurers who
operate in Sharn's depths and [[Xen'drik]]. The Foundation liaison in Sharn is [[Hendra ir'Kavay]], a wealthy socialite whose
interest in ancient history is largely financial.
<<list-links-article "[tag{!!title}sort[title]]">>
You conjure a mass of thick, sticky, flammable webbing at a point of your choice within 60 feet. The webs fill a 20-foot cube from that point for up to 1 hour. The webbing must be anchored between two solid masses or layered across a solid surface or the conjured web will collapse on itself.
The Webs of [[Zarash'ak]] stretch beneath and around the outer edge of the city, in
the cramped space between the surface of the [[Glum River]]
and the lowest platforms of the [[Ring]]. The structures
here are canopies supported by ropes anchored to the
platforms above and the stilts. All of these structures
are temporary by design, because when flooding is
bad, the lowest canopies can be swept away. Here the
poor and the mad mingle with those who enjoy the
freedom of a hidden life in the shadows. If you know
your way around, the Webs can be the fastest means
of moving about Zarash’ak, but running the ropes is
dangerous for anyone who has poor balance or enemies in the deeps.
When mounted at the helm of an [[elemental galleon]] or [[airship]], this wheel allows a creature that possesses the [[Mark of Storm]] to telepathically control the [[elemental]] bound inside the vessel.

If a //wheel of wind and water// is mounted on a mundane sailing ship, a creature with the Mark of Storm who is using the wheel can create an area of ideal conditions around the vessel, increasing its speed considerably.

The metal weights of this weapon are inscribed with spiraling sigils of the wind. If a creature's legs have been tangled with this weapon, you may say a command word. When commanded, the weights of the bolas begin to spin, creating a vortex of wind around the target. The vortex lifts the target 30 feet into the air, then releases it. The whirlwind bolas then return to the thrower.
Dark shapes and strange sounds fill the
woods known as Whisper, located in the northern reaches of
[[Aundair]]. Monsters still roam this cold and forlorn forest,
and few dare venture too deeply into its ancient recesses.

The Whisper Woods have a
reputation for sinister creatures and grave dangers,
but nothing compares to the sheer strangeness of the
Whisper Rock. This ancient monolith, raised long
before humanity came to [[Khorvaire]], exudes a corrupting influence, warping trees and animals and
causing shadows to bend and twist. Winds swirl and
issue a chilling susurrus, which gives the rock and
the forest their name. Some believe the whispers
contain prophetic fragments—prompting some fools,
seers, and apocalyptic doomsayers to make the hazardous journey through the woods and congregate
around the stone, straining to make sense of the
weird voices in the wind.
This cult represents an ancient tradition found across the [[Shadow Marches]]. Whisperers have a strange bond with [[gibbering mouther]]s, and a Whisperer family will keep a mouther somewhere in their home. When a family member reaches a certain age, they are fed to the mouther; the Whisperers believe that the soul of the departed lives forever in the mouther and can be heard in the gibbering. The name “Whisperer” comes from their tradition of prayer, a sort of ecstatic murmuring that mimics the chaotic gibbering of the mouther.
The Whispering Flame is a transactional [[cult|Cults of the Dragon Below]] hidden within the Church of the [[Silver Flame]]—a secret order of priests and templars who do [[Bel Shalor]]'s bidding in exchange for power and influence. The
greatest agents of the Whispering Flame rarely perform obvious
acts of [[corruption|Silver Flame Heresy and Corruption]] themselves; instead, they subtly encourage others to compromise their principles or succumb to their fears. Cultists work to trick truly virtuous members of the church, convincing good templars to persecute innocent people in pursuit of imaginary threats. This situation—good people
harming good people—delights Bel Shalor. 

Important members of the Whispering Flame often
receive a [[ring of mind shielding]], and may use [[eyes of charming]]
to influence others. Such items are typically made by the [[Lords of Dust]], though they can be ancient relics or items infused with the power of the Shadow in the Flame.
The smallest and most animalistic of the dragons, white dragons dwell in frigid climes, favoring arctic areas or icy mountains. Their bestial nature and mastery of their environments make them keen hunters.

A white dragon has feral eyes, a sleek profile, and a spined crest. The scales of a wyrmling white dragon glisten pure white. As the dragon ages, its sheen disappears and some of its scales begin to darken, so that by the time it is old, it is mottled by patches of pale blue and light gray. This patterning helps the dragon blend into the realms of ice and stone in which it hunts, and to fade from view when it soars across a cloud-filled sky.

!! Magic and Breath Weapon

The white dragon can exhale a powerful icy blast. As innate spellcasters, adult white dragons can cast spells such as [[ice storm]] and [[fog cloud]], but are generally less magically gifted than other true dragons. Ancient white dragons can cast spells such as [[wall of ice]].

{{DragonAgeCategories}}
The White Sea extends north from [[Sarlona]]’s coast to
the edge of the [[Frostfell]]. It combines the worst qualities of
the [[Bitter Sea]] and the [[Sea of Rage]]—often frozen or choked
with icebergs, even as it is prone to freakish weather and
bizarre happenings. The sailors of [[Khorvaire]] avoid it at all
costs, preferring to chart a course for [[Varuz Bay]] on the rare
occasions they sail to [[Sarlona]].
Whitecliff is a prospecting town in [[Q'barra]] in the foothills of the [[Endworld Mountains]]. It is located across the [[Adder River]] from the largest [[Tharashk]] [[dragonshard]] mine in [[Q'barra]], the ''Dragon's Maw''. This mine has an [[airship]] docking tower of its own.
Although the pit is beginning to run dry, the Maw serves as a hub for [[Tharashk]] caravans and is a thriving community in its own right. Far from [[Newthrone]], Whitecliff serves as a base of operations for Lord [[Khalar Velderan]]’s covert schemes, and when Khalar isn’t lobbying in Newthrone, he stays here. Khalar is considering establishing a full refinery here to keep the Maw running when the shards finally run dry.
Thirty miles inside the [[Mournland]],
100 miles south of the Saerun Road, is a mineshaft into
a low hill. The only sign on the entrance is a [[Cannith]] seal, marking the secret facility below as that house’s
property. Although Whitehearth was well known
during and before the war as an ancestral Cannith
forgehold and weapon research laboratory, few know
what wonders and horrors this place holds.

[[Merrix d'Cannith]] of [[Sharn]] has information
indicating that Whitehearth’s [[artificer]]s enjoyed a
breakthrough just before the [[Mourning]]. He has dispatched teams to locate Whitehearth and recover its contents. So far, none have returned.

Inside [[Cyre]], Whitehearth might be one of the
oldest and most well known of [[Cannith]] forgeholds,
but it is not unique. Several more Cannith facilities
still exist in and under the [[Mournland]]. Their purposes might be different from Whitehearth’s, but their treasures still await liberation.
The Whitehorn Wood is a forest in [[Breland]], just south of [[Silver Lake]].
The Whitepine Forest is a large forest in the mainland [[Lhazaar Principalities]]. It contains the [[feyspire]] [[Taer Lian Doresh]].
Escalating trade has brought bustling commerce and
growth in the unlikeliest of places—the wild and rugged
coastline of the [[Tashana Tundra]]. The port communities
of Whitetooth and [[Winterstead]] are two of the strangest settlements in all of [[Eberron]], a mix of [[shifter]] and [[maenad]], with pirates, smugglers, and other unsavory elements from [[Khorvaire]] added to the mix. 

Whitetooth, at the mouth of the [[Tiiki River]], has
been a permanent [[shifter]] village for time out of mind.
The tribes have long held the spot communally as a
place to facilitate trade from the coast and inward along
the river. When [[Lhazaar|Lhazaar Principalities]] sea merchants discovered the
medicinal and magical properties of the various [[Tashana lichens|Tashana lichen paste]]—especially the potent [[icewild]]—intercontinental
trade found a new foothold on the continent of [[Sarlona]].
In recent years, a small but very lucrative demand for
authentic [[shifter art|Culture of the Tashana shifters]] has opened new avenues of commerce for the elite treasure hunter. 

Merchants in both
Whitetooth and [[Winterstead]] are actively recruiting for
help in acquiring and transporting Tashanan lichen
harvests. Some expeditions are simply looking for protection as they move inland to barter with the shifter
tribes. Others might be looking for a small team to make
contact with remote tribes and discover new sources and
suppliers. High-end art dealers are also operating in
both settlements, paying handsomely for any authentic
shifter art that can be acquired—no questions asked.

[[Clovis Forlaine]] is a [[changeling]] pirate and fence in Whitetooth.
The Whitewater in [[Syrkarn]] sits at the corner of the provinces of [[Mae-Kree]], [[Sunyagir]], and [[Khunan]], where the [[Xofre|Xofre River]] and [[Kushtuar|Kushtuar River]] rivers meet. This crystal-clear lake is believed to
mark a [[manifest zone]] linked to [[Lamannia]]. The rocky land surrounding the area remains wet and cool year-round, even as the sands that give the lake its name burn
white beneath the equatorial sun. 
The word "wight" meant "person" in days of yore, but the name now refers to evil [[undead]] who were once mortals driven by dark desire and great vanity. When death stills such a creature's heart and snuffs its living breath, its spirit cries out to the [[Bone King]] or some other vile entity of [[Mabar]] for a reprieve: undeath in return for eternal war on the living. If a [[Dark Power]] answers the call, the spirit is granted undeath so that it can pursue its own malevolent agenda.

Wights possess the memories and drives of their formerly living selves. They will heed the call of whatever dark entity transformed them into undead, swearing oaths to appease their new lord while retaining their autonomy. Never tiring, a wight can pursue its goals relentlessly and without distraction.

//''Life Eaters.''// Neither dead nor alive, a wight exists in a transitional state between one world and the next. The bright spark it possessed in life is gone, and in its place is a yearning to consume that spark in all living things. When a wight attacks, this life essence glows like white-hot embers to its dark eyes, and the wight's cold touch can drain the spark through flesh, clothing, and armor.

//''Shadow of the Grave.''// Wights flee from the world by day, away from the light of the sun, which they hate. They retreat to barrow mounds, crypts, and tombs where they dwell. Their lairs are silent, desolate places, surrounded by dead plants, noticeably blackened, and avoided by bird and beast.

[[Humanoids|humanoid]] slain by a wight can rise as [[zombie]]s under its control. Motivated by hunger for living souls and driven by the same desire for power that awakened them in undeath, some wights serve as shock troops for evil leaders, including [[wraith]]s. As soldiers, they are able to plan but seldom do so, relying on their hunger for destruction to overwhelm any creature that stands before them.
[[Planar|plane]] energy bathes [[Sarlona]] like no other place on [[Eberron]]. This energy results in roaming [[reality storm]]s in the [[Tashana Tundra]]. In other areas, the [[manifest zone]]s do not move, but they are far larger and stronger. A wild zone represents a true blending of the planes involved. The results are never uniform, but they are always dramatic and often deadly. 

A number of rules apply to all wild zones. The [[plane]] linked to the wild zone is always considered to be coterminous within the region, and it is considered to be a [[manifest zone]]. Furthermore, the region is considered to be an extension of the intruding plane and adopts the traits of that plane, with the exception of morphic and
time-altering traits. Outsiders from the linked plane cannot be magically banished to their home plane while in a wild zone. Any [[spell]] that involves summoning a creature from the linked plane is extended.

Wild zones often include breaches between the worlds,
cracks through which creatures can pass without the use
of magic. These breaches take many forms and are rarely
obvious; a tranquil pond could be a portal to [[Lamannia]].
To recognize a wild zone or a breach, a character may need prior knowledge of nature and the [[plane]]s. Of course, a character can pass through a breach without being aware of its nature. Although many intelligent outsiders
have little interest in visiting the Sarlonan wilderness,
less intelligent creatures ([[fiend]]ish or [[celestial]] animals,
for example) are often found in these regions. Denizens
of these planes that come to Eberron through a breach
cannot leave the wild zone, either physically, by teleportation, or through any other method. The zone is an extension of the intruding plane, but natives of that plane
cannot enter Eberron itself.

The energy of a wild zone has a powerful transforming effect on plants and animals. This effect can result in the appearance of creatures using any sort of appropriate mutation, or it can be the source of entirely new monsters—beings born from the fusion of the worlds. It's possible that [[lycanthropy|lycanthrope]] began when a group of
humans settled in a wild zone linked to [[Lamannia]], and
the forces of [[primal|primal magic]] nature infected them. Effects can be
psychological as well as physical; a creature that spends an
extended period of time in a [[Shavarath]] wild zone could be
overcome by a savage thirst for battle, potentially falling
into a permanent state of frenzy.

No two wild zones are alike, either in appearance
or effect. Although two zones linked to [[Mabar]] share the
same foundation, one might cause the dead to rise, while
the other could be filled with hungry trees seeking the
blood of the living. In general, a wild zone appears as a
fusion of the [[plane]] and the natural surroundings. A zone
linked to [[Fernia]] is not a sheet of fire and lava, but it might
include pools of lava welling up from the ground, balls
of fire floating through the air, or trees that are eternally
burning yet never consumed (unless removed from the
zone). See also [[reality storm]] for more ideas.

When possible, the [[Edgewalkers]] create buffer
regions a mile wide marking the edge of wild zones—slashing and burning any vegetation to provide a clear view. Depending on the danger presented by the zone,
watchtowers or fortresses might be erected. In a few
cases, entire zones have been surrounded with high
walls. Edgewalkers have also been experimenting with
fields of [[psionic|psionics]] aversion; this work is still in development, and the power requirements would necessitate the presence of a [[hanbalani|hanbalani alta]] to
maintain the field. 
A wilder is someone who spontaneously develops [[psionic power|psionics]], much as a [[sorcerer]] spontaneously develops [[arcane power|arcane magic]]. Though well-trained savants may scoff at the crudeness of the wilders' techniques, they are well aware of how powerful an unleashed mind brimming with psionic energy can be.

Wilders can manifest almost any of the powers of a [[psion]] or [[ardent]], but they are most potent when they harness "psychic surges", brief flashes of psionic energy that ripple through their minds and temporarily heighten their abilities. However, all too often an untrained wilder loses control of a power barely held in check, with disastrous consequences.
Wildhunt [[shifter]]s are sharp and insightful. Many are
constantly alert, ever wary for possible threats. Others
focus on their intuition, searching within. Wildhunt
shifters are excellent hunters, and they also tend to become the spiritual leaders of shifter communities. 
''Date: '' [[18-19 Sypheros|Khorvaire calendar]]

Supposedly the [[Fury]], the god of Passion and Revenge,
reaches the height of her power on this night. Emotions
run high, and impulse control runs low. Shy and superstitious folk stay indoors, while others see it as a time to
cast aside inhibitions. The streets fill with revelry that
lasts well into the night.
While holding this fan, you can wave it to create a powerful gust of wind. Once used, the fan shouldn't be used again until the next dawn. Each time it is used again before then, it has an increasing chance of not working and tearing into useless, nonmagical tatters.
Wind stones come in pairs, with each smooth stone carved to match the other so the pairing is easily recognized. While you touch one stone, if you have the [[Mark of Scribing]], you can cast the [[sending]] spell from it. The target is the bearer of the other stone. If no creature bears the other stone, you know that fact as soon as you use the stone and don't cast the spell.

Once sending is cast through the stones, they can't be used again until the next dawn. If one of the stones in a pair is destroyed, the other one becomes nonmagical.

<<<
!! Sending
{{sending}}
<<<
After the destruction of the [[line|Aereni noble line]] of [[Vol]], not all of the [[Aereni]] refugees sought shelter in the shadow of the [[Fingerbones|Farlnen]]. Some fully embraced [[Lhazaar|Lhazaar Principalities]] culture, mingling with [[human]]s and creating a significant population of [[half-elves|half-elf]], particularly on the island of [[Orthoss]]. While some of these Khoravar carried the [[Mark of Storm]], they held no principality of their own until a decade ago when Prince [[Koulton Brightwind]] stole an early [[airship]] from House [[Lyrandar]], flew it to [[Orthoss]] and recruited a crew out of [[Blackrock]], which quickly grew into the Wind Whisperer principality of today.

Members of this small principality are as wild and unpredictable as the wind itself. They often help travelers in distress, but are known for raiding or otherwise interfering with [[Lyrandar]] vessels. Many of those who develop the [[Mark of Storm]] outside of House Lyrandar find their way to the Wind Whisperers. 

The Wind Whisperers have seven ships, including Koulton's stolen [[airship]] and two [[elemental galleon]]s. The remaining four ships are small and fast, and not as powerful as [[Bloodsail|Bloodsails]] or [[Seadragon|Seadragons]] warships.
This item appears to be a small brass dome with a winding key on the side. You can turn the key and set the beacon on the ground; when you do so, the beacon emits a 100-foot tall pillar of light for 10 minutes, or until the beacon is moved.

The base of the beacon emits bright light in a 20-foot
radius, and dim light for an additional 20 feet. The pillar of
light can be seen from up to 1 mile away. 
This gallery showcases the
work of over a dozen [[elf]] artisans. Much of the work in
the Winding Root is wooden sculpture, but the gallery also sells tapestries, jewelry, and even clothing.
The goods sold at the Winding Root are of the highest
quality, often representing years or even decades of
work, and the prices reflect their perfection. When
someone needs to find a gown or suit to wear to the
[[Brelish|Breland]] Court, the Winding Root is a great place to
visit—but the prices keep the gallery out of reach of
all but the wealthiest citizens of [[Sharn]].

If someone wants to sell her work in the Winding
Root, she must speak to the owner, Jhaia Thesaelia. Jhaia is only interested
in the work of elven artisans, and items must have been produced with an extremely high degree of craftsmanship. Her initial attitude is indifferent, and at this level she charges a 20% commission to sell an item.
If she is friendly toward the artist, she drops her
commission to 15%; if helpful, the cost is reduced
to 10%. 
Windlost is an island in the [[Lhazaar Principalities]]. 
While you wear these boots, you can fly as fast as you can run. You can use the boots to fly for up to 2 hours, all at once or in several shorter flights, each one using a minimum of 1 minute from the duration. If you are flying when the duration expires, you descend at a rate of 5 feet per second until you land.

The boots regain 1 hour of flying capability for every 12 hours they aren't in use.
The Winter Bay lies off the coast of the [[Tashana Tundra]] in [[Sarlona]]. It is part of the [[Sea of Rage]] and is fed by the [[Tiiki River]] and [[Qonama River]].
Escalating trade has brought bustling commerce and
growth in the unlikeliest of places—the wild and rugged
coastline of the [[Tashana Tundra]]. The port communities
of [[Whitetooth]] and Winterstead are two of the strangest settlements in all of [[Eberron]], a mix of [[shifter]] and [[maenad]], with pirates, smugglers, and other unsavory
elements from [[Khorvaire]] added to the mix. 

The predominantly [[maenad]] village of Winterstead on the shore of the [[Qonama River]] has seen growth similar to [[Whitetooth]], but to a lesser extent. When [[Lhazaar|Lhazaar Principalities]] sea merchants discovered the
medicinal and magical properties of the various [[Tashana lichens|Tashana lichen paste]]—especially the potent [[icewild]]—intercontinental
trade found a new foothold on the continent of [[Sarlona]].

Merchants in both
[[Whitetooth]] and Winterstead are actively recruiting for
help in acquiring and transporting Tashanan lichen
harvests. Some expeditions are simply looking for protection as they move inland to barter with the shifter
tribes. Others might be looking for a small team to make
contact with remote tribes and discover new sources and
suppliers. High-end art dealers are also operating in
both settlements, paying handsomely for any authentic
shifter art that can be acquired—no questions asked.
Wish is the mightiest [[spell]] a mortal creature can cast. By simply speaking aloud, you can alter the very foundations of reality in accord with your desires.

The basic use of this spell is to duplicate any other spell that is legendary-tier or lower. Alternatively, you can achieve an endless variety of other effects, including:

* Create one object of up to 5000c in value, no more than 300 feet in any dimension.
* Fully heal up to twenty creatures that you can see.
* Grant up to ten creatures that you can see resistance to a specific magical effect.
* Undo a single event within the last minute. Reality reshapes itself to accommodate the new result.

...Or something beyond the scope of the above examples. State your wish to the DM as precisely as possible. The DM has great latitude in ruling what occurs in such an instance; the greater the wish, the greater the likelihood that something goes wrong. This spell might simply fail, the effect you desire might only be partly achieved, or you might suffer some unforeseen consequence as a result of how you worded the wish. For example, wishing that a villain were dead might propel you forward in time to a period when that villain is no longer alive, effectively removing you from the game. Similarly, wishing for a legendary [[magic item]] or artifact might instantly transport you to the presence of the item's current owner.

The stress of casting this spell to produce any effect other than duplicating another spell weakens you. After enduring that stress, you suffer harm when casting spells for one day, and suffer fatigue, weakness and body aches that persist for <<dr 2d4>> days. Finally, there is a small chance that you are unable to cast wish ever again if you suffer this stress.
Wizards are supreme magic-users, defined and united
as a class by the spells they cast. Drawing on the subtle
weave of [[arcane magic]] that permeates the cosmos, wizards cast
spells of explosive fire, arcing lightning, subtle deception,
and brute-force mind control. Their magic conjures
monsters from other [[plane]]s of existence, glimpses the
future, or turns slain foes into [[zombie]]s. Their mightiest
spells change one substance into another, call meteors
down from the sky, or open portals to other worlds. 

Wizards stand apart from the legions of others who dabble in the arcane arts on the magically charged world of [[Eberron]]: They alone are willing to devote their lives to the daunting work of arcane study. Wizards are distinguished from [[sorcerer]]s and [[warlock]]s by their incredible versatility—an accomplished wizard can prepare any of a hundred different spells as the situation requires.

!! Institutions of Magic on [[Khorvaire]]

* the [[Twelve]]
* the [[Arcane Congress]] ([[Arcanix]])
* the [[Esoteric Order of Aureon]]
* the [[Guild of Starlight and Shadows]]
* the [[Closed Circle]]
* [[University of Wynarn]]
* [[Morgrave University]]
The farming community of Wolf’s Paw, located in the northeastern farmland of the [[Eldeen Reaches]], is one of the relatively few permanent
[[shifter]] communities in the Reaches. Most shifters either
live among other [[humanoid]]s in their communities or
wander in small nomadic tribes in the [[Towering Wood]]. 

The leader of this shifter farming community is Slara, a ranger who founded the thorp a decade ago. Spiritual guidance comes from the [[druid]] Lorgan, whose ties
to the [[Wardens of the Wood]] have proved beneficial to the
community on more than one occasion.

In addition to farming, the townsfolk make periodic
trips into the [[Wolfwood]] near [[Havenglen]] to hunt for meat. These
hunts have an almost religious significance for the community, and many traditions and ceremonies dating back
to their time as a nomadic pack find outlets in the forest.

The community also possesses a secret that no one outside
its ranks is aware of. Slara’s grandsire, the ancient Thorntuft, is actually a [[werewolf|lycanthrope]] in hiding. Thorntuft rarely ventures far
from Slara’s homestead; he is content to sit in the sun and
enjoy his role as historian and advisor to the community.
Only occasionally does he desire to shift and do a little hunting of his own—always being
careful not to spread the curse during his hunts.
The Wolfwood is a small forest in the [[Eldeen Reaches]], near the towns of [[Wolf's Paw]] and [[Havenglen]].
This small logging village in [[Breland]] is located in the [[Dragonwood]] forest near the mouth of the [[Dagger River]]. Trees felled here are sent down the river to [[Galethspyre]] where they are milled or carved.
A worg is a type of magical [[monstrosity]] that resembles a large fiendish wolf with glowing eyes. An adult worg stands about three feet high, five feet long and weighs about 300 pounds. These creatures were likely magebred by [[Kech Ruuska]] during the Empire of [[Dhakaan]] from [[dire wolf]] and [[death dog]] stock, to serve as guard beasts and mounts. Cunning and malevolent, worgs typically can speak Goblin as well as a few words in Common

Today, worgs are primarily found among the [[Dark Pack]] in the [[Watching Wood]] in [[Droaam]] as well as parts of the [[Towering Wood]]. They can also be found among the [[Heirs of Dhakaan]], particularly the [[Taarka'khesh|Khesh'dar]].
A mighty conjurer created this underground workshop in order
to carry out his experiments without placing the city
at risk. He was eventually killed by a [[rakshasa]] that
escaped its bonds, and ever since then his workshop
has been a fortress of the [[Lords of Dust]]. Currently, the rakshasas [[Zathara]] and [[Nethatar]] reside in this dungeon keep. 
The Wormwood is a forest in the [[Nulakesh]] province of [[Riedra]]. It links the [[Kethuun Forests]] to the [[Forest of Lurking Shadows]].
This shop is located in a small side tunnel behind [[Shamukaar]]. It has no
windows, and the door is locked with a simple [[abjuration]] spell.
The only indication of its purpose is a small sign
above the door, showing a stylized dragon with an
injured leg; a few drops of blood fall from its raised
foreleg. This is the abode of [[Cask]], a [[changeling]] [[artificer]] allied with
[[Daask]]. Cask prepares [[dragon's blood]] in his alchemy lab using smuggled ingredients and sells it from his shop.
A wraith is malice incarnate, concentrated into an incorporeal form that seeks to quench all life. The creature is suffused with negative energy, and its mere passage through the world leaves nearby plants blackened and withered. Animals flee from its presence. Even small fires can be extinguished by the sucking oblivion of the wraith's horrifying existence.

//''Vile Oblivion.''// When a mortal [[humanoid]] lives a debased life or enters into a pact with a [[Dark Power]], its soul can become so suffused with negative energy from [[Mabar]] that it collapses in on itself and becomes a malevolent wraith. Almost nothing of the wraith's former existence is preserved; in this new form, it exists only to annihilate other life.

//''Bereft of Body.''// A wraith can move through solid creatures and objects as easily as a mortal creature moves through fog.

A wraith might retain a few memories of its mortal life as shadowy echoes. However, even the strongest events and emotions become little more than faint impressions, fleeting as half-remembered dreams. A wraith might pause to stare at something that fascinated it in life, or it might curb its wrath in acknowledgment of a past friendship. Such moments come rarely, however, because most wraiths despise what they were as a reminder of what they have become.
During the reign of [[Galifar]]’s last king, Wroann
ir’Wynarn governed the nation of [[Breland]]. King [[Jarot|Jarot ir'Wynarn]]’s youngest
daughter, Wroann was the exact opposite of her twin
brother, [[Wrogar|Wrogar ir'Wynarn]] of [[Aundair]]. She was thin and agile, serious,
and a lover of the finer things in life. She also cherished
freedom above all things, and promised to make Breland
a place where people would be judged by word and deed
instead of social class.

When Jarot died, Wroann broke with her twin regarding the line of succession. Instead of supporting [[Mishann|Mishann ir'Wynarn]] of [[Cyre]]’s claim to the throne, Wroann gathered her vassals and declared her own intention to rule the kingdom.
Ironically, the freedom-loving nation of [[Breland]] was one
of the key instigators of the [[Last War]], for her leader wanted
to spread her ideas of liberty and increased democracy to
all by force and sword.
''District Type:'' Caravan district<br/>
''Buildings:'' Temple (2), average lodging (20), poor
lodging (60), average food (38), poor food (120),
average trades (40), poor trades (60), average services (40), poor services (60)<br/>
''First Impression:'' Hordes of people stream through
the enormous gate of [[Sharn]]. A continuous flood of
traffic and noise fills the streets, and [[skycoach]]es fill
the air.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Terminus]] (west); [[Cogsgate]] (south); [[North Market]] (bridge, northwest); [[Blackbones]] (below); [[Cornerstone]] (above)

When people come to [[Sharn]] by the Old Road, they
come to Wroann's Gate. Originally, the district was
known as the Gate of Galifar, but when the [[Last War]]
began the people chose to show their support for
their first queen. It is an awesome site—a massive
arch opening into an enormous tower, topped by a
titanic statue of Queen [[Wroann|Wroann ir'Wynarn]] holding a scepter in
one hand and a sword above her head.

Compared to [[Terminus]], Wroann's Gate sees far
more local traffic—farmers from the surrounding
areas bringing their goods to market, lords returning from [[Wroat]], merchant caravans, and messengers and travelers of all description. Otherwise, the two
districts are very similar, and House [[Sivis]], House
[[Deneith]], and House [[Vadalis]] all offer the same services here that they do in [[Terminus]]. 
Built on both sides of the [[Howling River]] at a point
where the river widens, the ancestral seat of the rulers
of [[Breland]] seduces visitors with its tree-lined avenues,
elegant drawbridges, cleanliness, and laid-back atmosphere. Perched on a rocky island in the middle of the
river, surrounded by military docks and barracks, is
[[Brokenblade Castle]], the [[king|Boranel ir'Wynarn]]'s stern fortress.

In contrast to its welcoming countenance, Wroat casts
dark shadows, and much goes on quietly behind closed
doors. The absence of beggars and riffraff in the streets
might also raise suspicion that Wroat is putting on appearances. The [[King's Dark Lanterns]] are ever vigilant
here, and newcomers who aim to misbehave tend to disappear quickly and without so much as a whisper.

"Wroat" is also the name of the pre-[[Galifar]] nation that spanned territory now part of [[Breland]].

!! The Shape of Wroat

The second largest city in [[Breland]] (population 404,350), Wroat serves as the Brelish capital and a center of trade and commerce. Not as densely populated
or as overwhelming as [[Sharn]], Wroat nevertheless holds
its own as one of the great cities of [[Khorvaire]]. A steep wall encircles the city,
wrapping around and crossing over the slow-moving
[[Howling River]] as they wend westward to join the [[Dagger River]]. 

[[Human|human]]s and [[gnome]]s live here in the greatest
numbers, along with significant populations of [[elves|elf]] and [[Khoravar|half-elf]]. All [[dragonmarked house]]s have emporiums in the city, and House [[Medani]] runs its entire industry from the [[Tower of Inquisition]]. The house’s [[leader|Trelib d'Medani]] has a long and well-known friendship with the [[king|Boranel ir'Wynarn]] and lends
his house’s service to protect the crown from spies
and assassins.

Two large temples—one dedicated to
the [[Sovereign Host]], the other to the [[Silver Flame]]—dominate the Street of Worship. Other impressive structures include [[Brokenblade Castle]], [[Parliament Hall]], the
[[Citadel|King's Citadel]], the Wroat campus of [[Morgrave University]], and
the [[Galifar Museum]].

As the nation’s capital, Wroat is a hotbed of political activity. The aristocracy and the elected members of
[[parliament|Breland Parliament]] spend most of their time here, debating the issues
of the day and keeping the wheels of government turning. Diplomats from all over the world maintain lodgings
and embassies in the city’s Foreign District. The crown
operates out of [[Brokenblade Castle]], where King [[Boranel|Boranel ir'Wynarn]]
and his family live and work for a sizable portion of the
year. The heads of all the royal agencies also operate out
of Wroat, where they can be close to both the king and the
parliamentary leaders.

Boranel’s court travels with the king, but it displays
all of its grandeur and majesty here in the capital city.
Keeping most of the traditions of ancient [[Galifar]] alive, the
court conducts business, plans festivities, engages entertainment, and otherwise handles the duties of serving the
crown and king. The Brelish court is known far and wide
for the lavish celebrations it holds, as well as for the fair
and just treatment it dispenses to its subjects.
During the reign of [[Galifar]]’s last king, Wrogar ir'Wynarn governed
the nation of [[Aundair]]. King [[Jarot|Jarot ir'Wynarn]]’s fourth child, Wrogar was a huge bear of a man who enjoyed the rugged lifestyle of Aundair’s countryside as much as he loved poring through the libraries and
other depositories for books of history and religion. When
Jarot died, Wrogar initially supported his sister [[Mishann|Mishann ir'Wynarn]]’s
claim to the throne (Mishann ruled [[Cyre]] at the time), but
that wasn’t enough to keep the kingdom together. Soon, the
[[Last War]] touched even distant Aundair.
{{Towers of Aundair}}
The Wynarn Institute, located in [[Metrol]], [[Cyre]], was both one of the foremost academies of magic in [[Khorvaire]] and one of its most amazing museums,
exploring the artistic potential of the [[arcane|arcane magic]]. Treasures of the
pre-[[Galifar]] kingdoms were displayed here along with modern
works of art. In addition to purely artistic exhibits, the Hall of Kings allowed visitors to converse with illusory replicas of the past rulers of Galifar. Though some cultures preserve their rulers so they can advise successors—such as the [[Aereni]] [[elves|elf]] and the [[medusa]]s of [[Cazhaak Draal]]—the [[illusion]]s of the Hall of Kings were merely a tourist attraction.
The Wynarn River flows from [[Lake Galifar]] to the [[Eldeen Bay]]. It forms the natural border between the nations of [[Aundair]] and the [[Eldeen Reaches]].
Wyr is a small town in [[Aundair]], located on the [[Wynarn River]] and overlooking the [[Eldeen Reaches]] to the west.
Wyredd is a respected importer of fine wines and exotic spirits. Wyredd's has the finest selection in [[Sharn]], but his prices are high.

Some of the best recent [[Aundair]] vintages Wyredd's has available include ''fireburst wine'' from the vineyards of [[Arcanix]], dark ''Orla-un wine'' known for its fruity
sweetness, and ''Windshire rainbow wine'', a type of
mursi (red wine) that changes color and flavor as one
consumes a glass.
A thriving prospecting town and the largest settlement in [[Hope]], Wyrmwatch was
established by [[Cyran|Cyre]] refugees only three years ago. Although far smaller
than [[New Cyre]] in [[Breland]], its people are proud of what
they have built. 

Walled in stone on the rocky hills above a fertile plain, the settlement has endured
attack from [[Valenar]] [[elves|elf]], [[kobold]]s, and hostile [[dragonborn]], even as it continues to grow on the strength of local mining and agriculture. Wyrmwatch is populated by settlers who prefer the frontier life to the ideals of [[New Galifar]], as well as by folk displaced by the destruction of smaller settlements.

Wyrmwatch is a theocracy—a bastion of radical [[Silver Flame]] practitioners within [[Q'barra]]. The town’s leader is Elder Wedon Nevillom, a zealot and
veteran of the [[Last War]]. Nevillom's courage and passionate sermons help sustain the people of Wyrmwatch in difficult times. He and his followers hold to a somewhat puritanical and xenophobic interpretation of the Church's values. As such, no [[lizardfolk]] are allowed in Wyrmwatch, and [[dragonborn]] are treated with suspicion.
Travelers in the wild sometimes look to the skies to see the dark-winged shape of a wyvern carrying its prey. These cousins to the great [[dragon]]s hunt the same tangled forests and caverns as their kin. Their appearance sends ripples of alarm through the borderlands of civilization.

A wyvern has two scaly legs, leathery wings, and a sinewy tail topped with its most potent weapon: a poison stinger. The poison in a wyvern's stinger can kill a creature in seconds. Extremely potent, [[wyvern poison]] burns through its victim's bloodstream, disintegrating veins and arteries on its way to the heart. As deadly as wyverns can be, however, hunters and adventurers often track them to claim the venom, which is used in alchemical compounds and to coat weapons.

//''Aerial Hunters.''// A wyvern doesn't fight on the ground unless it can't reach its prey by any other means, or if it has been fooled into a position from which aerial combat isn't an option. If forced into a confrontation on the ground, a wyvern crouches low, keeping its stinger poised above its head as it hisses and growls.

//''Aggressive and Reckless.''// A wyvern intent on its prey backs down only if it sustains serious injury, or if its prey eludes it long enough for another easier potential meal to wander along. If it corners a fleeing creature in an enclosure too small to enter, a wyvern guards where the quarry hides, lashing with its stinger whenever opportunity allows.

Although they possess more cunning than ordinary beasts, wyverns lack the intelligence of their [[draconic|dragon]] cousins. As such, creatures that maintain their composure as a wyvern hunts them from the air can often elude or trick it. Wyverns follow a direct path to their prey, with no thought given to possible ambushes.

//''Tamed Wyverns.''// A wyvern can be tamed for use as a mount, but doing so presents a difficult and deadly challenge. Raising one as a hatchling offers the best results. However, a wyvern's violent temperament has cost the life of many a would-be master.
This poison must be harvested from a dead or incapacitated [[wyvern]] and distilled into a high-potency poison. A creature injured by a weapon coated with this poison and can't resist its effects suffers extreme poison damage.

A port town
at the mouth of the [[Torlaac River]], Wyvernskull sits on
the edge of the [[Khraal]] rainforest. This haven in the
midst of the wilderness provides an important entryway
into the kingdom for the few traders that approach [[Darguun]] from the southern seas. If trade ever increases,
this town would blossom. Until then, its inhabitants
eke out an existence as they wait for the infrequent but
necessary trader visits.

If you're a [[Ghaal'dar]] sailor or guild artisan, Wyvernskull could be your home.
The [[goblinoid]]s who live here are a sociable, rowdy lot
who are also, by and large, friendly toward strangers. 
The Xaryai River in [[Adar]] flows into the [[Jathara Bay]]. Upstream is the hidden settlement of [[Xephanan]].
In {{!!title}}, you could...

* Seek to destroy an ancient mystical weapon before it falls into the hands of villains.
* Battle savage [[giant]]s in the ruins of their ancient cities.
* Match wits with cunning [[drow]] in the depths of a primordial jungle.

Any follower of the [[Sovereign Host]] knows this story
about Xen'drik. In the dawn of time, the Sovereigns
bound the fiendish [[overlord]]s and freed the world from
chaos. The mighty [[giant]]s had fought alongside the Sovereigns, and in gratitude [[Aureon]] granted them dominion over the continent of Xen'drik. Aureon taught
giants the secrets of wizardry, and they grew powerful.
The giants built towers that touched the sky and seemingly endless cities.

The mightiest among the giants was the titan [[Cul'sir]].
His power was so great that he pulled the [[thirteenth moon|Crya]] from the sky and crushed it in a fit of anger. The giants ruled many lesser races, and eventually the [[elves|elf]] rose up against them. Cul'sir unleashed plagues upon
the rebellious elves. He made assassins of elven shadows and turned them back against their owners. Still the rebels persisted. In his anger, Cul'sir prepared to
pull down the rest of the moons to hurl them at his enemies, even though he'd destroy the world in doing it. But
the giants had gone too far, and [[Aureon]] set the [[dragon]]s
of [[Argonnessen]] upon them. The dragons destroyed the
vast cities and leveled the towers. [[Cul'sir]] was slain and
his people scattered. 

The [[Sovereigns|Sovereign Host]] and [[Six|Dark Six]] each laid a curse upon the
land. [[Aureon]] decreed that the creatures of Xen'drik
would have no knowledge of law, and [[Boldrei]] proclaimed that no city would stand. The [[Traveler]] distorted
the land so that no path followed twice. The [[Devourer]]
unleashed fire and storm. And so Xen'drik remains a
land of mystery, a realm that cannot be mapped, a place
that holds secrets that could shatter the world. 

This story bears at least some truth. The [[elves|elf]] were
once slaves of the ancient [[giant]]s, and the [[dragon]]s did
eradicate the civilizations of Xen'drik. Great magic has
warped the land. The environments of Xen'drik are extreme and unpredictable, and travelers might find a glacial expanse in the midst of a vast desert. Tens of thousands of years have passed, yet no civilization has risen
to the heights of the fallen giants; some believe that
[[Aureon]]'s and [[Boldrei]]'s curses ensure that any city that
grows too large collapses into madness. The [[Traveler]]'s
Curse twists space, and explorers might follow the same
path twice only to end up in entirely different locations.

Xen'drik is a continent that defies control. Expeditions
have unearthed artifacts of immense power, as well as
fields of [[Siberys]] [[dragonshard]]s, but once
you leave a site, you might never find it again.

Giants still roam Xen'drik, but these creatures have
never regained the glory of their [[ancestors|Age of Giants]]. Tribes of
[[drow]]—said to be the shadow-assassins created by the
Emperor [[Cul'sir]]—linger in the darkness. These represent just a few of the threats in this vast land. 

!! Notable Locations

Many ports dot the coast of Xen'drik. In addition to the
treasures of the giants, Xen'drik is a source of Siberys
[[dragonshard]]s and other exotic resources. Scholars and
merchants come to Xen'drik on business, smugglers seek to make extra gold, and pirates prey on everyone.
Ports come and go, falling prey to monsters or natural
disasters. But two harbors have stood the test of time. 

* [[Dar Qat]]
* [[Stormreach]]

!! {{!!title}}'s Influence in Khorvaire

In [[Khorvaire]], you might...

* Befriend a [[drow]] making their way in the new world.
* Stop the [[Emerald Claw]] from using a [[giant]] artifact to destroy a city.
* Aid a scholar in deciphering a book of prophecy found in the heart of Xen'drik and brought to [[Stormreach]].

The tremendous diversity of the people of Xen'drik
means that no single trait defines objects and artifacts
from this land. The primitive [[drow]] make armor comparable to studded leather using the chitin of giant scorpions. Rumors abound of more advanced drow civilizations in the layers of [[Khyber]] that lie beneath Xen'drik.
The [[elves|elf]] lived and fought in Xen'drik before the exodus
that took them to [[Aerenal]], and elven artifacts remain
scattered across the region. And the grandest treasures
include the work of the [[giant]]s—which can often be difficult to use because of their size. The spellbook of a giant
wizard might hold priceless secrets, but the bulky tome
can be quite awkward for smaller folk. 

!!! Trinkets from {{!!title}}

| !<<dr d8>> |!Trinket |
| 1 |A punched ticket for a voyage from [[Sharn]] to [[Stormreach]] |
| 2 |A scorpion's barb engraved with a single Elvish letter |
| 3 |A copper coin so big you could use it as a dinner plate |
| 4 |An image of an [[elf]] warrior engraved on a [[giant]]'s tooth |
| 5 |A single page from a giant wizard's spellbook, bearing an incomplete [[spell]] |
| 6 |A scrap of parchment, part of a map of [[Stormreach]] |
| 7 |A small book titled //Feersome Beests of Zendrik// |
| 8 |A scrimshaw carving of a [[sahuagin]] |
Xephs are a strange breed native to [[Adar]] and
possibly a product of the peculiar planar forces that exist
in the land of refuge. Agile and psychically able, xephs
are renowned for their fine crafts. Their hair is usually
worn either short or shaved but for a single long braid. Adaran xephs seem
extremely lighthearted compared to the typical [[Adaran|Adarans]],
but the xeph homeland has never known war or significant internal strife. All xephs consider themselves soldiers in the defense of Adar, however, and they're worthy
partners in this role.

Xephs are human-like with a few notable differences: namely, a dark yellow freckled complexion, pointed ears, and among [[psionically-gifted|psionics]] xeph, eyes that glow bright green. Outsiders who encounter both xeph and [[gith]] may notice some similarities in the two species. Could it be possible that xeph are a hybrid of gith and [[human]]?

!!! Xeph Lands

Xephs originated and still live in rift
valleys in the southwestern portion of [[Adar]]. Their home
is a peaceful and concealed one in a cavernous canyon on
a river they name the [[Xaryai|Xaryai River]]. [[Xephanan]], their largest
city, is deep within the canyon.
Deep in the awe-inspiring canyons where the
impassable [[Xaryai River]] in [[Adar]] flows, a forest occupies the
chasm's floor. The river has cut a wider opening through
softer stone, creating a shaded valley and revealing luminescent crystal that bathes the area in almost eternal twilight. In this weird jungle of crystal and trees live the
[[xeph]]s. Xephs have long been accepted among [[Adarans]].
The largest concentration of xephs in the Xaryai Coulee,
as the xephs name the valley, is in a settlement of graceful
buildings melding stone, tree, and crystal. Xephs call it
Xephanan. From Xephanan, xephs travel all over [[Adar]];
many are integrated into Adaran society and involved in
the war against the [[Inspired]]. A few bold xeph merchants
run trading vessels from the port at [[Dvaarnava]], where
they also work with the [[Summit Road]]. 
The Xofre Bay lies off the coast of [[Syrkarn]] between the provinces of [[Mae-Kree]] and [[Khunan]]. It is part of the [[Sea of Rage]] and is fed by the [[Xofre River]].
The Xofre River in [[Syrkarn]] flows through the [[White Lake]] into the [[Xofre Bay]] in the [[Sea of Rage]]. It forms most of the border between the province of [[Mae-Kree]] and its neighbors [[Khunan]] and [[Sunyagir]].
The touch of Xoriat will warp your flesh and corrupt your mind. The inhabitants of this alien realm seek to transform or destroy all that is natural, and even the slightest contact with it is dangerous.

At least, that's the popular opinion—but it's not entirely true. The plane's title, “Realm of Madness,” is a label applied by the people of [[Eberron]] based on the
perception that close interaction with
Xoriat can interfere with your ability
to process reality. But [[illithid|mind flayer]]s call Xoriat
the Realm of Revelations... and this may be more accurate.
Where [[Lamannia]] embodies the natural world, Xoriat instead
embodies the unnatural. It's a window into the workings
of reality that mortals normally don't see, ones they're ill-equipped to handle. It suggests that time and space, order and chaos, war and peace—all of these are inventions.
They're the foundations mortal lives are built on... but what
lies //under// those foundations? What was there before the
house was built, and what will come after? Xoriat holds the
answers to those questions, and infinitely more as well.

Though the fact is often overlooked, all mortals have a
connection to Xoriat. Mortals are influenced by all of the [[plane]]s,
and the influence of Xoriat drives the desire to question
reality. It can be a source of inspiration, especially for artists;
it helps people challenge their assumptions and see things in
an entirely new way. But Xoriat's also the sun that melts the
wings of any who draw too close. From a distance, its influence
can be a positive force, but mortals who gaze too deeply into
Xoriat can lose touch with their native reality, losing the ability
to navigate the natural world. So Xoriat is a deeply dangerous
place, but the plane itself isn't evil or destructive. It's part of the
universal balance, as important as any of the other concepts
of the planes. [[Irian]] brings life, [[Lamannia]] is the blueprint for
nature, [[Daanvi]] provides guiding order. Xoriat is a glimpse at
what lies behind and beyond, of the other ways reality could
have been—and of the unseen ways it //is//.

!! Universal Properties

To mortal eyes, Xoriat may seem more chaotic than [[Kythri]].
However, it's not defined by the idea of chaos; rather, mortals
don't understand the logic that guides its changes. Additionally,
Kythri's constant change is still always natural: fire and
lightning, stone and water. On the other hand, in Xoriat, a
tornado might be composed of ink. Each grain in a sandstorm
could be a miniature bust of Queen [[Aurala|Aurala ir'Wynarn]] of [[Aundair]], or a
tiny beating heart. It's not simply chaotic; it's unnatural.

* //''Unpredictable Magic.''// Immediately after a creature casts a spell of common [[tier|spell tier]] or higher, generate a [[random magical effect]].
* //''Dangerous Revelations.''// Whenever a creature rests, or is incapacitated, it must resist the energy of the plane or else be afflicted with a random form of [[short-term madness]]. Each time a creature is subjected to this effect, its previous madness effect is replaced with a new one.
* //''Time Is an Illusion.''// More than any other [[plane]], time is unreliable in Xoriat. Adventurers could be trapped in the Realm of Madness for what feels like a lifetime, then find only a moment has passed on Eberron. It's even possible for them to return to Eberron before they left, potentially becoming stranded in another time, as discussed in the next section.
* //''Strange Reality.''// The things adventurers rely on—gravity, time, their identity itself—aren't always reliable in Xoriat. When characters enter a new [[layer]], the DM can choose a property from the Properties of Xoriat table below. This property could apply the entire time the adventurers are on that layer, or it could change when combat begins, whenever a creature rolls a 1, or at any other time the DM chooses. There is no resisting these effects, and an effect impacts all creatures in the layer until the DM replaces that property with a new one. Each effect reflects a strange new property of reality in this layer.

| !<<dr d13>> |!Properties of Xoriat |
| 1 |Creatures can walk on any surface—walls, floors, ceilings. If a creature falls, it does so in a random direction, not necessarily toward the floor. |
| 2 |The local flow of time slows considerably. |
| 3 |The air within the region takes on a fluidic quality. There's no risk of drowning, but creatures must move by swimming. |
| 4 |The local flow of time speeds up considerably. |
| 5 |Creatures are under the effects of the [[mirror image]] spell, and destroyed duplicates do not reappear. |
| 6 |Whenever a creature is hit with an attack, it becomes invisible until the start of its next turn. |
| 7 |Creatures can teleport at will up to 30 feet to an unoccupied space they can see. |
| 8 |Creatures can hear the thoughts of others flowing like music all around them, and if they concentrate on a single creature, they can translate the meaning of the melody. |
| 9 |Creatures are under the effects of the [[gaseous form]] spell, becoming misty clouds of thought energy. Creatures can speak (forming sounds with their thoughts) in this form. |
| 10 |Creatures take on the appearance of a random creature in the region. This has no effect on abilities, and size remains unchanged (so if a [[halfling]] takes on the appearance of an [[ogre]], they are a small ogre). |
| 11 |Creatures gain [[truesight]] with a range of 60 feet. |
| 12 |Creatures are vulnerable to psychic damage, even creatures that are normally immune to it. |
| 13 |Size depends on perspective—is the mountain on the horizon enormous, or can you reach out and hold it in your hand? All creatures are randomly enlarged or shrunk. |

!! Xoriat and the Maze of Reality

There's a logic to the structure of the [[plane]]s. [[Irian]] is the
beginning, where new seeds are born. [[Mabar]] is the end,
consuming all things. Time sometimes moves at different
rates in different planes, but it always moves forward...
except in Xoriat.

Imagine time as a maze and the Material Plane as a rat
moving through it, with the other planes worn as a crown.
This is how the [[Draconic Prophecy]] works. It doesn't tell you
what will happen, because that hasn't been decided yet. It's a
roadmap to the maze, revealing that if you take a left turn at
“Queen Aurala is assassinated” and then turn right at “[[Breland]] becomes a democracy,” you'll reach “[[Sul Khatesh]] is released
from her prison.” The Prophecy shows the path you need to
take to achieve the outcome you desire—a map to the many
possibilities of the future.

But Xoriat isn't bound to the rat. It hovers above the maze. And adventurers could return to the wrong time when they leave it, falling farther back in the maze. They could find themselves in the Empire of [[Dhakaan]], or in the midst of the [[War of the Mark]]. And in the process, they could change the future. Perhaps they help [[Halas Tarkanan]] win the War of the Mark; the [[dragonmarked house]]s are broken and scattered before they ever achieve their current glory, and people with [[aberrant dragonmark]]s thrive. With these changes, modern [[Khorvaire]] would be a very different place. In doing this, the adventurers have dropped a new rat in the maze. This new rat becomes the Prime Material Plane. It snatches the old rat's crown of planes, becoming the reality where all the planes converge and where time moves forward. But the other rat is still out there—forgotten and lost, huddled in a corner, but still alive. And it's possible that if the adventurers return to Xoriat, they could change their mind; they could find their way back to that original rat, returning it to its role as the Prime Material Plane. So Xoriat gives the possibility for dramatic change—but it's always possible to restore a forgotten past.

This view is critical to understanding the [[daelkyr]]. They stand above the maze, but they can also descend into it. They experiment on the rat, changing it. What happens if they make too many changes? It's possible the rat might crawl into a corner to die and a new rat be released: perhaps the old Prime is lost and a new world moves forward. This is what the [[gith]] believe happened with their world. The gith lived on a world that was once the Prime Material Plane. Now it may just be another rat lost and forgotten in the maze. Should the daelkyr rise and complete their work, it's possible the current Eberron could be torn away from the planes; it would still exist, but as a forgotten shadow of the new central reality that takes its place.

If this doesn't entirely make sense, that's appropriate. Most
scholars in [[Khorvaire]] would call this theory madness, and
so Xoriat receives its name. But others might say that this
is in keeping with the myth of the [[Progenitors|Progenitor Dragons]]. [[Irian]] is the
beginning, [[Mabar]] is the end—and Xoriat could be the point
that stands above the journey, the high perch from which the
Progenitors could study their work. Xoriat isn't bound by the
laws that bind the rest of the planes, and it holds all the ideas
that were discarded. Perhaps the [[Sovereigns|Sovereign Host]] didn't entirely
build reality, but rather, they sculpted it—chipping things away
and dropping them into Xoriat.

This is a metaphysical discussion that most adventurers
will never need to worry about. There are three things to
take away from it. Xoriat is a point from which history and
reality itself can be changed. The [[daelkyr]] have changed it
an unknown number of times. And from Xoriat, it's possible
for adventurers to either change it themselves—or to undo
damage they might have done.

!! Denizens

In Xoriat, there are masses of swirling colors, hues never
seen on [[Eberron]]. There are ripples in space that disrupt
time in their wake. There are bursts of powerful emotion
that drift across [[layer]]s. These may well be alive in some
way—but there's no way to communicate with them. This
section discusses some of the creatures most relevant to
adventurers. While the plane might hold other forces that
could be considered alive, their thought processes would
almost certainly be fundamentally inhuman, and they
wouldn't recognize organic beings as life.

!!! The Daelkyr

The [[daelkyr]] came to Eberron to corrupt it and transform its
people, and they crippled the [[Dhakaan]]i Empire before being
bound in [[Khyber]]. Six are known by name, but there are surely
others. They remain trapped in Khyber to this day, waiting
for the chance to rise and finish the work they began... and
perhaps to pave the way for a new reality.

There are no known accounts of mortals traveling to
Xoriat—at least, none who returned—so adventurers who
do so are likely undertaking a historic journey. And in that
journey, they may make a shocking discovery—though the
daelkyr may be bound in Khyber, they are also //still in Xoriat//.
[[Dyrrn]] the Corruptor, [[Valaara]], [[Belashyrra]]—each dwells in
a domain in Xoriat, attended by their servants and their
armies. This ties to Xoriat's uncanny relationship with time.
The daelkyr may be in Xoriat because they haven't left yet,
or they might've already been released from their prisons
and returned to Xoriat. Again, if time is a maze, the daelkyr
stand above it looking down—but at the same time, they are
also running in the maze. They can't return to Eberron now,
because they're already there; but this may be why they seem
unconcerned with their long imprisonment, because they're
also watching it all unfold from above. So adventurers could
interact with any of the daelkyr in Xoriat, but fighting them
there won't impact their actions on Eberron. However, it
could help adventurers learn about the weaknesses of the
daelkyr, or perhaps obtain tools or weapons to use against
them in the future.

!!! Aberrations

The natural inhabitants of the plane are often so alien that
mortals don't even recognize them as living things. Most of
the [[aberration]]s that people are familiar with on [[Eberron]]
aren't creations of Xoriat itself. Rather, the [[daelkyr]], powers
designed to interact with the Material Plane and its mortals,
created these aberrations as their servants, soldiers, and
mementos of past conquests. In Eberron, most daelkyr have
mixed forces; [[mind flayer]]s could be found serving any of the
great lords. In Xoriat, they're more segregated; [[beholder]]s
dwell in the domain of [[Belashyrra]], and [[mind flayer]]s in the
realm of [[Dyrrn]].

What other terrors do the daelkyr have in Xoriat that they've
never unleashed in Eberron? This depends in part on how many
other realities the daelkyr have transformed; the mind flayers
are relics of the destruction of the [[gith]], just as the [[dolgrim]]s
and [[dolgaunt]]s are souvenirs of the downfall of [[Dhakaan]].
While aberrations created by the daelkyr are usually dangerous, there are also aberrations generated by the layers themselves. These planar creatures are alien and disturbing, but aren't threatening unless provoked. A few examples of native aberrations are listed below.

* The //Varr// are kind, generous, telepathic [[halfling]]s. But they're not quite like their Eberron cousins—they have compound eyes, barbed tongues, and they spit acid on food to digest it.
* The //Craiss// are tiny insectoid creatures that inherently know the language of creatures they speak to. They've always had a really bad day and they won't stop complaining about it.
* The //((scent of onions))// is a sentient ooze that can assume a [[humanoid]] shape. It can produce sounds, but communicates with its own kind using smell, touch, and taste.
* The //Cya// are invisible, incorporeal beings who are only able to communicate by animating the reflections of other creatures.
* The //((pleasure of seeing of a familiar friend))// are a race of empathic plants. They communicate not through speech, but through projecting emotions.
* The //Xaelin// appear identical to [[human]]s, except for their smooth, featureless faces without eyes, ears, or nose. They possess [[truesight]] with a range of 60 feet, but can't see, hear, or otherwise perceive anything beyond that range. The Xaelin claim to know nothing about Eberron—but despite this, their customs and fashions emulate cultures from throughout Eberron's history.

!!! Powers of the Void

The [[daelkyr]] aren't the most powerful forces in Xoriat. There
are greater powers in the void, spirits so vast and alien that
they can only be perceived by the ripples they create in reality.
Both the [[Unseen Citadel]] and [[Belashyrra]] are ideas in the mind
of something greater. Do these powers slumber? Do they
consciously adjust the rules of their [[layer]]s? Or are they simply
ideas cast aside by the [[Progenitors|Progenitor Dragons]], models of reality that
were ultimately abandoned? If Xoriat is the realm of discarded
concepts, this could be the drive behind the daelkyr's endless
quest to disfigure—or perfect—reality.

!! Layers

Xoriat is a void lacking not only matter, but also space and time,
and a mortal creature that enters it effectively ceases to exist.
But there are powers in this void, and the layers of Xoriat reflect
their thoughts. Each of the [[daelkyr]] dwells in a layer, the place
that spawned that daelkyr; this layer usually reflects the daelkyr
in tone, and it can use its lair actions anywhere in its layer.
However, not all of Xoriat's layers can support mortal life; there's
a layer where intense gravity crushes any physical creature, and
a layer where all matter is transformed into pure thought.

Adventurers need to find portals to move from [[layer]] to layer. Portals are unique based on the layer's properties of each layer, and using a portal always has a price. Sometimes the price is paid in memories; the DM sets the emotional tone of the memory (joy, sorrow, anger), then each player describes the memory their character has lost. With other portals, the price may be knowledge, but this isn't taken from the adventurers—rather, when they pass through the portal, they learn a secret they might have rather not known.

In exploring the layers of Xoriat, it's important to highlight the fundamentally unnatural flavor of the plane. In addition to the Properties of Xoriat table provided earlier with shifting effects that have an impact on gameplay, the Alien Attributes of Xoriat table below presents examples of cosmetic details that can be distinctive features of a layer. Beyond that, the layers of Xoriat contain revelations; these can be truths about the adventurers that they don't want to know, or secrets about reality itself. This is discussed in more detail in the section on Xorian Artifacts.

<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>

| !<<dr d12>> |!Alien Attributes of Xoriat |
| 1 |[[Undead|undead]] creatures are considered living creatures, and living creatures are considered to be undead. |
| 2 |You can tell time by the shifting focus of gravity. If you're walking on the ceiling, it's midday. By evening you'll be back on the ground. |
| 3 |Everything in this layer—food, buildings, even the air itself—is alive. |
| 4 |There's no sound in this layer, but speech manifests as glowing words that circle the speaker. Music and verbal spell components manifest as patterns of light. |
| 5 |Any attack or effect that normally deals damage instead restores health; anything that would normally restore hit points deals necrotic damage instead. |
| 6 |This layer is filled with bright light, but all light sources work in reverse. Any light source that would usually create bright light instead creates darkness, and anything that would usually create dim light instead reduces the light level to dim light. |
| 7 |While within this layer, creatures lose their sense of sight, but aren't considered blinded, as they can perceive their surroundings through heightened senses of smell and taste. |
| 8 |The layer is a series of floating platforms. Rivers flow through empty air. |
| 9 |The inorganic matter of this realm—including all buildings and tools—is invisible. |
| 10 |There are many reflective surfaces, but the reflections don't match the actions of the creatures shown in them. |
| 11 |Instead of soil, the surface of the land is made of chitin. The chittering of insects fills the air. |
| 12 |Rivers and pools are made of living protoplasm, which reaches out toward passersby. |

!!! Other Layers

Every daelkyr has a home layer, but there are endless layers of
Xoriat, each reflecting a discarded idea or a maddening truth.
Consider the following examples.

//''A House Built from Hate.''// Each character sees the house's
form slightly differently, but they all feel the hate in the walls.
Mirrors reflect images of things the viewer hates, and books in
the house chronicle the hateful deeds committed by everyone
the adventurers know—including each other. The longer the
adventurers stay in the houses, the easier it becomes to hate
each other... or themselves.

//''Empty White Space.''// There's seemingly no end to this
endless void of bleak solitude. To proceed, the characters must
act out their travel—pretending to travel just as they pretend
there is meaning in their lives. If they can keep up the charade,
the world they imagine will take shape around them.

//''A Lush Orchard.''// The trees grow secrets, while more
buzz around in the air like tiny birds. Some of them may be
secrets of the adventurers, or those of their enemies. Others
are secrets of strangers and secrets about reality. Do the
adventurers block their ears, or do they try to listen?

!! Planar Manifestations

The [[seals|dimensional seal]] of the [[Gatekeepers]] block travel to Xoriat, but there
are still many ways the Realm of Madness can affect the world.

!!! Manifest Zones

Manifest zones tied to Xoriat are common in the [[Shadow Marches]], but rare elsewhere. The effects of a Xorian manifest zone are rarely as dramatic as the alien attributes of the plane itself. However, manifest zones may convey one or more of
the universal properties of the plane. The most common is
the //Dangerous Revelations// property. People who linger in
a Xorian zone often find alien concepts creeping into their
brains, instilling strange beliefs, or twisting their sense of
reality. These zones can easily produce [[Cults of the Dragon Below]]; in the Shadow Marches, the Gatekeepers struggle
to keep people out of these zones, while Marcher cultists
consider them to be sacred sites.

//Unpredictable Magic// is another common property; such
zones often have unnatural flora or fauna, but these effects are
unreliable and change with each generation. The properties
of //Time Is an Illusion// and //Strange Reality// are rare in manifest
zones, and may not be active all the time; these effects might
only become active when [[Lharvion]] is full, or when disturbing
rituals are performed.

!!! Coterminous and Remote

The last time Xoriat was coterminous, the [[daelkyr]] brought their
armies through the walls of reality and laid waste to the Empire
of [[Dhakaan]]. The seals crafted long ago by the [[Gatekeeper|Gatekeepers]] [[druid]]s
keep the daelkyr bound in [[Khyber]], but they also keep Xoriat from
becoming coterminous. Xoriat's remote phases have no known
effect, and like [[Kythri]], they're unpredictable, though the phases
tend to come and go far more slowly than Kythri's do. There are
no recorded instances of citizens of the [[Five Nations]] visiting Xoriat; most scholars believe that the Gatekeeper seals prevent all planar travel... though someone may have secretly built an [[eldritch machine]] in a [[manifest zone]], perhaps incorporating
[[illithid|mind flayer]] brains or the position of the moon [[Lharvion]]. What would
happen if the adventurers stumbled on a cult of the Dragon Below just as the cult completes its sinister rituals?

!!! Xorian Artifacts

The most common artifacts of Xoriat are the [[symbiont]] items
created by the [[daelkyr]]. However, adventurers could
stumble on artifacts brought to [[Eberron]] by the daelkyr in their
great incursion—or relics even more ancient. One effect of
Xorian items could be to twist time. On a minor level, this could
explain the powers of a [[cloak of displacement]]; it always shows
you a few seconds ahead of your current position. A more
powerful artifact could allow travel through time, or reset time
in a small region. Does the time tunnel allow a return trip, or
are those who use it trapped on the other side?

Xoriat is also known for granting maddening knowledge
and physical transformation. Here are a few examples: 

* The character's blood is replaced with a sentient protoplasm that whispers to them while they sleep. The character heals from injuries twice as fast.
* The character gains +1 to the Study action, but they also learn that any time they cast a [[spell]], something dies. When they cast a cantrip, it might be a rodent or a bird. The more powerful the spell, the more significant the death. The caster will likely never see this effect occur, but they know that someone somewhere is paying the price for their magic... and worse, this might be true of all spellcasters.
* The character gains the ability to summon spirit warriors to fight with them every seven days. The spirit warriors summoned are friends of the caster, plucked from the future; the character may not have met all of them yet, but they're people who the character knows or will know. They're returned to the future in an hour or when they are incapacitated... in which case they may die upon being returned to their own time.

!! Xorian Stories

The seals of the [[Gatekeepers]] make Xoriat one of the more
difficult planes for adventurers to reach. However, a trip to
Xoriat would be a revelatory adventure. Interactions with
the denizens of Xoriat are largely limited to the [[Cults of the Dragon Below]] and the servants of the [[daelkyr]]. However, there are a few ways the plane could spawn adventures.

//''Planar Patron.''// A [[warlock]] could say that their patron isn't simply a [[daelkyr]]; rather, it's one of the Powers of the Void within Xoriat itself. Such contact
is unprecedented—what is the nature of this connection? It
may be that the Power doesn't converse with the warlock,
but rather downloads knowledge directly into its mind. A
disturbing possibility is that the warlock isn't supposed to
be receiving this information; the knowledge stream could
be intended for a powerful [[mind flayer]], but the warlock has
become linked to this psychic channel. This could provide
information about the plans of the illithid's cult, but can the
warlock do anything about it?

//''A Glimpse of the Future.''// When the adventurers interfere
with a ritual of a [[cult of the Dragon Below|Cults of the Dragon Below]], they find
themselves three years in the future... and something has
gone terribly wrong. Perhaps the [[Mourning]] has spread and
consumed [[Breland]]. Maybe the [[overlord]] [[Sul Khatesh]] has
broken her bonds; under her rule, the warlock-knights of
[[Aundair]] are conquering the [[Five Nations]]. The adventurers
must find a way back to their own time—after they learn how
to keep this future from coming to pass.

//''Whispers in the Woods.''// While the adventurers are in a
Xorian [[manifest zone]] fighting a cult of the Dragon Below, one
of the characters receives a revelation: [[Merrix d'Cannith]] will
destroy the world in two years. Does it provide any additional
information or just this one absolute fact? The character knows
that this is the truth... but is this an actual glimpse of the
future, or is it luring the character down a dark path?
Yoren d'Ghallanda is the baron of House [[Ghallanda]]. He has delegated
responsibility for the [[Hostelers|Hostelers Guild]] and [[Dragontail|Dragontail Guild]] guilds
to regional councils of viceroys, and he spends much
of his time on diplomatic missions to ensure the
continued independence of the Ghallanda [[enclave]]s.
An elderly [[halfling]], Yoren is increasingly interested
in the [[Draconic Prophecy]] and has given one of his
trusted heirs, [[Chervina|Chervina d'Ghallanda]], free rein to establish new
enclaves in accordance with the Prophecy.
Yrlag is a large town on the shores of the [[Grithic River]] in the [[Shadow Marches]]. It regularly provides supplies to the [[Tharashk]] port town of [[Blood Crescent]] across [[Crescent Bay]] in the [[Demon Wastes]]. 

Yrlag is home to a small community of [[forlarren]] that were cast out from the nearby [[Twilight Demesne]] in the [[Towering Wood]].
The [[oni]] [[sorcerer]] Yrnuxi is the actual power in [[Mokush]]; she and a small subsection of the village are members of the [[Horned Shadow]].
She masquerades as the [[Chosen]] lady [[Galshani]], who
seems to be a healthier and more spry of late, despite
her advancing years. The real Galshani spends a lot of
time sleeping, and is under Yrnuxi's power, but not in
such a way that the oni could easily be given away
if Galshani were to be possessed by a [[quori]] (which hasn't
happened in over a decade). Most of Mokush's [[ogre]]s know
Yrnuxi as a harsh and influential reeve, unusual for an
ogre mage, and nothing more.
//The priestess is a tall, stern woman who wears full plate armor as part of her mostly ceremonial vestments. Her silvery-gray hair surrounds an unlined face and her eyes still shine bright with the zeal of youth.//

The Archierophant of [[Sharn]] and the surrounding region, Ythana Morr leads extravagant [[Silver Flame]] services at the [[Cathedral of the Cleansing Flame]]. While many of her clergy and staff simply covet privilege, power, and material wealth, Ythana actively fosters the corruption of her diocese. She secretly cooperates with the [[rakshasa]] [[Zathara]], who lives in the [[Cogs]] district of [[Khyber's Gate]].
Yuan-ti are devious [[psionic|psionics]] serpent folk devoid of compassion. A yuan-ti views the world and the events of its own life with such extreme pragmatism that it is nearly impossible to manipulate, influence, or control by nonmagical means, even as it seeks to control other creatures through terror, pleasure, and awe.

No two yuan-ti look exactly the same. Both the snakelike and the humanlike portions of a yuan-ti's anatomy exhibit a wide variety of shapes and colorations. Because a yuan-ti's appearance is mostly inherited, in small settlements all the yuan-ti look somewhat alike, while larger settlements see more intermixing, which produces a wider range of results.

The yuan-ti arose in [[Sarlona]], rising from the blasted ruins of once-great [[Khunan]] and naming their new land "[[Syrkarn]]". Some sages posit that the creation of the yuan-ti was tied to the near-release of a bound [[overlord]] in Syrkarn over twelve hundred years ago. However, the supposition that the yuan-ti might be [[shulassakar]] tainted by exposure to [[fiend]]ish magic remains little more than a guess.

Driven from [[Sarlona]] by the [[Inspired]] during the [[Sundering]], the yuan-ti were given shelter in [[Argonnessen]]. There, some took up residence in the city [[Io'vakas]], where at least one sect began practicing forbidden [[arcane arts|arcane magic]], and claimed direct worship of the [[Dragon|dragon]] Gods of [[Thir]] for themselves. When the dragons discovered this blasphemy, they razed the city and killed nearly the entire population. They continue to hunt the yuan-ti on the shores of Argonnessen to this day.

The surviving yuan-ti exiles escaped to the continent of [[Xen'drik]]. Deep in the jungles, they worship the [[Devourer]] in the form of a great serpent that will one day consume the world, and perform arcane experiments on kidnapped travelers.

!! Types of Yuan-ti

<<list-links-article "[tag{!!title}sort[title]]">>
Monstrous serpents with burly [[humanoid]] torsos and arms, abominations form the highest caste of [[yuan-ti]] society. They mastermind elaborate schemes and perform dark rites in the hope of one day ruling the world.

Abominations can shapeshift into snakes at will, and are able to communicate with snakes freely. Some abominations are able to secrete an acidic slime, camouflage themselves with chameleon-like skin, shed their skin to avoid being restrained, [[polymorph]] their enemies into snakes, or other unique mutations.

<<<
''Generate Abomination Appearance''

<$button>
<$action-chooserandom $dataTiddler="$:/YTSnakeBodyShape" $field="y_sbshape2"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc7"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp7"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue7"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye7"/>
<$action-chooserandom $dataTiddler="$:/YTHeadShape" $field="y_headshape2"/>
Generate
</$button>

''Abomination:'' The yuan-ti is a monstrous {{!!y_sbshape2}} serpent with a burly humanoid torso and arms and a {{!!y_headshape2}} head. It has {{!!y_sp7}} {{!!y_sc7}} scales, {{!!y_eye7}} serpentine eyes and {{!!y_tongue7}} forked tongue.
<<<
A [[yuan-ti]] malison is a hideous blend of human and serpentine features. Five different types of malisons are known to exist, and other types are possible. Malisons form the middle caste of yuan-ti society and hunt with arrows tipped with their own venom. They use their magical powers of suggestion to force their enemies' surrender.

Malisons can shapeshift into snakes at will, and are able to communicate with snakes freely. Some malisons are able to secrete an acidic slime, camouflage themselves with chameleon-like skin, shed their skin to avoid being restrained, [[polymorph]] their enemies into snakes, or other unique mutations.

<<<
''Generate Malison Appearance''

Choose malison type: <$select tiddler="$:/config/YTMalisonType" default=""><$list filter="[range[5]]" variable="type"><option value=<<type>>>Type <$text text=<<type>>/></option></$list></$select>

<$reveal type="match" state="$:/config/YTMalisonType" text="1">

<$button>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc2"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp2"/>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin2"/>
<$action-chooserandom $dataTiddler="$:/YTHeadShape" $field="y_headshape1"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye2"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue2"/>
Generate
</$button>

''Malison Type 1:'' The yuan-ti has the body of a human with {{!!y_hskin2}} skin, and the {{!!y_headshape1}} head of a snake with {{!!y_sp2}} {{!!y_sc2}} scales. The creature's serpentine eyes are {{!!y_eye2}}, and it has {{!!y_tongue2}} forked tongue.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="2">

<$button>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin3"/><$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue3"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye3"/>
<$action-chooserandom $dataTiddler="$:/YT2Arms" $field="y_2arm1"/>
<$action-chooserandom $dataTiddler="$:/YT2Arms" $field="y_2arm2"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc3"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp3"/>
Generate
</$button>

''Malison Type 2:'' The yuan-ti has the head and body of a human with {{!!y_hskin3}} skin, {{!!y_eye3}} eyes, and {{!!y_tongue3}} tongue, but its arms are serpentine. <$list filter="[[Yuan-ti]!y_2arm1{Yuan-ti!!y_2arm2}]" emptyMessage="Each of the arms is" variable="noop">The left arm is a {{!!y_2arm1}}, and the right is</$list> a {{!!y_2arm2}}. The arms have {{!!y_sp3}} {{!!y_sc3}} scales.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="3">

<$button>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc4"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp4"/>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin4"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye4"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue4"/>
<$action-chooserandom $dataTiddler="$:/YTSnakeBodyShape" $field="y_sbshape1"/>
Generate
</$button>

''Malison Type 3:'' The yuan-ti has the head and upper body of a human with {{!!y_hskin4}} skin, {{!!y_eye4}} eyes, and {{!!y_tongue4}} tongue, but from the waist down, the creature has a {{!!y_sbshape1}} serpentine body with {{!!y_sp4}} {{!!y_sc4}} scales.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="4">

<$button>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin5"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc5"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp5"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue5"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye5"/>
<$action-chooserandom $dataTiddler="$:/YT4LowerBody" $field="y_4lb"/>
Generate
</$button>

''Malison Type 4:'' The yuan-ti looks nearly entirely human in form, with humanoid arms and legs, {{!!y_hskin5}} skin, {{!!y_eye5}} eyes, and {{!!y_tongue5}} tongue, but it has {{!!y_4lb}} with {{!!y_sp5}} {{!!y_sc5}} scales.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="5">

<$button>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc6"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp6"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue6"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye6"/>
Generate
</$button>

''Malison Type 5:'' The yuan-ti would closely resemble a human if it weren't covered in {{!!y_sp6}} {{!!y_sc6}} scales. The creature also has {{!!y_eye6}} eyes and {{!!y_tongue6}} tongue.
</$reveal>
<<<
Purebloods form the lowest caste of [[yuan-ti]] society. They closely resemble humans, yet a pureblood can't pass for human under close scrutiny because there's always some hint of its true nature, such as scaly patches of skin, serpentine eyes, pointed teeth, or a forked tongue. Wearing cloaks and cowls, they masquerade as humans and infiltrate civilized lands to gather information, kidnap prisoners for interrogation and sacrifice, and trade with anyone who has something that can further their myriad plots.

Purebloods are able to communicate with snakes at will, and many are capable of casting [[suggestion]] up to three times per day.

<<<
''Generate Pureblood Appearance''

<$button>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin1"/><$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue1"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye1"/>
<$action-chooserandom $filter="[range[6]]" $field="y_pure" $number="2" $opt="none"/>
<$action-chooserandom $filter="[range[7]]" $field="y_puredouble"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc1"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp1"/>
Generate
</$button>

''Pureblood:'' The yuan-ti closely resembles a human with {{!!y_hskin1}} skin, {{!!y_tongue1}} <$list filter="[all[current]get[y_pure]split[ ]nth[1]search[2]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[2]]" variable="noop">forked </$list>tongue<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[1]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[1]]" variable="noop"> behind snakelike fangs</$list>, and <$list filter="[all[current]get[y_pure]split[ ]nth[1]search[3]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[3]]" variable="noop">serpentine </$list>{{!!y_eye1}} eyes. <$list filter="[subfilter{!!y_pure_scaly}nth[1]]" variable="noop">Despite otherwise smooth human-like skin, the yuan-ti also has patches of {{!!y_sp1}} {{!!y_sc1}} scales on its<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[5]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[5]]" variable="noop"> face<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[4]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[4]]" variable="noop">,</$list><$list filter="[all[current]get[y_pure]split[ ]nth[1]search[6]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[6]]" variable="noop"> and</$list></$list><$list filter="[all[current]get[y_pure]split[ ]nth[1]search[6]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[6]]" variable="noop"> torso<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[4]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[4]]" variable="noop">,</$list></$list><$list filter="[all[current]get[y_pure]split[ ]nth[1]search[4]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[4]]" emptyMessage="." variable="noop"> arms and hands.</$list></$list>

<<<
Yugoloths are fickle [[fiend]]s native to [[Mabar]], the Endless Night. They are embodiments of hunger, despair, and death, and lie somewhere between [[demon]]s and [[devil]]s in temperament; unlike demons, yugoloths can be reasoned with, but unlike devils, they are rarely true to their word. A yugoloth army is more organized than a ravening horde of demons, but far less orderly and regimented than a legion of devils.

Yugoloths dwell in the layers of [[Mabar]] tormenting the inhabitants of the planar fragments of the [[Hinterlands]] or cultivating the [[shadow]]s of mortals, driving them down dark paths.

According to a legend known only to those deeply acquainted with dark arcana, a coven of [[night hag]]s created four magic tomes called the //Books of Keeping// and recorded the true names of nearly every yugoloth in existence. Knowing a yugoloth's true name grants complete power over it, and the hags used the books to summon the fiends and ensure their loyalty. But this sisterhood of hags eventually dissolved over endless bickering and jealousies, and the //Books of Keeping// were lost or stolen. 

!! Types of Yugoloth

<<list-links-article "[tag{!!title}sort[title]]">>
Yuzdeep is the youngest son of [[Raadu|Raadu Xeel]] and the only surviving member of the Xeel family since its exile from [[Kasshta Keep]] and all of [[Adar]]'s monastery-fortresses.
An [[Endseeker|Endseekers]] cult raised Yuzdeep from a young age.
Thoroughly indoctrinated, Yuzdeep has a deep hatred
for the monastic orders of [[Adar]] and for [[Riedrans]]. He is a psychopath who wants nothing more than to see the word returned to its primordial state, but his plotting
is careful, and he works to remain unknown or to seem
friendly. Currently, he and his followers have designs on
the chaotic scar of [[Uutkleza]], but Yuzdeep hopes to find
the key to awakening [[Ran Iishiv]]. The calculating [[warlock]] has already uncovered hints at the true
contents of [[Korrandar]].

Yuzdeep's followers and cohorts include powerful [[fiend]] binders and [[sorcerer]]s, and form a fanatical inner circle of his Endseeker cult. 
Zaeurl is an [[elven|elf]] [[werewolf|lycanthrope]] and leader and founder of the [[Dark Pack]], the alliance of [[lycanthrope]]s in [[Droaam]]. She was a survivor of the [[Silver Crusade]] over 160 years ago, in which she witnessed the massacre of her own family at the hands of templars of the [[Silver Flame]]. She spent more than a century seeking revenge, hunting down and killing templars and friars, before retreating to the [[Watching Wood]] in what is now [[Droaam]] and founding the [[Dark Pack]]. When the [[Daughters of Sora Kell]] came to power, they granted Zaeurl the status of [[warlord]]. Zaeurl is fiercely loyal to the Daughters.
! The Storm

''Color:'' Pearly white<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Storm|Mark of Storm]]<br/>
''Associated Plane:'' [[Kythri]]

Zarantyr is the closest moon to Eberron, and it has the greatest effect on the planet's tides. Superstition holds that there is a far greater chance of being struck by lightning when Zarantyr is full, and that bolts can fall from a clear sky. According to some [[druid]]s, those born in the month of Zarantyr have a wild and tempestuous nature. Sometimes this translates to aggression, but it can also manifest as pure, unbridled energy; barbarians and [[sorcerer]]s may feel a bond with the Storm moon.
The Zarash Bay lies off the coast of the [[Shadow Marches]], and is fed by the [[Glum River]]. Any traveler entering [[Zarash'ak]] must pass through this bay.
Zarash’ak is the only city of any size in the [[Shadow Marches]] (population 29,800), and its existence is a recent development. Because overland travel through [[Droaam]] or the [[Eldeen Reaches]] can be extremely dangerous, most people who
need to do business in the [[Marches|Shadow Marches]] travel by ship to the
port city of Zarash'ak. Built on stilts and known for its
cuisine and music, Zarash'ak offers the rare exports of
the land without the difficulty of navigating the swamps.
Ocean-going vessels anchor in the [[Zarash Bay]], sending trade
goods up the [[Glum River]] on skiffs and barges, then awaiting the
return of [[dragonshard]] shipments the same way.

House [[Tharashk]] oversees the City of Stilts, but Marcher
clans and tribes come here to sell crafts and other goods
or to celebrate religious rituals. 

!! History of Zarash'ak

No [[lightning rail]] crosses the [[Shadow Marches]], and
House [[Orien]] won’t risk its caravans in the treacherous marshlands. No trade roads connect the
scattered villages. For generations, the Marcher
clans were virtually independent kingdoms, battling
all challengers to maintain their dominions in the
darkness.

This situation changed with the rise of House
[[Tharashk]] and the demand for [[dragonshard]]s. [[Galifar]]’s hunger for the mystic crystals was a source of wealth and influence for the heirs of Tharashk,
provided they could process the crystals and move
them to the markets of the east. The three dominant
Tharashk clans were quick to establish refineries, but
their ancestral homes were too deep in the Marches
to facilitate easy trade with Galifar. The leaders of
the clans came together to build the largest city
the Marches had ever seen—a port that could carry
shards and services to the wider world.

It proved impossible to erect a city on the shores of the [[Zarash Bay]], so architects made their way up the [[Glum River]] until they found a region that was stable enough. Even then, building the port was no simple task. The Glum is unpredictable and prone to floods, and the only way to secure a foundation was to raise the city above the river. This style of building is common throughout the Marches, but no construction on this scale had ever been attempted. The creation of Zarash’ak took a decade and the
resources of all three great clans. The [[Torrn]] [[druid]]s raised mighty murk oaks from the depths of the Glum. Aided by the brute strength of [[Aashta]] laborers, clever [[Velderan]] architects built a foundation of interlocking platforms using the trees as supports. Additional piles and pillars were dropped into the Glum, and in time Zarash’ak was born.

Today Zarash’ak is known across [[Khorvaire]] as
the seat of House [[Tharashk]] and the gateway to the
[[Shadow Marches]]. Those who wish to deal with the
leadership of the House of [[Finding|Mark of Finding]] or venture into the
depths of the Marches likely find their way to the City
of Stilts.

!! Traveling to Zarash'ak

No secure overland route to Zarash’ak exists. In
recent years House [[Lyrandar]] has established an [[airship]] docking tower in the City of Stilts, and airships
remain the swiftest and safest way to reach Zarash’ak.
However, many captains refuse to risk their vessels in
the skies of [[Droaam]] or the wild [[Marches|Shadow Marches]]. As a result,
most visitors come to Zarash’ak across the water,
laying anchor in [[Zarash Bay]] and taking ferries up the
[[Glum River]]. Typically, the journey costs 1c per
traveler, but no standards are enforced; ferry operators might charge more for wealthy passengers. The threat of [[Tharashk]] bounty hunters generally deters
piracy along the Glum, but the river’s dangers include [[chuul]]s, mad cultists, and strange horrors of the [[daelkyr]] that have risen from the depths.

Rope ladders and lifts carry new arrivals from
the Glum to the platforms of Zarash’ak. [[Tharashk]]
recently installed a single levitating lift for the
heaviest loads, but most of the cranes and elevators
are powered by [[orc]] muscle or [[ogre]] laborers from
[[Droaam]].

The primary docks are beneath the [[Heart]], the
original core of the city. Those who enter through
the docks are evaluated by the Liondrake guards of
House [[Tharashk]]. These minders care little for identification papers or nationality, but they have a good nose for visitors with trouble on their minds, and a person who offends the Liondrakes might be pushed off a platform into the river. The easiest way to avoid
the scrutiny of the guards is to arrive in the company
of a Tharashk heir who can dismiss them. Another
option is to work with the heirs of Clan [[Orgaal]], who
bring goods into Zarash’ak on the wings of [[wyvern]]s.
An Orgaal camp sits north of Zarash’ak, and sufficient gold or other interesting offers can purchase a means of entry into the City of Stilts.

!! The Sights and Smells of Zarash'ak

Citizens of the [[Five Nations]] often find their first visit
to Zarash’ak a disturbing experience. The stench
of the city’s waste mixes with the naturally foul
waters of the [[Glum|Glum River]], and Marchers have different
attitudes toward body odor than do the people of the
east. These factors inspired the poet [[Kessler]] to call
Zarash’ak “the city of a thousand stinks.” Amid the
squalor, the magic of the [[Torrn]] [[druid]]s ensures that
the residents have pure water for drinking.

* the [[Heart]]
* the [[Ring]]
* the [[Webs]]

The City of Stilts has no streets as such, and directions are typically based on the names of buildings, the presence of certain people, or strong scents. For
example, a traveler might be told to “follow the scent of the midden heap on the North Ring, and look for Torgaan’s black door.”

!! Life in the City of Stilts

For a city of its small size, Zarash’ak is a thriving
community. In addition to the blood heirs of [[Tharashk]], the City of Stilts draws people from across the
[[Marches|Shadow Marches]]. Despite Tharashk’s growing influence, most
of the [[dragonmarked house]]s prefer to deal with the
[[Finder's Guild]] in a more stable location, and many of
the services that travelers are accustomed to buying
from the dragonmarked must be purchased through
locals. A single [[Sivis]] [[message station|speaking stone]] exists in the
[[Heart]], along with the [[Lyrandar]] Tower and a lone
[[Gold Dragon Inn]]; healing services are provided by
leech-wielding novice [[druid]]s instead of the heirs of
House [[Jorasco]].

The [[Shadow Marches]] aren’t a recognized nation.
The Marches didn’t sign the [[Treaty of Thronehold]]
and aren’t bound by the Code of [[Galifar]]. What order
exists is imposed by House [[Tharashk]]; enforcement
and execution are in the hands of the elite Liondrake
soldiers and [[inquisitive]]s. Crimes that occur outside
the [[Heart]] are largely ignored unless they threaten
the house or the city, but anyone who tries to rob the
[[Velderan]] vaults or disrupt the [[Sivis]] [[message station|speaking stone]]
is hunted down with ruthless efficiency. In general, Marchers are expected to handle their own problems, whether that means defending themselves, hiring [[ogre]]s as guards, or having a clan of vengeful relatives willing to pursue offenders.

[[Human|human]]s, [[orc]]s, and [[half-orc]]s make up the bulk of
the population in Zarash’ak. A few hundred [[goblin]]s
live in the [[Webs]], along with a number of [[gnome]]s,
[[halfling]]s, and [[half-elves|half-elf]]. Traffic with [[Droaam]] has
brought monstrous creatures to the city; [[ogre]]s and
[[gargoyle]]s work across Zarash’ak, and each of the
[[Tharashk triumvirs|Tharash triumvirate]] has a [[medusa]] bodyguard. The
Common tongue remains the standard language
in the [[Heart]], but many in the [[Ring]] and the [[Webs]] speak only Goblin. A significant number of residents speak a language they call Azhani, a blend of the Old Common of [[Sarlona]] and Goblin. People who speak Riedran or Goblin can communicate with those who speak Azhani, but nuances can be lost.

Traffic with the east has brought the coins of
[[Galifar]] and [[Riedra]] to the city, and they are used
interchangeably in Zarash’ak. Some merchants prefer
to barter for goods, and many citizens use raw [[dragonshard]] crystals as a form of currency.

!! Forces to be Reckoned With

The greatest power in Zarash’ak is House [[Tharashk]].
The house is divided into a number of factions, each
with its own interests, and the Liondrakes are a proud
unit that often pursues its own goals.

* The [[Cults of the Dragon Below]] are driven by wildly divergent agendas. 
** [[Aashta]] cultists
** the [[Family Finch]]
** the [[Vigilant Eye]]
** [[Jhugaar]]
* The [[Gatekeepers]] have strong ties to Clan [[Torrn]] of [[Tharashk]], and Torrn employs [[primal magic]] to sustain the city. 
* The scheming Clan [[Orgaal]] is a branch of the ambitious ruling Clan [[Velderan]].
* House [[Deneith]] has no strong presence in Zarash'ak, but a rivalry is growing between the Sentinels and the Finders.
* Lord [[Toka Threefangs]], ambassador of the [[warlord]] [[Kethelrax the Cunning]].
* The [[Riedra]]n outpost in the [[Heart]]. Is Ambassador Sosharani an agent of the [[Dreaming Dark]]?
Zertherun IV is one of the monastery vessels of the [[githzerai|gith]], floating in the [[Sea of Chaos]] in [[Kythri]].
It's under the guidance of the Serene Azera, whose mental
discipline maintains the stability of the ship. The Alazerth
Elemon is a senior monk charged with dealing with outsiders,
which is sometimes a matter of diplomatic negotiations, and
other times, rallying zerths (monks who exemplify the teachings of Zerthimon) to defend the vessel from attack. Like most githzerai, Elemon isn't inherently hostile toward
outsiders, but has no great love for them; his reaction is
based entirely on the actions and approach of the visitors.

[[Kythri]]'s //Broken Rhythms// property doesn't apply in a githzerai monastery, and while //Constant Change// exists, its effects are minimized. Zertherun IV maintains
capacitors for change, such as gardens of small stones and
engraved wheels with shifting patterns, which absorb the
energies of change and prevent it from transforming the vessel.
Zhrenir'rynai, the "Flowing Lakes", is a chain of three massive lakes connected by rivers in the heart of [[Argonnessen]]. The body of water forms a natural barrier between the [[Vast]], the [[Light of Siberys]], and the [[Thousand]].
Under [[Malshashar]] in [[Adar]], [[dromite]]s have lived for millennia—their ancient city-hive Zi'til'natek is often thought to be the cradle of dromite civilization in [[Sarlona]]. Deep in its halls, the dromites hide from the [[Inspired]] and aid the [[Adarans]],
though it was not always so. Dromites have battled humans
for much of Sarlona's tumultuous history, and it was only
through the intervention of the [[kalashtar]] that the dromites
of Zi'til'natek came to work with Adarans. Now the [[Summit Road]] operates through Zi'til'natek and many goods reach [[Adar]] that would otherwise be impossible to get. The city is a center of trade, but it is only accessible through [[psionic|psionics]] portals or the deep caverns under Malshashar. Should [[Riedra]] ever threaten Malshashar, the dromites of Zi'til'natek would provide a considerable reserve force. Even so, some dromites
within the city-hive harbor their race's traditional grudge
against surface dwellers. 
The Ziggurat of the [[Twelve]] is a
mighty floating citadel in [[Korth]], casting its shadow over the Commerce ward's Wollvern Park below. The fortress has thirteen tiers,
one for each of the [[dragonmark]]s. The highest tier is
empty, set aside to honor the lost [[Mark of Death]].
''Capital:'' [[Trolanport]]<br/>
''Hallmarks:'' Alchemy, education, [[elemental]] binding, entertainment, gnomes, precious stones 

At first glance, the homeland of the [[gnome]]s appears
to be a paradise. City streets are bright and clean, the
universities and libraries are the finest in [[Khorvaire]],
everyone seems happy and helpful, and crime is all but
unheard of. But Zil society teems with layers of intrigue
and blackmail invisible to human eyes. The [[Trust]],
a ruthless secret police force, eliminates any threat
to society.

Zilargo isn't a tyranny. Each major city has a democratically elected ruling council and a seat on the [[Triumvirate]] that governs the nation; the [[Trust]] reports to
the Triumvirate. The Zil [[gnome]]s built this system, and they are quite happy with it. Their streets are safe, and as long as you play by the rules of the game, the Trust ignores you. Outsiders find this casual acceptance of preemptive assassination to be terrifying, but the Zil genuinely trust the Trust. 

Zil [[gnome]]s live within a web of intrigues. The [[Trust]]
condones their actions, as long as they break no laws
and don't threaten the state or the status quo. A gnome
charlatan can connive to steal a jewel mine from another gnome—as long as the charlatan accomplishes the deed through cunning, negotiation, or deception rather
than violence or outright theft, and as long as the mine
stays in Zil hands. The same applies to adventurers
planning schemes in Zilargo. Violence draws attention
and deadly consequences from the Trust, but intrigue is
perfectly acceptable.

The [[Trust]] is a network of spies and assassins. Most
agents of the Trust simply pass information through
dead drops; some estimate that a third of the nation
works for the Trust in this capacity. When the Trust
identifies a threat, it acts preemptively. Trust agents
prefer to solve a problem without violence—by sharing a
piece of information or a whispered warning sent via a
message spell. But the Trust won't hesitate to eliminate
a threat, whether with [[poison]], [[spell]], or blade. Typically,
a target never sees the agent of their demise. 

!! Interesting Things About {{!!article}}{{!!title}}

* Most consider the [[Library of Korranberg]] the finest repository of knowledge in [[Khorvaire]].
* The [[Korranberg Chronicle]] is the leading source of news in Khorvaire. Gnome chroniclers travel across Khorvaire in search of stories.
* The major cities of Zilargo maintain temples and shrines dedicated to every religion. Most Zil explore a few faiths before settling on one; others practice multiple religions. 

!! Zil Characters

As you develop a Zil character, consider the following factors: 

* ''Family Ties.'' In a nation shaped by intrigue, you need someone you can rely on. For the Zil, that's family. Unless you're an orphan, discuss your family with your DM. What's their business? Who's your favorite relative? Are you currently involved in any family schemes? Family members might call on you for help over the course of your adventurers, but they can also be a resource for you.
* ''Knowledge and Power.'' The Zil prize knowledge above all else. Sage is a suitable background for any Zil; charlatan and spy are also appropriate, reflecting their love of intrigue. Classes that specialize in melee combat are rare among the Zil. The soldiers of Zilargo include rogues, [[bard]]s, [[wizard]]s, and [[artificer]]s.
* ''The Trust.'' In creating a Zil character, consider whether you have any ties to the [[Trust]]. A vast number of [[gnome]]s serve as the eyes and ears of the Trust, reporting interesting information to a Trust handler. As an active agent, you could receive missions tied to your current adventures. If you and your companions are fighting the [[Emerald Claw]], you might have a secondary assignment to eliminate a specific Claw agent or acquire a particular object from their base. While the spy background is a logical choice for a Trust agent, the agency recruits characters of every class and background. Your class abilities reflect specialized training and granted abilities—the magical equivalent of spy gadgets! 

!! Cities and Sites

The [[gnome]]s of Zilargo place a high value on appearances. They design beauty into their architecture,
featuring delicate carvings, elaborate railings and balconies, and lavish gardens. Every community contains
murals and statues scattered throughout. Most fixtures
and buildings are designed for those of small stature,
but buildings constructed for taller folk also exist. The
Zil have a talent for [[illusion]] and for binding [[elemental]]s,
and they incorporate both of these forms of magic into
everyday life. 

!!! Cities

<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>

!!! Towns

<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!!! Other Sites

<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>

!! Aftermath of the Last War

Walking the streets of [[Korranberg]], one might never
know that the war occurred. Zilargo avoided most of
the violence of the [[Last War]], and cosmetic magic and
[[illusion]]s were employed to repair the few cities that
suffered damage. Many Zil prefer to ignore the war completely, referring to it as "that unpleasantness to the north." Nonetheless, Zilargo was a staunch ally of
[[Breland]] during the war, providing the nation with ships,
intelligence, and [[elemental]] weaponry. This aid left the
nation with enemies. The Order of the [[Emerald Claw]]
has launched attacks on Zil communities, and certain
cells of Breland's [[Swords of Liberty]] accuse the Zil of
manipulating [[Breland]]. The [[Trust]] has contained these
attacks, but it always anticipates more trouble ahead.

The jewel miners of eastern Zilargo often clash with
the [[goblin]]s of [[Darguun]] and the [[kobold]]s that live in [[Seawall Mountains]]. These skirmishes could expand into
wider conflicts.

Overall, however, little has changed in Zilargo because the [[Trust]] keeps the nation on a steady path. Adventurers who travel through Zilargo would be wise to
avoid causing trouble or drawing the Trust's attention. 
The [[Zilargo]] embassy in [[Sharn]] was built long before the [[Last War]], to facilitate trade between Zilargo and [[Galifar]].
Zilargo remained one of [[Breland]]’s closest allies
throughout the [[Last War]], and that alliance is still
strong today. Zil [[artificer]]s and engineers produce
many of their wares in the great factories of Breland,
and the Brelish refineries sell much of their ore to
Zilargo. Most of the time, the [[gnome]]s pay for these
services with gold, jewels, or ships. But the gnomes
are also masters of intrigue, and throughout the war
the intelligence gathered by Zil spies was invaluable
to the Brelish war effort.

Today, Khorvaire is at peace. But the [[Trust]]
intends to be prepared for the next war long before
it occurs. The embassy of Zilargo is a labyrinth of
intrigue; almost everyone who works in the embassy
has a secret secondary role, from the ambassador to
the lowliest servant. A few of the more notable members of the embassy staff are described below, but it is always possible that there are other gnomes who
are equally skilled—or even more skilled—hidden
among the embassy staff. With the gnomes of Zilargo,
nothing can truly be trusted.

The embassy staff includes the following remarkable individuals:

* [[Tasho Mol Doras]]
* [[Doran Del Doras]]
* [[Madra Sil Sarin]]
* [[Cassia Lyrriman Dal]]
Along with [[Stonejaw Keep]], Znir is the heart of the
[[gnoll]] territories in [[Droaam]]. Although the permanent
population of the village is relatively small, thousands of gnolls gather here once a year to honor their ancestors and hear clan leaders renew the [[Znir Pact]].
The village features the remains of a colossal statue
of an [[archfiend|overlord]] the gnolls call "Yeenoghu", originally hundreds of
feet tall. Though the statue has fallen, some say that
a malevolent force lingers within its rubble, and
that other remnants of the [[Age of Demons]] might be
hidden here.
There have always been [[gnoll]] clans in the Barrens of [[Breland]] (what would eventually become [[Droaam]]), though the
[[Dhakaan]]i [[goblin|goblinoid]]s ruthlessly exterminated gnolls in imperial
territories, driving them back into the wilds. But their story starts
long before. In the dawn of time, during the [[Age of Demons]], [[Eberron]] was the domain of the [[fiend]]ish [[overlord]]s. This was an age of chaos, as the
overlords constantly clashed with one another. [[Rak Tulkhesh]],
the Rage of War, commanded armies of fiends, while the [[Wild Heart]] raised hordes of ravenous beasts. In the struggles between the two, the Wild Heart bred [[dire|dire beast]] hyenas with the ability to consume the immortal essences of the [[Zakya|rakshasa]] warriors of Rak
Tulkhesh. But the Wild Heart failed to anticipate how consuming
fiends would affect its creations. Twisted from within by the
immortal essence of the [[demon]]s they'd devoured, the hyenas
were warped into something entirely new, something that was
neither beast nor demon: and so the first gnolls were born.

Formed from both War and the Wild, [[gnoll]]s were recruited
and bred by both [[Rak Tulkhesh]] and the [[Wild Heart]]. As foot
soldiers of the overlords, they fought against [[orc]]s and other
early [[humanoid]]s, as well as battling the gnoll clans of other
overlords. Even after the overlords were defeated and bound
by the [[Silver Flame]], gnolls continued to be their pawns. The
fiendish spark burned within them, and when they weren't
directly serving the [[Lords of Dust]], most engaged in vicious acts
of brutality. The Rage of War seeks endless battle, and when
there is no greater conflict, it delights in setting its minions
against one another. For countless generations, gnolls fought
[[troll]], [[ogre]], and other gnolls seeking blood for their hungry idols.

Then, centuries ago, two gnolls from rival clans faced one
another on a battlefield soaked in the blood of their kin—then
questioned the path that had led them there. The two urged
others to deny the voice that called for endless war, to refuse
to chase death in the service of a [[fiend]]. Two became four, then
eight, until entire clans heeded the call. Clan leaders dragged
their idols to the place now known as [[Znir]]—a word that
simply means “stone”—and there, they shattered the images
of the fiends they once served. Together, the gathered hunters,
shamans, and warriors swore an oath: They might be many
clans, but from this day forward, they would be one pack.
They would allow no one—not chib (chieftain), god, or demon—to hold
dominion over them.

This was easier said than done. Fighting the fiendish
influence within was challenging enough, but the Barrens were
a chaotic tapestry of battling forces. The leaders of the newly
forged Znir Pact had no desire to rule over other creatures,
but even just holding territory could invite attack. And so they
developed the path that has carried them forward to this day:
the road of the mercenary. The gnolls would claim no territory
beyond the lands around Znir. They would fight for any who
would pay a fair price. But if anyone sought to enslave a gnoll,
or to strike against Znir itself, they would face the wrath of all
of the united clans. This was a lesson that had to be taught
many times, but after a century or so, the point was made.
To those who paid them, the gnolls were as reliable as stone.
Those who betrayed them or who picked a fight would fall
before the might of the full Pact. 

Some scholars of the [[Five Nations]] find it strange that
the Znir Pact never took the path of conquest. There
was no parallel to the united force of the Pact within
the region, and they could have defeated the various
chibs and warlords they served. But the [[gnoll]]s have
never had a desire to rule other creatures; they love
the hunt and the thrill of battle. The path of the Pact
allows them to do what comes naturally—to stalk and
kill, to fight endless battles—but they do so together.
They choose the paths they follow and the battles they
fight. One could look at the Pact and say that they serve
many masters. But the Znir gnoll would respond that
they serve only themselves: that they choose
who they fight for, they set the terms of their
service.

!! Znir Clans

The Znir [[gnoll]]s include a dozen different
clans, each of which holds distinct traditions.
Once the clans were devoted to different faces
of the [[overlord]]s, but when they shattered their
statues, each clan chose one of the moons. All
gnolls skillfully hunt and fight, but the Barrakas
are known to be the finest trackers of the Pact;
the Aryth, the deadliest archers; the Olarune,
the strongest warriors and most forceful in
the vanguard. Typically, mercenary units are
comprised of gnolls of a single clan, assigned based
on the nature of the task that lies ahead, and contracts
are usually negotiated for a period based on cycles of
the clan's moon.

The clans maintain distinct territories within the Znir
region, but all gnolls are welcome around the hearth of any
clan; the Znir take pains to crush any tension that arises
between the clans. Shamans and leaders from each clan
maintain a council at the Znir, around the broken idols. Here
they mediate disputes, assign contracts to clans, and allocate
funds and equipment. The Eyre clan has honed their skills as
smiths and tanners, and they craft much of the equipment used
by the Znir gnolls—though there is still a strong tradition of
scavenging among the Znir, and warriors often claim trophies
from fallen foes. 

!! The Demon Within

The Znir defied the [[overlord]]s when they shattered their
statues, but there's still a spark of a [[fiend]] in the blood of
each [[gnoll]]. Znir simply refuse to allow the [[demon]] within to
hold dominion over them. Young gnolls learn how to resist
this influence—to channel the strength of the fiend without
giving it power over them. For most gnolls, this is a matter
of discipline; Znir gnolls are known for remaining calm in
the face of provocation, and having learned to fight their own
demons, they aren't easily manipulated by mortals. However,
some gnolls learn to draw on their unnatural heritage and to
channel this power in useful ways. Znir gnolls have their own
equivalents of rangers and barbarians; the ranger's primal
magic draws on the [[Wild Heart]], while the barbarian channels
the fury of the [[Rage of War|Rak Tulkhesh]]. Znir shamans are similar to
[[warlock]]s, typically following the path of the Fiend. However,
in all of these examples, the Znir don't serve the dark power.
Rather, they can be seen as stealing their strength from it;
learning to draw on it without giving anything in return.

In their determination not to let fiendish forces hold
dominion over their people, the Znir gnolls have also developed
their own techniques for fighting supernatural threats.
Champions trained to face [[fiend]]s and [[undead]] are known as //hwyri//—Gnoll for “warden”—and wield powers similar to
those of //paladin//s in other lands. However, hwyri don't worship
any divine power. Their abilities come from training and
understanding of the demon within; they aren't crusaders,
they're mercenary demon hunters. Most hwyri come from the
Vult clan, and in a land that shuns the [[Silver Flame]], these
gnolls can be the best hope for people facing fiendish threats.
There has been some tension between the Vult and the
[[lycanthrope]]s of the [[Dark Pack]]; the Vult shamans suspect that
the Pack is vulnerable to the influence of the [[Wild Heart]].

So as a gnoll, there is a spark of demonic influence within
you. The Znir learn to control this at an early age. But how
does it manifest in you? Do you suppress it completely, or do
you channel it in some way—possibly reflected by your class
abilities? Are you a hwyri who seeks to fight supernatural
threats, or are you not concerned with such things?

!! Gnoll vs. Gnoll

[[Droaam]] is a small place, and the Znir serve any who will pay a
fair price. This inevitably leads to conflict between Znir gnolls
fighting for two opposing sides. In such situations, Znir fight
one another with all their skill, but they strike to wound, not
kill. A gnoll wounded by another gnoll immediately withdraws
from battle, no matter how superficial the wound. While some
clients take umbrage at this—“You can still fight! Get back out
there!”—this is an absolute rule of all Znir contracts, and gnolls
who defy this are punished by the united clans.

!! Mercenary Service

While [[Droaam]] has risen around them, the Znir Pact
continues as it always has. They don't work for shelter and
[[grist]], and expect to be paid for their service. This is perfectly
acceptable to the [[Daughters of Sora Kell]], who have placed a
full half of the Pact forces on extended retainer. Most large
communities have a Znir garrison employed by the Daughters.
These troops are present to protect the region from brigands
or invaders, and to help maintain order. But they serve the
Daughters, not the local chib; it's understood that if the chib
or their warlord turns against the Daughters, the local Znir
will act against them. The remainder of the Pact serves other
masters, and many warlords of chibs employ Znir gnolls as
bodyguards, enforcers, or hunters.

The Znir take their contracts seriously. If the client breaks
the terms of the agreement, the contract immediately ends;
but as long as terms are met, Znir will face any danger and
never betray a client. They have earned this reputation over the
course of centuries, and this gives them a place much like the
[[Sentinel Marshals]] of House [[Deneith]] in [[Khorvaire]]; everyone
knows that the word of the Znir is as unbreakable as stone.
House [[Tharashk]] has begun brokering the services of
Znir gnolls within the [[Five Nations]], but the Pact leaders
are cautious about this arrangement. Within [[Droaam]], Znir
customs are known and respected, and the Znir can unite
against anyone who defies them. The Znir recognize that they
don't hold such power over the rulers of the Five Nations,
and are concerned about serving so far from their stones.
In addition to those who serve through House Tharashk or
[[Daask]], a number of Znir have been sent east to study the Five
Nations, gathering knowledge of its people and customs so
the Znir council can determine how to engage with the wider
world. This scouting role is a reasonable path for a gnoll player
character; it's their job to travel the world beyond and learn its
ways, and to make friends and allies.
Hidden high in the [[Seawall Mountains]], Zolanberg lies
at the heart of a network of jewel mines. These mines
face attacks by [[kobold]]s living in the mountains, as well
as [[goblin]] raiders from [[Darguun]]. [[Gnomes|gnome]] and [[dwarves|dwarf]]
inhabit the city. House [[Kundarak]] maintains a great vault
here. House [[Tharashk]] has
long sought prospecting rights along the Seawalls, but
the gnomes have fiercely refused.
From somewhere in the darkness, a gurgling moan is heard. A form lurches into view, dragging one foot as it raises bloated arms and broken hands. The zombie advances, driven to kill anyone too slow to escape its grasp.

//''Dark Servants. ''//Sinister [[necromantic|necromancy]] magic infuses the remains of the dead, causing them to rise as zombies that do their creator's bidding without fear or hesitation. They move with a jerky, uneven gait, clad in the moldering apparel they wore when put to rest, and carrying the stench of decay.

Most zombies are made from [[humanoid]] remains, though the flesh and bones of any formerly living creature can be imbued with a semblance of life. Necromantic magic, usually from [[spell]]s, animates a zombie. Some zombies rise spontaneously when dark magic saturates an area. Once turned into a zombie, a creature can't be restored to life except by powerful magic, such as a [[resurrection]] spell.

A zombie retains no vestiges of its former self, its mind devoid of thought and imagination. A zombie left without orders simply stands in place and rots unless something comes along that it can kill. The magic animating a zombie imbues it with evil, so left without purpose, it attacks any living creature it encounters.

//''Hideous Forms.''// Zombies appear as they did in life, showing the wounds that killed them. However, the magic that creates these vile creatures often takes time to run its course. Dead warriors might rise from a battlefield, eviscerated and bloated after days in the sun. The muddy cadaver of a peasant could claw its way from the ground, riddled with maggots and worms. A zombie might wash ashore or rise from a marsh, swollen and reeking after weeks in the water.

//''Mindless Soldiers.''// Zombies take the most direct route to any foe, unable to comprehend obstacles, tactics, or dangerous terrain. A zombie might stumble into a fast-flowing river to reach foes on a far shore, clawing at the surface as it is battered against rocks and destroyed. To reach a foe below it, a zombie might step out of an open window. Zombies stumble through roaring infernos, into pools of acid, and across fields littered with caltrops without hesitation.

A zombie can follow simple orders and distinguish friends from foes, but its ability to reason is limited to shambling in whatever direction it is pointed, pummeling any enemy in its path. A zombie armed with a weapon uses it, but the zombie won't retrieve a dropped weapon or other tool until told to do so.
You create a magical zone that guards against deception in a 15-foot-radius sphere centered on a point of your choice within 60 feet. Until the spell ends up to 10 minutes later, a creature that can't resist the enchantment can't speak a deliberate lie while in the spell's area. You know whether each creature succeeds or fails in resisting the spell.

An affected creature is aware of the spell and can thus avoid answering questions to which it would normally respond with a lie. Such a creature can be evasive in its answers as long as it remains within the boundaries of the truth.
Lord Zoratesh is the commander and high minister of the [[Harmonious Shield]], and coordinates the movements of its divisions. While unified in spirit with the other [[quori]] in their task to prevent the turn of the age in [[Dal Quor]], Zoratesh questions the methods of the [[Devourer of Dreams]]. He has no patience
for the slow manipulation of the [[Dreaming Dark]], and
he wants to launch an invasion of [[Khorvaire]]. In such a scenario, psionic teleportation circles would be used to launch
sudden and decisive strikes against the capitals of [[Khorvaire]], seeking to eliminate nobles, [[dragonmarked|dragonmarked house]] barons,
and other threats. Both the [[Devourer|Devourer of Dreams]] and [[Sharadhuna]]
believe that this event would be disastrous, providing a
common enemy to unite the people of [[Khorvaire]], destabilizing [[Riedra]], and risking the ire of the [[dragon]]s, the [[Lords of Dust]], and other conspiracies currently watching from
the shadows. Zoratesh currently lacks the support required
to pursue war, but if an [[Inspired]] invasion of Khorvaire
were to happen, Zoratesh would be the one to lead it.

''Getting the PCs Involved:'' A war between [[Khorvaire]] and [[Riedra]] would be a devastating conflict, with the widespread magic of Khorvaire
and the [[dragonmarked house]]s matched against the devastating [[psionic|psionics]] power of the [[Inspired]] and their willingness
to sacrifice their fanatical troops. Even if the Riedrans
won the conflict, the Khorvairians wouldn't accept defeat
easily. The unity of Riedra succeeds because the people
believe that the Inspired are saviors, not conquerors.
However, a band of adventurers struggling to raise a
resistance movement in the wake of a Riedran conquest
can form the basis for an interesting campaign, whether
it's set in Khorvaire, [[Syrkarn]], or the [[Tashana Tundra]].
From House [[Cannith]]’s [[enclave|Korth Enclave]] in
[[Karrnath]], Zorlan schemes against both [[Merrix|Merrix d'Cannith]] and
[[Jorlanna|Jorlanna d'Cannith]].  Zorlan’s mother was [[Starrin d'Cannith]]’s cousin, and
when he was young, Zorlan was one of Starrin’s chief
financial advisors. But he is as dry and calculating
as the ledgers he pores over, say his enemies. Others
decry his worship of the [[Blood of Vol]]; although the
faith is common in Karrnath, it is less so within the
ranks of House [[Cannith]]. Zorlan finds inspiration
in the teachings of the Blood of Vol, however, and
many of the best minds in the house are working on
developing the [[necromantic|necromancy]] creations that Zorlan first
conceived.